]> git.ipfire.org Git - thirdparty/bash.git/commitdiff
fix for invalid brace sequence expressions; cosmetic fix to help builtin; documentati...
authorChet Ramey <chet.ramey@case.edu>
Mon, 24 Mar 2025 21:07:43 +0000 (17:07 -0400)
committerChet Ramey <chet.ramey@case.edu>
Mon, 24 Mar 2025 21:07:43 +0000 (17:07 -0400)
47 files changed:
CHANGES
CHANGES-5.3
CWRU/CWRU.chlog
Makefile.in
NEWS
NEWS-5.3
aclocal.m4
arrayfunc.c
braces.c
builtins/exec.def
builtins/help.def
builtins/history.def
builtins/printf.def
builtins/shopt.def
builtins/ulimit.def
configure
configure.ac
doc/bash.1
doc/bashref.texi
eval.c
examples/loadables/chmod.c
examples/loadables/strptime.c
execute_cmd.c
expr.c
externs.h
include/gettext.h
include/posixtime.h
jobs.c
lib/readline/complete.c
lib/readline/display.c
lib/readline/histfile.c
lib/readline/rlmbutil.h
lib/readline/rlprivate.h
lib/readline/signals.c
lib/sh/strftime.c
lib/termcap/termcap.c
lib/termcap/tparam.c
m4/codeset.m4
parse.y
patchlevel.h
po/pt.gmo
po/pt.po
print_cmd.c
redir.c
tests/RUN-ONE-TEST
tests/RUN-TEST-SCRIPT
version.c

diff --git a/CHANGES b/CHANGES
index 6b742da2232d2ffbd24f1248d2f4213dd9ebfdde..a264b4d2c08ebb224d0d197af9ce8287db9a4ebb 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,68 @@
+This document details the changes between this version, bash-5.3-rc1, and
+the previous version, bash-5.3-beta.
+
+1. Changes to Bash
+
+a. Fixed a bug where backslash did not quote multibyte characters in some
+   cases.
+
+b. Requesting the length of an element of an unset array is a fatal error
+   when `set -u' is enabled and the subscript is not `@' or `*'.
+
+c. Prompt expansion now quotes the results of \U.
+
+d. Changes to `set -e' exit behavior in posix mode, since POSIX now says to
+   exit as if executing the `exit builtin with no arguments'.
+
+e. Fixes to the `exec' builtin to undo redirections if it is given a command
+   name to execute and the exection fails, but the shell does not exit. This
+   is POSIX interp 1896.
+
+f. Fixed a bug that resulted in `wait' setting $? to 255 in some cases when
+   waiting for a specific PID.
+
+g. Fixed a bug involving redirections to the file descriptor bash is using to
+   read a script.
+
+h. In POSIX mode, `kill' returns a failure status if any of the PID/job
+   arguments are not found or if sending the signal fails.
+
+i. Fixed a bug that caused an invalid brace sequence expression to mess up
+   expansion of an enclosing brace expansion.
+
+j. Fixed a bug in command printing that output the wrong default file
+   descriptor for the <> redirection.
+
+k. User-specified subshells (`(...)') now update BASH_COMMAND in the subshell.
+
+l. Fixed a bug with the `help -m' and loadable builtins.
+
+m. Fixed a potential file descriptor leak when trying to use a pipe for a
+   here document.
+
+2. Changes to Readline
+
+a. Fixed a bug that allowed a history search to change the current history
+   list position.
+
+b. Fixed a bug that allowed ^G to retain a saved command to execute.
+
+c. Updates to new export-completions command to allow filename suffixes.
+
+d. Fixed a redisplay bug with prompts containing multiple sequences of
+   invisible characters that are longer than the screen width.
+
+3. New Features in Bash
+
+a. There is a new `fltexpr' builtin to perform floating-point arithmetic
+   similarly to `let'.
+
+4. New Features in Readline
+
+a. Readline can reset its idea of the screen dimensions when executing after
+   a SIGCONT.
+
+------------------------------------------------------------------------------
 This document details the changes between this version, bash-5.3-beta, and
 the previous version, bash-5.3-alpha.
 
index 806be742cb156fb31fa940a4f7ed5a8fa8692e21..c34dfb8a90ee84bcc64160e1197ff8c60d5a7754 100644 (file)
@@ -1,3 +1,68 @@
+This document details the changes between this version, bash-5.3-rc1, and
+the previous version, bash-5.3-beta.
+
+1. Changes to Bash
+
+a. Fixed a bug where backslash did not quote multibyte characters in some
+   cases.
+
+b. Requesting the length of an element of an unset array is a fatal error
+   when `set -u' is enabled and the subscript is not `@' or `*'.
+
+c. Prompt expansion now quotes the results of \U.
+
+d. Changes to `set -e' exit behavior in posix mode, since POSIX now says to
+   exit as if executing the `exit builtin with no arguments'.
+
+e. Fixes to the `exec' builtin to undo redirections if it is given a command
+   name to execute and the exection fails, but the shell does not exit. This
+   is POSIX interp 1896.
+
+f. Fixed a bug that resulted in `wait' setting $? to 255 in some cases when
+   waiting for a specific PID.
+
+g. Fixed a bug involving redirections to the file descriptor bash is using to
+   read a script.
+
+h. In POSIX mode, `kill' returns a failure status if any of the PID/job
+   arguments are not found or if sending the signal fails.
+
+i. Fixed a bug that caused an invalid brace sequence expression to mess up
+   expansion of an enclosing brace expansion.
+
+j. Fixed a bug in command printing that output the wrong default file
+   descriptor for the <> redirection.
+
+k. User-specified subshells (`(...)') now update BASH_COMMAND in the subshell.
+
+l. Fixed a bug with the `help -m' and loadable builtins.
+
+m. Fixed a potential file descriptor leak when trying to use a pipe for a
+   here document.
+
+2. Changes to Readline
+
+a. Fixed a bug that allowed a history search to change the current history
+   list position.
+
+b. Fixed a bug that allowed ^G to retain a saved command to execute.
+
+c. Updates to new export-completions command to allow filename suffixes.
+
+d. Fixed a redisplay bug with prompts containing multiple sequences of
+   invisible characters that are longer than the screen width.
+
+3. New Features in Bash
+
+a. There is a new `fltexpr' builtin to perform floating-point arithmetic
+   similarly to `let'.
+
+4. New Features in Readline
+
+a. Readline can reset its idea of the screen dimensions when executing after
+   a SIGCONT.
+
+------------------------------------------------------------------------------
 This document details the changes between this version, bash-5.3-beta, and
 the previous version, bash-5.3-alpha.
 
index e0c7aa5fcd6f63f06b8fd0a2c9e50aa92daeab53..9a15f86ba216fcdbe23654cd96bf669ac5cc379f 100644 (file)
@@ -11046,3 +11046,37 @@ redir.c
 
 builtins/ulimit.def
        - pipesize: use pathconf and _PC_PIPE_BUF if available
+
+                                   3/8
+                                   ---
+braces.c
+       - brace_expand: make sure to call valid_seqterm with the right length
+         so that text[tlen] == '}'
+
+                                  3/10
+                                  ----
+builtins/help.def
+       - show_manpage: if the first line of long_doc doesn't contain a
+         newline, e.g., if it's a loadable builtin, add one so there's the
+         usual space between NAME and SYNOPSIS
+
+m4/codeset.m4
+       - define HAVE_NL_LANGINFO
+
+lib/sh/strftime.c
+       - updates for locale-awareness
+
+                                  3/14
+                                  ----
+lib/termcap/termcap.c,lib/termcap/tparam.c
+       - updates for ISO C
+
+                                  3/17
+                                  ----
+configure.ac
+       - update release to rc1, update CHANGES and NEWS
+
+                                  3/19
+                                  ----
+lib/readline/rlmbutil.h
+       - _rl_wcwidth: make sure wchar_t constants have an `L' prefix
index 14af3298e58cdbb4654bfb23d40460984be6f912..3e8e86586f422a50e7ba2797820f23027438c2c6 100644 (file)
@@ -1,6 +1,6 @@
 # Makefile for bash-5.3, version 5.8
 #
-# Copyright (C) 1996-2024 Free Software Foundation, Inc.
+# Copyright (C) 1996-2025 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/NEWS b/NEWS
index 41aecda29dd9b21a864df582ce87984a9d02c76b..84b11c8dd7b707971e56e039e1e5d9841b6620ec 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -143,6 +143,9 @@ uu. If `exit' is run in a trap and not supplied an exit status argument, it
     `top level' and would cause the trap to end (that is, not in a subshell).
     This is from Posix interp 1602.
 
+vv. There is a new `fltexpr' builtin to perform floating-point arithmetic
+    similarly to `let'.
+
 2. New Features in Readline
 
 a. Output a newline if there is no prompt and readline reads an empty line.
@@ -190,6 +193,9 @@ m. The default value for `readline-colored-completion-prefix' no longer has a
 n. There is a new bindable command, `export-completions', which writes the
    possible completions for a word to the standard output in a defined format.
 
+o. Readline can reset its idea of the screen dimensions when executing after
+   a SIGCONT.
+
 -------------------------------------------------------------------------------
 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
index f143571fed7a0e8d948661b2fefc46a6a8742a9a..c9239a0f885f75c7821ee8fa6acdfdd3d3834017 100644 (file)
--- a/NEWS-5.3
+++ b/NEWS-5.3
@@ -143,6 +143,9 @@ uu. If `exit' is run in a trap and not supplied an exit status argument, it
     `top level' and would cause the trap to end (that is, not in a subshell).
     This is from Posix interp 1602.
 
+vv. There is a new `fltexpr' builtin to perform floating-point arithmetic
+    similarly to `let'.
+
 2. New Features in Readline
 
 a. Output a newline if there is no prompt and readline reads an empty line.
@@ -189,3 +192,6 @@ m. The default value for `readline-colored-completion-prefix' no longer has a
 
 n. There is a new bindable command, `export-completions', which writes the
    possible completions for a word to the standard output in a defined format.
+
+o. Readline can reset its idea of the screen dimensions when executing after
+   a SIGCONT.
index 7253f2c4228e6ee3439bcdc9815d4f4752c3c5dc..bd598666c88fe465e74b94751f20d0c1acdf4f7a 100644 (file)
@@ -3,7 +3,7 @@ dnl Bash specific tests
 dnl
 dnl Some derived from PDKSH 5.1.3 autoconf tests
 dnl
-dnl Copyright (C) 1987-2024 Free Software Foundation, Inc.
+dnl Copyright (C) 1987-2025 Free Software Foundation, Inc.
 dnl
 
 dnl
index a553748887cb86443d1dbb1bcd9ab4f48bd0b0d8..715460d59904e234651301a051554106b9cd5b14 100644 (file)
@@ -1,6 +1,6 @@
 /* arrayfunc.c -- High-level array functions used by other parts of the shell. */
 
-/* Copyright (C) 2001-2024 Free Software Foundation, Inc.
+/* Copyright (C) 2001-2025 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
index 2221e38d19b187ef50ca35fd0f4f6235bc368417..49bd770e62d8bed1b2dd55bca78458860c407e2f 100644 (file)
--- a/braces.c
+++ b/braces.c
@@ -1,6 +1,6 @@
 /* braces.c -- code for doing word expansion in curly braces. */
 
-/* Copyright (C) 1987-2020,2022-2024 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2020,2022-2025 Free Software Foundation, Inc.
 `
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -137,7 +137,7 @@ brace_expand (char *text)
             terms here. If the sequence expression is invalid, we just skip
             over the open brace and go on, leaving other brace expressions in
             the candidate sequence expression to be expanded. */
-         if (etype == BRACE_SEQ && valid_seqterm (text + start, j - 1) == 0)
+         if (etype == BRACE_SEQ && valid_seqterm (text + start, j - start) == 0)
            c = 0;
 #endif
 
@@ -483,7 +483,7 @@ valid_seqterm (char *text, size_t tlen)
   int lhs_t, rhs_t;
   int c;
 
-  c = text[tlen];
+  c = text[tlen];      /* XXX - text[tlen] == RBRACE */
   text[tlen] = '\0';   /* don't be tricked by something later in the string */
   t = strstr (text, BRACE_SEQ_SPECIFIER);
   text[tlen] = c;
index 2582add77f3c121203ebf13c6e92b504a3666c7f..285f9ddfea992e43fdd6e546faeeef064f58a978 100644 (file)
@@ -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-2021,2022,2024 Free Software Foundation, Inc.
+Copyright (C) 1987-2021,2022,2024,2025 Free Software Foundation, Inc.
 
 This file is part of GNU Bash, the Bourne Again SHell.
 
index eb6f140ac6d9672dc0601bd870b287fdb3b3555a..e7e9789d84e627110d511d9953227499872efbd8 100644 (file)
@@ -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-2024 Free Software Foundation, Inc.
+Copyright (C) 1987-2025 Free Software Foundation, Inc.
 
 This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -321,6 +321,10 @@ show_manpage (char *name, int i)
       if (line[j] == '\n')
        break;
     }
+  /* If the line doesn't end with a newline, e.g., if it's a loadable builtin,
+     add one. */
+  if (line[j] != '\n')
+    putchar ('\n');
   printf ("\n");
 
   /* SYNOPSIS */
index f0a996c9e767f600b05175e3f07fc9148f510852..fa79c0b937f75424e504a63ad685c9205b7ebdcb 100644 (file)
@@ -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-2024 Free Software Foundation, Inc.
+Copyright (C) 1987-2025 Free Software Foundation, Inc.
 
 This file is part of GNU Bash, the Bourne Again SHell.
 
index 5321b57c781971f75f4f8413e9943a2fdbb18d82..7d7f8c26688ed9fba844b93971f325e14dc24826 100644 (file)
@@ -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-2024 Free Software Foundation, Inc.
+Copyright (C) 1997-2025 Free Software Foundation, Inc.
 
 This file is part of GNU Bash, the Bourne Again SHell.
 
index fe429c01273737efabfff7a2ef74b51e6708ea55..cf6f6be1265249b8b6326dc186485c2465132305 100644 (file)
@@ -1,7 +1,7 @@
 This file is shopt.def, from which is created shopt.c.
 It implements the Bash `shopt' builtin.
 
-Copyright (C) 1994-2024 Free Software Foundation, Inc.
+Copyright (C) 1994-2025 Free Software Foundation, Inc.
 
 This file is part of GNU Bash, the Bourne Again SHell.
 
index 792045721c6a71d5fd91107aa1da09c113bf2c43..1251dfa6e87980c984e3c303c5991ff670c0dee3 100644 (file)
@@ -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-2024 Free Software Foundation, Inc.
+Copyright (C) 1987-2025 Free Software Foundation, Inc.
 
 This file is part of GNU Bash, the Bourne Again SHell.
 
index 51e0fa23bc00f8fb93802c75755e403997086d1b..c3707a85d669e1beba26cd57f4f07357b07d8efb 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,7 +1,7 @@
 #! /bin/sh
-# From configure.ac for Bash 5.3, version 5.075.
+# From configure.ac for Bash 5.3, version 5.076.
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.72 for bash 5.3-beta.
+# Generated by GNU Autoconf 2.72 for bash 5.3-rc1.
 #
 # Report bugs to <bug-bash@gnu.org>.
 #
@@ -605,8 +605,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='bash'
 PACKAGE_TARNAME='bash'
-PACKAGE_VERSION='5.3-beta'
-PACKAGE_STRING='bash 5.3-beta'
+PACKAGE_VERSION='5.3-rc1'
+PACKAGE_STRING='bash 5.3-rc1'
 PACKAGE_BUGREPORT='bug-bash@gnu.org'
 PACKAGE_URL=''
 
@@ -1465,7 +1465,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.3-beta to adapt to many kinds of systems.
+'configure' configures bash 5.3-rc1 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1531,7 +1531,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of bash 5.3-beta:";;
+     short | recursive ) echo "Configuration of bash 5.3-rc1:";;
    esac
   cat <<\_ACEOF
 
@@ -1739,7 +1739,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-bash configure 5.3-beta
+bash configure 5.3-rc1
 generated by GNU Autoconf 2.72
 
 Copyright (C) 2023 Free Software Foundation, Inc.
@@ -2417,7 +2417,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by bash $as_me 5.3-beta, which was
+It was created by bash $as_me 5.3-rc1, which was
 generated by GNU Autoconf 2.72.  Invocation command line was
 
   $ $0$ac_configure_args_raw
@@ -3216,7 +3216,7 @@ ac_config_headers="$ac_config_headers config.h buildconf.h"
 
 
 BASHVERS=5.3
-RELSTATUS=beta
+RELSTATUS=rc1
 
 case "$RELSTATUS" in
 alp*|bet*|dev*|rc*|releng*|maint*)     DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG' ;;
@@ -13467,6 +13467,8 @@ fi
 { 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
+    printf "%s\n" "#define HAVE_NL_LANGINFO 1" >>confdefs.h
+
 
 printf "%s\n" "#define HAVE_LANGINFO_CODESET 1" >>confdefs.h
 
@@ -23637,7 +23639,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by bash $as_me 5.3-beta, which was
+This file was extended by bash $as_me 5.3-rc1, which was
 generated by GNU Autoconf 2.72.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -23705,7 +23707,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config='$ac_cs_config_escaped'
 ac_cs_version="\\
-bash config.status 5.3-beta
+bash config.status 5.3-rc1
 configured by $0, generated by GNU Autoconf 2.72,
   with options \\"\$ac_cs_config\\"
 
index 49becb33f18f6d925b849e119399089969287c17..35639ed3d70d0ff6c668d1ecaa4960348514714b 100644 (file)
@@ -5,7 +5,7 @@ dnl report bugs to chet.ramey@case.edu
 dnl
 dnl Process this file with autoconf to produce a configure script.
 
-# Copyright (C) 1987-2024 Free Software Foundation, Inc.
+# Copyright (C) 1987-2025 Free Software Foundation, Inc.
 
 #
 #   This program is free software: you can redistribute it and/or modify
@@ -21,10 +21,10 @@ dnl Process this file with autoconf to produce a configure script.
 #   You should have received a copy of the GNU General Public License
 #   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-AC_REVISION([for Bash 5.3, version 5.075])dnl
+AC_REVISION([for Bash 5.3, version 5.076])dnl
 
 define(bashvers, 5.3)
-define(relstatus, beta)
+define(relstatus, rc1)
 
 AC_INIT([bash], bashvers-relstatus, [bug-bash@gnu.org])
 
index 5c8e36038e6683e1548bd01e1bb27030ec96d029..4e2eb5f1d71101a5748c35c3b4f6263cadf5fb48 100644 (file)
@@ -903,7 +903,7 @@ operators do not evaluate \fIexpression2\fP if the value of
 the entire conditional expression.
 .RE
 .TP
-\fBfor\fP \fIname\fP [ [ \fBin\fP [ \fIword .\|.\|.\&\fP ] ] ; ] \fBdo\fP \fIlist\fP ; \fBdone\fP
+\fBfor\fP \fIname\fP [ [ \fBin\fP \fIword .\|.\|.\&\fP ] ; ] \fBdo\fP \fIlist\fP ; \fBdone\fP
 First, expand The list of words following \fBin\fP, generating a list
 of items.
 Then, the variable \fIname\fP is set to each element of this list
@@ -917,7 +917,7 @@ The return status is the exit status of the last command that executes.
 If the expansion of the items following \fBin\fP results in an empty
 list, no commands are executed, and the return status is 0.
 .TP
-\fBfor\fP (( \fIexpr1\fP ; \fIexpr2\fP ; \fIexpr3\fP )) ; \fBdo\fP \fIlist\fP ; \fBdone\fP
+\fBfor\fP (( \fIexpr1\fP ; \fIexpr2\fP ; \fIexpr3\fP )) [;] \fBdo\fP \fIlist\fP ; \fBdone\fP
 First, evaluate the arithmetic expression \fIexpr1\fP according
 to the rules described below under
 .SM
@@ -3419,7 +3419,7 @@ For example, a\fB{\fPd,c,b\fB}\fPe expands into
 .Q "ade ace abe" .
 .PP
 A sequence expression takes the form
-\fB{\fP\fIx\fP\fB..\fP\fIy\fP\fB[..\fP\fIincr\fP\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 letters,
 and \fIincr\fP, an optional increment, is an integer.
 When integers are supplied, the expression expands to each number between
@@ -4897,7 +4897,7 @@ The format of here-documents is:
 .PP
 The shell does not perform
 parameter and variable expansion, command substitution,
-arithmetic expansion, or pathname expansion is performed on
+arithmetic expansion, or pathname expansion on
 .IR word .
 .PP
 If any part of
index f5e1ffc276b18bce9830a1fef2d7889d334393db..c0c6c6cab70659d028a3140d51533d91413a3685 100644 (file)
@@ -970,7 +970,7 @@ in @var{consequent-commands}, or zero if none was executed.
 The syntax of the @code{for} command is:
 
 @example
-for @var{name} [ [in [@var{words} @dots{}] ] ; ] do @var{commands}; done
+for @var{name} [ [in @var{words} @dots{}] ; ] do @var{commands}; done
 @end example
 
 Expand @var{words} (@pxref{Shell Expansions}), and then
@@ -985,10 +985,11 @@ The return status is the exit status of the last command that executes.
 If there are no items in the expansion of @var{words}, no commands are
 executed, and the return status is zero.
 
-An alternate form of the @code{for} command is also supported:
+There is an alternate form of the @code{for} command which is similar to the
+C language:
 
 @example
-for (( @var{expr1} ; @var{expr2} ; @var{expr3} )) ; do @var{commands} ; done
+for (( @var{expr1} ; @var{expr2} ; @var{expr3} )) [;] do @var{commands} ; done
 @end example
 
 First, evaluate the arithmetic expression @var{expr1} according
@@ -2069,7 +2070,7 @@ ade ace abe
 @end example
 
 A sequence expression takes the form
-@code{@{@var{x}..@var{y}[..@var{incr}]@}},
+@code{@var{x}..@var{y}[..@var{incr}]},
 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
diff --git a/eval.c b/eval.c
index 926aeee08356a1f5091d9111b4997893457b2e66..bbf5d88b49aabb3663da574a90fc6af248c51814 100644 (file)
--- a/eval.c
+++ b/eval.c
@@ -1,6 +1,6 @@
 /* eval.c -- reading and evaluating commands. */
 
-/* Copyright (C) 1996-2024 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2025 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
index dc7ca73aacd9cdd1aac7ee35995ad9223f02e225..2266d5658fe065f06ec2a4fa01044c552631e92b 100644 (file)
@@ -3,7 +3,7 @@
 /* See Makefile for compilation details. */
 
 /*
-   Copyright (C) 2024 Free Software Foundation, Inc.
+   Copyright (C) 2024-2025 Free Software Foundation, Inc.
 
    This file is part of GNU Bash.
    Bash is free software: you can redistribute it and/or modify
index 194ca47026ec2ffa0ae2f3af6f2cf686c60fc4ac..1857f9ed8bcce8d9fb16640cfc57d1b99ceed343 100644 (file)
@@ -3,7 +3,7 @@
 /* See Makefile for compilation details. */
 
 /*
-   Copyright (C) 2023 Free Software Foundation, Inc.
+   Copyright (C) 2023-2025 Free Software Foundation, Inc.
 
    This file is part of GNU Bash.
    Bash is free software: you can redistribute it and/or modify
@@ -87,16 +87,19 @@ static char * const date_time_formats[] =
   "%F %r",                     /* YYYY-mm-dd HH:MM:SS p.m. */
   "%F %R",                     /* YYYY-mm-dd HH:MM */
   "%F %I:%M %p",               /* YYYY-mm-dd HH:MM a.m. */
-  "%F",                                /* YYYY-mm-dd ISO8601 time */
-  "%T",                                /* HH:MM:SS */
-  "%H.%M.%S",                  /* HH.MM.SS */
   /* From coreutils-9.2 date */
   "%Y-%m-%dT%H:%M:%S%z",       /* ISO8601 time */
   "%Y-%m-%dT%H%z",             /* ISO8601 time */
   "%Y-%m-%dT%H:%M%z",          /* ISO8601 time */
+  "%Y-%m-%dT%H:%M:%S%Z",       /* ISO8601 time but with timezone name */
+  "%Y-%m-%dT%H%Z",             /* ISO8601 time but with timezone name */
+  "%Y-%m-%dT%H:%M%Z",          /* ISO8601 time but with timezone name */
   /* RFC 3339 time */
   "%Y-%m-%d %H:%M:%S%z",       /* RFC 3339 time */
-  "%Y-%m-%dT%H:%M:%S%z",       /* RFC 3339 time */
+  "%Y-%m-%d %H:%M:%S%Z",       /* RFC 3339 time but with timezone name */
+#if 0
+  "%Y-%m-%dT%H:%M:%S%z",       /* RFC 3339 time, same as first ISO8601 time */
+#endif
   /* more oddball formats */
   "%m.%d.%Y %T",               /* mm.dd.YYYY HH:MM:SS */
   "%m.%d.%Y %R",               /* mm.dd.YYYY HH:MM */
@@ -151,13 +154,28 @@ static char * const date_time_formats[] =
   "%d.%m.%Y %R",               /* dd.mm.YYYY HH:MM */
   "%d.%m.%Y %r",               /* dd.mm.YYYY HH:MM:SS a.m. */    
   "%d.%m.%Y %I:%M %p",         /* dd.mm.YYYY HH:MM p.m. */
+  /* Some fallbacks */
+  "%F",                                /* YYYY-mm-dd ISO8601 time */
+  "%T",                                /* HH:MM:SS */
+  "%H.%M.%S",                  /* HH.MM.SS */
   0
 };
 
 static void
 inittime (time_t *clock, struct tm *timeptr)
 {
-  timeptr = localtime (clock);         /* for now */
+  struct tm *loctime;
+
+  /* Initialize to local time */
+  loctime = localtime (clock);
+
+  if (loctime == 0)
+    {
+      timeptr->tm_hour = timeptr->tm_min = timeptr->tm_sec = 0;
+      return;
+    }
+
+  memcpy (timeptr, loctime, sizeof (struct tm));
 
   /* but default to midnight */
   timeptr->tm_hour = timeptr->tm_min = timeptr->tm_sec = 0;
@@ -171,17 +189,31 @@ strptime_builtin (WORD_LIST *list)
   char *s;
   struct tm t, *tm;
   time_t now, secs;
-  char *datestr;
-  int i;
+  char *datestr, *format;
+  int i, opt;
 
-  if (no_options (list))       /* for now */
-    return (EX_USAGE);
+  format = NULL;
+  reset_internal_getopt ();
+  while ((opt = internal_getopt (list, "f:")) != -1)
+    {
+      switch (opt)
+        {
+          case 'f':
+           format = list_optarg;
+           break;
+         CASE_HELPOPT;
+         default:
+           builtin_usage ();
+           return (EX_USAGE);
+        }
+    }
 
   list = loptend;
+
   if (list == 0)
     {
       builtin_usage ();
-     return (EX_USAGE);
+      return (EX_USAGE);
     }
 
   datestr = string_list (list);
@@ -195,26 +227,44 @@ strptime_builtin (WORD_LIST *list)
       if (STREQ (datestr, date_time_modifiers[i].shorthand))
        {
          secs = now + date_time_modifiers[i].incr;
-         break;
+         printf ("%ld\n", secs);    
+         return (EXECUTION_SUCCESS);
        }
     }
 
-  if (secs == -1)
+  /* init struct tm */
+  inittime (&now, &t);
+  if (format)
+    {
+      s = strptime (datestr, format, &t);
+      if (s == 0 || s == datestr)
+       {
+         builtin_error ("%s: unrecognized format", datestr);
+         return (EXECUTION_FAILURE);
+       }
+    }
+  else
     {
-      /* init struct tm */
-      inittime (&now, tm);
-      t = *tm;
       for (i = 0; date_time_formats[i]; i++)
-        {
+       {
          s = strptime (datestr, date_time_formats[i], &t);
-         if (s == 0)
+         if (s == 0 || s == datestr)
            continue;
-         /* skip extra characters at the end for now */
-         secs = mktime (&t);
          break;
         }
+      if (date_time_formats[i] == 0)
+       {
+         builtin_error ("%s: unrecognized format", datestr);
+         return (EXECUTION_FAILURE);
+
+       }
     }
 
+  /* Found something. */
+  secs = mktime (&t);
+  if (s && *s)
+    builtin_warning("%s: not completely converted (%s)", datestr, s);
+
   printf ("%ld\n", secs);    
   return (EXECUTION_SUCCESS);
 }
@@ -222,9 +272,12 @@ strptime_builtin (WORD_LIST *list)
 char *strptime_doc[] = {
        "Convert a date-time string to seconds since the epoch.",
        "",
-       "Take DATE-TIME, a date-time string, parse it against a set of common",
-       "date-time formats. If the string matches one of the formats, convert",
-       "it into seconds since the epoch and display the result.",
+       "Take DATE-TIME, a date-time string, and parse it using FORMAT, a",
+       "date and time format accepted by strptime(3). If FORMAT is not supplied,",
+       "attempt to parse DATE-TIME against a set of common date-time formats,",
+       "not all of which may be acceptable to strptime(3).",
+       "If the string matches one of the formats, convert it into seconds",
+       "since the epoch and display the result.",
        (char *)NULL
 };
 
@@ -236,6 +289,6 @@ struct builtin strptime_struct = {
        strptime_builtin,               /* function implementing the builtin */
        BUILTIN_ENABLED,        /* initial flags for builtin */
        strptime_doc,           /* array of long documentation strings. */
-       "strptime date-time",   /* usage synopsis; becomes short_doc */
+       "strptime [-f format] date-time",       /* usage synopsis; becomes short_doc */
        0                       /* reserved for internal use */
 };
index 6b2b20cf2577f0f1d975dc33a40b0788945666e8..7387e7303ca348af2097881f20cf30f47a934654 100644 (file)
@@ -1,6 +1,6 @@
 /* execute_cmd.c -- Execute a COMMAND structure. */
 
-/* Copyright (C) 1987-2024 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2025 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
diff --git a/expr.c b/expr.c
index d16caa44f82a1853fd8034fd41ec75419c0baf95..c1f2e33ea85549988e8ec65facd2e796a4db075d 100644 (file)
--- a/expr.c
+++ b/expr.c
@@ -1,6 +1,6 @@
 /* expr.c -- arithmetic expression evaluation. */
 
-/* Copyright (C) 1990-2024 Free Software Foundation, Inc.
+/* Copyright (C) 1990-2025 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
index da26090f5a7ea38970e6c431c1cc3788dfa4a3b2..47b80f6a2d963d9a9212bc3bbc7e37951e3812ef 100644 (file)
--- 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-2024 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2025 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
index 97a1f36d6cbd79795c30c6bd8f5a52ebfbc7c265..bf7d91d1d088a99777931841f878e046f0ac5efd 100644 (file)
@@ -1,5 +1,5 @@
 /* Convenience header for conditional use of GNU <libintl.h>.
-   Copyright (C) 1995-1998, 2000-2002, 2008,2009 Free Software Foundation, Inc.
+   Copyright (C) 1995-2025 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne-Again SHell.
 
index a731b006ad89d31ef8628f5e60f4d365ca056fda..692f6ea4a5f089f2d6de0401af8175da78b14196 100644 (file)
@@ -90,4 +90,12 @@ getnow(void)
   } while (0)
 #endif
 
+#ifndef TIMESPEC_TO_TIMEVAL
+#  define TIMESPEC_TO_TIMEVAL(tv, ts) \
+  do { \
+    (tv)->tv_sec = (ts)->tv_sec; \
+    (tv)->tv_usec = (tv)->tv_nsec / 1000; \
+  } while (0)
+#endif
+
 #endif /* _POSIXTIME_H_ */
diff --git a/jobs.c b/jobs.c
index b73f75afc244700e220938752edbc1392769eb4a..528c90f5b7ec9c5ea4b1a71ed070d29d5292053b 100644 (file)
--- 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-2024 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2025 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
index 79026de6f8c389bb577423be2f2ff1a8e0beefcf..9abdedef2ec97e7302c06f1d4331386da48e3b2e 100644 (file)
@@ -1,6 +1,6 @@
 /* complete.c -- filename completion for readline. */
 
-/* Copyright (C) 1987-2024 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2025 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.
index dcc5e806d07210c9e69513a7d4fc211dd0ad8fa7..021dc3fc7aa24136ac3a3b879db779ff722fd27a 100644 (file)
@@ -1,6 +1,6 @@
 /* display.c -- readline redisplay facility. */
 
-/* Copyright (C) 1987-2024 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2025 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.
index c73481dcf6e726426460fc3abaff4924b36e1a0a..9a259146f002afa871f208366bfef5aeb1d4b305 100644 (file)
@@ -1,6 +1,6 @@
 /* histfile.c - functions to manipulate the history file. */
 
-/* Copyright (C) 1989-2019,2023-2024 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2019,2023-2025 Free Software Foundation, Inc.
 
    This file contains the GNU History Library (History), a set of
    routines for managing the text of previously typed lines.
index 9eefa889c51b6ce2cff399e6950f43df61ba6abe..607a262c9d7c1eec9f8c87746f37b58446fd1011 100644 (file)
@@ -148,26 +148,26 @@ _rl_wcwidth (WCHAR_T wc)
 {
   switch (wc)
     {
-    case ' ': case '!': case '"': case '#': case '%':
-    case '&': case '\'': case '(': case ')': case '*':
-    case '+': case ',': case '-': case '.': case '/':
-    case '0': case '1': case '2': case '3': case '4':
-    case '5': case '6': case '7': case '8': case '9':
-    case ':': case ';': case '<': case '=': case '>':
-    case '?':
-    case 'A': case 'B': case 'C': case 'D': case 'E':
-    case 'F': case 'G': case 'H': case 'I': case 'J':
-    case 'K': case 'L': case 'M': case 'N': case 'O':
-    case 'P': case 'Q': case 'R': case 'S': case 'T':
-    case 'U': case 'V': case 'W': case 'X': case 'Y':
-    case 'Z':
-    case '[': case '\\': case ']': case '^': case '_':
-    case 'a': case 'b': case 'c': case 'd': case 'e':
-    case 'f': case 'g': case 'h': case 'i': case 'j':
-    case 'k': case 'l': case 'm': case 'n': case 'o':
-    case 'p': case 'q': case 'r': case 's': case 't':
-    case 'u': case 'v': case 'w': case 'x': case 'y':
-    case 'z': case '{': case '|': case '}': case '~':
+    case L' ': case L'!': case L'"': case L'#': case L'%':
+    case L'&': case L'\'': case L'(': case L')': case L'*':
+    case L'+': case L',': case L'-': case L'.': case L'/':
+    case L'0': case L'1': case L'2': case L'3': case L'4':
+    case L'5': case L'6': case L'7': case L'8': case L'9':
+    case L':': case L';': case L'<': case L'=': case L'>':
+    case L'?':
+    case L'A': case L'B': case L'C': case L'D': case L'E':
+    case L'F': case L'G': case L'H': case L'I': case L'J':
+    case L'K': case L'L': case L'M': case L'N': case L'O':
+    case L'P': case L'Q': case L'R': case L'S': case L'T':
+    case L'U': case L'V': case L'W': case L'X': case L'Y':
+    case L'Z':
+    case L'[': case L'\\': case L']': case L'^': case L'_':
+    case L'a': case L'b': case L'c': case L'd': case L'e':
+    case L'f': case L'g': case L'h': case L'i': case L'j':
+    case L'k': case L'l': case L'm': case L'n': case L'o':
+    case L'p': case L'q': case L'r': case L's': case L't':
+    case L'u': case L'v': case L'w': case L'x': case L'y':
+    case L'z': case L'{': case L'|': case L'}': case L'~':
       return 1;
     default:
       return wcwidth (wc);
index ac1de28c77e3abec7f0860774b55008ffe745dc6..eb0495f9be5914129233da2988142283eb0bfbda 100644 (file)
@@ -1,7 +1,7 @@
 /* rlprivate.h -- functions and variables global to the readline library,
                  but not intended for use by applications. */
 
-/* Copyright (C) 1999-2024 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2025 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.
index 8c4f3fad20380b23ba75419d5ebff0157692466d..5a070d774614483b5ef0f602929ee76e3eb3d7ef 100644 (file)
@@ -1,6 +1,6 @@
 /* signals.c -- signal handling support for readline. */
 
-/* Copyright (C) 1987-2024 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2025 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.      
index 60bee79f723e0a4d2a88414562144f9dd549f4f7..c0d873b8c01ec7c32420c5085e7484186f0b5321 100644 (file)
  * For VMS dates, add VMS_EXT.
  * For complete POSIX semantics, add POSIX_SEMANTICS.
  *
- * The code for %c, %x, and %X follows the C99 specification for
+ * The code for %X follows the C99 specification for
  * the "C" locale.
  *
- * This version ignores LOCALE information.
- * It also doesn't worry about multi-byte characters.
+ * The code for %c, and %x follows the C11 specification for
+ * the "C" locale.
+ *
+ * With HAVE_NL_LANGINFO defined, locale-based values are used.
+ *
+ * This version doesn't worry about multi-byte characters.
  * So there.
  *
  * Arnold Robbins
@@ -39,6 +43,8 @@
  * Updated December, 2001
  * Updated January, 2011
  * Updated April, 2012
+ * Updated March, 2015
+ * Updated June, 2015
  *
  * Fixes from ado@elsie.nci.nih.gov,
  * February 1991, May 1992
 
 #include <sys/types.h>
 
+#if defined(TM_IN_SYS_TIME)
+#include <sys/time.h>
+#endif
+
 #include <stdio.h>
 #include <ctype.h>
 #include <posixtime.h>
 extern int errno;
 #endif
 
+#ifdef HAVE_NL_LANGINFO
+#include <langinfo.h>
+#endif
+
 #if defined (SHELL)
 extern char *get_string_value (const char *);
 #endif
@@ -165,6 +179,146 @@ iso_8601_2000_year(char *buf, int year, size_t fw)
 }
 #endif /* POSIX_2008 */
 
+/* days_a --- return the short name for the day of the week */
+
+static const char *
+days_a(int index)
+{
+#ifdef HAVE_NL_LANGINFO
+       static const nl_item data[] = {
+               ABDAY_1,
+               ABDAY_2,
+               ABDAY_3,
+               ABDAY_4,
+               ABDAY_5,
+               ABDAY_6,
+               ABDAY_7,
+       };
+
+       return nl_langinfo(data[index]);
+#else
+       static const char *data[] = {
+               "Sun", "Mon", "Tue", "Wed",
+               "Thu", "Fri", "Sat",
+       };
+
+       return data[index];
+#endif
+}
+
+/* days_l --- return the long name for the day of the week */
+
+static const char *
+days_l(int index)
+{
+#ifdef HAVE_NL_LANGINFO
+       static const nl_item data[] = {
+               DAY_1,
+               DAY_2,
+               DAY_3,
+               DAY_4,
+               DAY_5,
+               DAY_6,
+               DAY_7,
+       };
+
+       return nl_langinfo(data[index]);
+#else
+       static const char *data[] = {
+               "Sunday", "Monday", "Tuesday", "Wednesday",
+               "Thursday", "Friday", "Saturday",
+       };
+
+       return data[index];
+#endif
+}
+
+/* months_a --- return the short name for the month */
+
+static const char *
+months_a(int index)
+{
+#ifdef HAVE_NL_LANGINFO
+       static const nl_item data[] = {
+               ABMON_1,
+               ABMON_2,
+               ABMON_3,
+               ABMON_4,
+               ABMON_5,
+               ABMON_6,
+               ABMON_7,
+               ABMON_8,
+               ABMON_9,
+               ABMON_10,
+               ABMON_11,
+               ABMON_12,
+       };
+
+       return nl_langinfo(data[index]);
+#else
+       static const char *data[] = {
+               "Jan", "Feb", "Mar", "Apr", "May", "Jun",
+               "Jul", "Aug", "Sep", "Oct", "Nov", "Dec",
+       };
+
+       return data[index];
+#endif
+}
+
+/* months_l --- return the short name for the month */
+
+static const char *
+months_l(int index)
+{
+#ifdef HAVE_NL_LANGINFO
+       static const nl_item data[] = {
+               MON_1,
+               MON_2,
+               MON_3,
+               MON_4,
+               MON_5,
+               MON_6,
+               MON_7,
+               MON_8,
+               MON_9,
+               MON_10,
+               MON_11,
+               MON_12,
+       };
+
+       return nl_langinfo(data[index]);
+#else
+       static const char *data[] = {
+               "January", "February", "March", "April",
+               "May", "June", "July", "August", "September",
+               "October", "November", "December",
+       };
+
+       return data[index];
+#endif
+}
+
+/* days_a --- return am/pm string */
+
+static const char *
+ampm(int index)
+{
+#ifdef HAVE_NL_LANGINFO
+       static const nl_item data[] = {
+               AM_STR,
+               PM_STR,
+       };
+
+       return nl_langinfo(data[index]);
+#else
+       static const char *data[] = {
+               "AM", "PM",
+       };
+
+       return data[index];
+#endif
+}
+
 /* strftime --- produce formatted time */
 
 size_t
@@ -199,27 +353,6 @@ strftime(char *s, size_t maxsize, const char *format, const struct tm *timeptr)
        char flag;
 #endif /* POSIX_2008 */
 
-       /* various tables, useful in North America */
-       static const char *days_a[] = {
-               "Sun", "Mon", "Tue", "Wed",
-               "Thu", "Fri", "Sat",
-       };
-       static const char *days_l[] = {
-               "Sunday", "Monday", "Tuesday", "Wednesday",
-               "Thursday", "Friday", "Saturday",
-       };
-       static const char *months_a[] = {
-               "Jan", "Feb", "Mar", "Apr", "May", "Jun",
-               "Jul", "Aug", "Sep", "Oct", "Nov", "Dec",
-       };
-       static const char *months_l[] = {
-               "January", "February", "March", "April",
-               "May", "June", "July", "August", "September",
-               "October", "November", "December",
-       };
-       static const char *ampm[] = { "AM", "PM", };
-
-       oerrno = errno;
 
        if (s == NULL || format == NULL || timeptr == NULL || maxsize == 0)
                return 0;
@@ -228,6 +361,8 @@ strftime(char *s, size_t maxsize, const char *format, const struct tm *timeptr)
        if (strchr(format, '%') == NULL && strlen(format) + 1 >= maxsize)
                return 0;
 
+       oerrno = errno;
+
 #ifndef POSIX_SEMANTICS
        if (first) {
                tzset();
@@ -321,14 +456,14 @@ strftime(char *s, size_t maxsize, const char *format, const struct tm *timeptr)
                        if (timeptr->tm_wday < 0 || timeptr->tm_wday > 6)
                                strcpy(tbuf, "?");
                        else
-                               strcpy(tbuf, days_a[timeptr->tm_wday]);
+                               strcpy(tbuf, days_a(timeptr->tm_wday));
                        break;
 
                case 'A':       /* full weekday name */
                        if (timeptr->tm_wday < 0 || timeptr->tm_wday > 6)
                                strcpy(tbuf, "?");
                        else
-                               strcpy(tbuf, days_l[timeptr->tm_wday]);
+                               strcpy(tbuf, days_l(timeptr->tm_wday));
                        break;
 
                case 'b':       /* abbreviated month name */
@@ -336,14 +471,14 @@ strftime(char *s, size_t maxsize, const char *format, const struct tm *timeptr)
                        if (timeptr->tm_mon < 0 || timeptr->tm_mon > 11)
                                strcpy(tbuf, "?");
                        else
-                               strcpy(tbuf, months_a[timeptr->tm_mon]);
+                               strcpy(tbuf, months_a(timeptr->tm_mon));
                        break;
 
                case 'B':       /* full month name */
                        if (timeptr->tm_mon < 0 || timeptr->tm_mon > 11)
                                strcpy(tbuf, "?");
                        else
-                               strcpy(tbuf, months_l[timeptr->tm_mon]);
+                               strcpy(tbuf, months_l(timeptr->tm_mon));
                        break;
 
                case 'c':       /* appropriate date and time representation */
@@ -352,9 +487,16 @@ strftime(char *s, size_t maxsize, const char *format, const struct tm *timeptr)
                         *
                         * strftime(tbuf, sizeof tbuf, "%a %b %e %H:%M:%S %Y", timeptr);
                         *
-                        * Now, per the ISO 1999 C standard, it this:
+                        * Per the ISO 1999 C standard, it was this:
+                        * strftime(tbuf, sizeof tbuf, "%A %B %d %T %Y", timeptr);
+                        *
+                        * Per the ISO 2011 C standard, it is now this:
                         */
-                       strftime(tbuf, sizeof tbuf, "%A %B %d %T %Y", timeptr);
+#ifdef HAVE_NL_LANGINFO
+                       strftime(tbuf, sizeof tbuf, nl_langinfo(D_T_FMT), timeptr);
+#else
+                       strftime(tbuf, sizeof tbuf, "%a %b %e %T %Y", timeptr);
+#endif
                        break;
 
                case 'C':
@@ -497,9 +639,9 @@ strftime(char *s, size_t maxsize, const char *format, const struct tm *timeptr)
                case 'p':       /* am or pm based on 12-hour clock */
                        i = range(0, timeptr->tm_hour, 23);
                        if (i < 12)
-                               strcpy(tbuf, ampm[0]);
+                               strcpy(tbuf, ampm(0));
                        else
-                               strcpy(tbuf, ampm[1]);
+                               strcpy(tbuf, ampm(1));
                        break;
 
                case 'r':       /* time as %I:%M:%S %p */
@@ -560,11 +702,25 @@ strftime(char *s, size_t maxsize, const char *format, const struct tm *timeptr)
                        break;
 
                case 'x':       /* appropriate date representation */
-                       strftime(tbuf, sizeof tbuf, "%A %B %d %Y", timeptr);
+                       /*
+                        * Up to the 2011 standard, this code used:
+                        * strftime(tbuf, sizeof tbuf, "%A %B %d %Y", timeptr);
+                        *
+                        * Now, per the 2011 C standard, this is:
+                        */
+#ifdef HAVE_NL_LANGINFO
+                       strftime(tbuf, sizeof tbuf, nl_langinfo(D_FMT), timeptr);
+#else
+                       strftime(tbuf, sizeof tbuf, "%m/%d/%y", timeptr);
+#endif
                        break;
 
                case 'X':       /* appropriate time representation */
+#ifdef HAVE_NL_LANGINFO
+                       strftime(tbuf, sizeof tbuf, nl_langinfo(T_FMT), timeptr);
+#else
                        goto the_time;
+#endif
                        break;
 
                case 'y':       /* year without a century, 00 - 99 */
@@ -625,12 +781,12 @@ strftime(char *s, size_t maxsize, const char *format, const struct tm *timeptr)
                         * Systems with tzname[] probably have timezone as
                         * secs west of GMT.  Convert to mins east of GMT.
                         */
-#  if defined(__hpux) || defined (HPUX) || defined(__CYGWIN__)
+#if defined(__hpux) || defined (HPUX) || defined(__CYGWIN__)
                        off = -timezone / 60;
-#  else
+#else
                        /* ADR: 4 August 2001, fixed this per gazelle@interaccess.com */
                        off = -(daylight ? altzone : timezone) / 60;
-#  endif
+#endif
 #else /* !HAVE_TZNAME */
                        gettimeofday(& tv, & zone);
                        off = -zone.tz_minuteswest;
@@ -682,8 +838,12 @@ strftime(char *s, size_t maxsize, const char *format, const struct tm *timeptr)
 
 #ifdef HPUX_EXT
                case 'N':       /* Emperor/Era name */
+#ifdef HAVE_NL_LANGINFO
+                       strftime(tbuf, sizeof tbuf, nl_langinfo(ERA), timeptr);
+#else
                        /* this is essentially the same as the century */
                        goto century;   /* %C */
+#endif
 
                case 'o':       /* Emperor/Era year */
                        goto year;      /* %y */
@@ -694,7 +854,7 @@ strftime(char *s, size_t maxsize, const char *format, const struct tm *timeptr)
                case 'v':       /* date as dd-bbb-YYYY */
                        sprintf(tbuf, "%2d-%3.3s-%4ld",
                                range(1, timeptr->tm_mday, 31),
-                               months_a[range(0, timeptr->tm_mon, 11)],
+                               months_a(range(0, timeptr->tm_mon, 11)),
                                timeptr->tm_year + 1900L);
                        for (i = 3; i < 6; i++)
                                if (islower(tbuf[i]))
@@ -925,6 +1085,7 @@ How nicer it depends on a compiler, of course, but always a tiny bit.
 #ifndef NULL
 #include       <stdio.h>
 #endif
+#include       <locale.h>
 #include       <sys/time.h>
 #include       <string.h>
 
@@ -941,11 +1102,11 @@ static char *array[] =
        "(%%C)                                               Century  %C",
        "(%%D)                                       date (%%m/%%d/%%y)  %D",
        "(%%E)                           Locale extensions (ignored)  %E",
-       "(%%F)       full month name, var length (January..December)  %F",
+       "(%%F)                           year-month-day (YYYY-MM-DD)  %F",
        "(%%H)                          hour (24-hour clock, 00..23)  %H",
        "(%%I)                          hour (12-hour clock, 01..12)  %I",
        "(%%M)                                       minute (00..59)  %M",
-       "(%%N)                                      Emperor/Era Name  %N",
+       "(%%N)                                      Emporer/Era Name  %N",
        "(%%O)                           Locale extensions (ignored)  %O",
        "(%%R)                                 time, 24-hour (%%H:%%M)  %R",
        "(%%S)                                       second (00..60)  %S",
@@ -953,12 +1114,12 @@ static char *array[] =
        "(%%U)    week of year, Sunday as first day of week (00..53)  %U",
        "(%%V)                    week of year according to ISO 8601  %V",
        "(%%W)    week of year, Monday as first day of week (00..53)  %W",
-       "(%%X)     appropriate locale time representation (%H:%M:%S)  %X",
+       "(%%X)     appropriate locale time representation (%%H:%%M:%%S)  %X",
        "(%%Y)                           year with century (1970...)  %Y",
        "(%%Z) timezone (EDT), or blank if timezone not determinable  %Z",
        "(%%a)          locale's abbreviated weekday name (Sun..Sat)  %a",
        "(%%b)            locale's abbreviated month name (Jan..Dec)  %b",
-       "(%%c)           full date (Sat Nov  4 12:02:33 1989)%n%t%t%t  %c",
+       "(%%c)           full date + newline (Sat Nov  4 12:02:33 1989)%n%t%t%t  %c",
        "(%%d)                             day of the month (01..31)  %d",
        "(%%e)               day of the month, blank-padded ( 1..31)  %e",
        "(%%h)                                should be same as (%%b)  %h",
@@ -966,7 +1127,7 @@ static char *array[] =
        "(%%k)               hour, 24-hour clock, blank pad ( 0..23)  %k",
        "(%%l)               hour, 12-hour clock, blank pad ( 0..12)  %l",
        "(%%m)                                        month (01..12)  %m",
-       "(%%o)                                      Emperor/Era Year  %o",
+       "(%%o)                                      Emporer/Era Year  %o",
        "(%%p)              locale's AM or PM based on 12-hour clock  %p",
        "(%%r)                   time, 12-hour (same as %%I:%%M:%%S %%p)  %r",
        "(%%u) ISO 8601: Weekday as decimal number [1 (Monday) - 7]   %u",
@@ -981,12 +1142,8 @@ static char *array[] =
 /* main routine. */
 
 int
-main(argc, argv)
-int argc;
-char **argv;
+main(int argc, char **argv)
 {
-       long time();
-
        char *next;
        char string[MAXTIME];
 
@@ -997,6 +1154,8 @@ char **argv;
 
        long clock;
 
+       setlocale(LC_ALL, "");
+
        /* Call the function. */
 
        clock = time((long *) 0);
@@ -1007,6 +1166,6 @@ char **argv;
                printf("%s\n", string);
        }
 
-       exit(0);
+       return 0;
 }
 #endif /* TEST_STRFTIME */
index fba4fd2bbca3eb3cc1466d9fc0ba7a1dbc1181ab..2b47062ebe004c1b230eac6155c3e7c9bcc3d1fc 100644 (file)
@@ -46,10 +46,6 @@ extern char *realloc ();
 #include <string.h>
 #endif
 
-#if !defined (HAVE_BCOPY) && (defined (HAVE_STRING_H) || defined (STDC_HEADERS))
-#  define bcopy(s, d, n)       memcpy ((d), (s), (n))
-#endif
-
 #else /* not HAVE_CONFIG_H */
 
 #ifdef HAVE_STDLIB_H
@@ -64,17 +60,11 @@ char *realloc ();
 #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))
-#endif
-
 #ifdef HAVE_UNISTD_H
 #include <unistd.h>
 #endif
-#ifdef _POSIX_VERSION
+
 #include <fcntl.h>
-#endif
 
 #endif /* not HAVE_CONFIG_H */
 
@@ -110,30 +100,31 @@ int bufsize = 128;
 #endif
 
 #ifndef emacs
+static void memory_out (void);
+static void *xmalloc (size_t);
+static void *xrealloc (void *, size_t);
+
 static void
-memory_out ()
+memory_out (void)
 {
   write (2, "virtual memory exhausted\n", 25);
   exit (1);
 }
 
-static char *
-xmalloc (size)
-     unsigned size;
+static void *
+xmalloc (size_t size)
 {
-  register char *tem = malloc (size);
+  register void *tem = malloc (size);
 
   if (!tem)
     memory_out ();
   return tem;
 }
 
-static char *
-xrealloc (ptr, size)
-     char *ptr;
-     unsigned size;
+static void *
+xrealloc (void *ptr, size_t size)
 {
-  register char *tem = realloc (ptr, size);
+  register void *tem = realloc (ptr, size);
 
   if (!tem)
     memory_out ();
@@ -147,15 +138,15 @@ xrealloc (ptr, size)
    for tgetnum, tgetflag and tgetstr to find.  */
 static char *term_entry;
 
-static char *tgetst1 ();
+static char *find_capability (char *, char *);
+static char *tgetst1 (char *, char **);
 
 /* Search entry BP for capability CAP.
    Return a pointer to the capability (in BP) if found,
    0 if not found.  */
 
 static char *
-find_capability (bp, cap)
-     register char *bp, *cap;
+find_capability (char *bp, char *cap)
 {
   for (; *bp; bp++)
     if (bp[0] == ':'
@@ -167,8 +158,7 @@ find_capability (bp, cap)
 
 __private_extern__
 int
-tgetnum (cap)
-     char *cap;
+tgetnum (char *cap)
 {
   register char *ptr = find_capability (term_entry, cap);
   if (!ptr || ptr[-1] != '#')
@@ -178,8 +168,7 @@ tgetnum (cap)
 
 __private_extern__
 int
-tgetflag (cap)
-     char *cap;
+tgetflag (char *cap)
 {
   register char *ptr = find_capability (term_entry, cap);
   return ptr && ptr[-1] == ':';
@@ -192,9 +181,7 @@ tgetflag (cap)
 
 __private_extern__
 char *
-tgetstr (cap, area)
-     char *cap;
-     char **area;
+tgetstr (char *cap, char **area)
 {
   register char *ptr = find_capability (term_entry, cap);
   if (!ptr || (ptr[-1] != '=' && ptr[-1] != '~'))
@@ -220,9 +207,7 @@ static char esctab[]
    or NULL if PTR is NULL.  */
 
 static char *
-tgetst1 (ptr, area)
-     char *ptr;
-     char **area;
+tgetst1 (char *ptr, char **area)
 {
   register char *p, *r;
   register int c;
@@ -313,10 +298,7 @@ static int speeds[] =
 
 __private_extern__
 int
-tputs (str, nlines, outfun)
-     register char *str;
-     int nlines;
-     register int (*outfun) ();
+tputs (char *str, int nlines, int (*outfun)(int))
 {
   register int padcount = 0;
   register int speed;
@@ -392,10 +374,10 @@ struct buffer
 
 /* Forward declarations of static functions.  */
 
-static int scan_file ();
-static char *gobble_line ();
-static int compare_contin ();
-static int name_match ();
+static int scan_file (char *, int, struct buffer *);
+static char *gobble_line (int, struct buffer *, char *);
+static int compare_contin (char *, char *);
+static int name_match (char *, char *);
 
 #ifdef VMS
 
@@ -451,8 +433,7 @@ valid_filename_p (fn)
 
 __private_extern__
 int
-tgetent (bp, name)
-     char *bp, *name;
+tgetent (char *bp, char *name)
 {
   register char *termcap_name;
   register int fd;
@@ -462,7 +443,7 @@ tgetent (bp, name)
   char *term;
   int malloc_size = 0;
   register int c;
-  char *tcenv;                 /* TERMCAP value, if it contains :tc=.  */
+  char *tcenv = NULL;          /* TERMCAP value, if it contains :tc=.  */
   char *indirect = NULL;       /* Terminal type in :tc= in TERMCAP value.  */
   int filep;
 
@@ -621,10 +602,7 @@ tgetent (bp, name)
    or 0 if no entry is found in the file.  */
 
 static int
-scan_file (str, fd, bufp)
-     char *str;
-     int fd;
-     register struct buffer *bufp;
+scan_file (char *str, int fd, struct buffer *bufp)
 {
   register char *end;
 
@@ -661,8 +639,7 @@ scan_file (str, fd, bufp)
    by termcap entry LINE.  */
 
 static int
-name_match (line, name)
-     char *line, *name;
+name_match (char *line, char *name)
 {
   register char *tem;
 
@@ -677,8 +654,7 @@ name_match (line, name)
 }
 
 static int
-compare_contin (str1, str2)
-     register char *str1, *str2;
+compare_contin (char *str1, char *str2)
 {
   register int c1, c2;
   while (1)
@@ -718,10 +694,7 @@ compare_contin (str1, str2)
    thing as one line.  The caller decides when a line is continued.  */
 
 static char *
-gobble_line (fd, bufp, append_end)
-     int fd;
-     register struct buffer *bufp;
-     char *append_end;
+gobble_line (int fd, struct buffer *bufp, char *append_end)
 {
   register char *end;
   register int nread;
@@ -754,7 +727,7 @@ gobble_line (fd, bufp, append_end)
       else
        {
          append_end -= bufp->ptr - buf;
-         bcopy (bufp->ptr, buf, bufp->full -= bufp->ptr - buf);
+         memcpy (buf, bufp->ptr, bufp->full -= bufp->ptr - buf);
          bufp->ptr = buf;
        }
       if (!(nread = read (fd, buf + bufp->full, bufp->size - bufp->full)))
@@ -799,8 +772,7 @@ main (argc, argv)
   printf ("am: %d\n", tgetflag ("am"));
 }
 
-tprint (cap)
-     char *cap;
+tprint (char *cap)
 {
   char *x = tgetstr (cap, 0);
   register char *y;
index cd500efd8fb34d7b3f3c0d1e06afa59d87f80a85..9887dc4d7ce5f9ebbe23ace2c41cc3bfdcc4484d 100644 (file)
@@ -38,16 +38,8 @@ extern char *realloc ();
 #include <string.h>
 #endif
 
-#if !defined (HAVE_BCOPY) && (defined (HAVE_STRING_H) || defined (STDC_HEADERS))
-#  define bcopy(s, d, n)       memcpy ((d), (s), (n))
-#endif
-
 #else /* not HAVE_CONFIG_H */
 
-#if defined(HAVE_STRING_H) || defined(STDC_HEADERS)
-#define bcopy(s, d, n) memcpy ((d), (s), (n))
-#endif
-
 #ifdef STDC_HEADERS
 #include <stdlib.h>
 #include <string.h>
@@ -72,23 +64,20 @@ memory_out ()
   exit (1);
 }
 
-static char *
-xmalloc (size)
-     unsigned size;
+static void *
+xmalloc (size_t size)
 {
-  register char *tem = malloc (size);
+  register void *tem = malloc (size);
 
   if (!tem)
     memory_out ();
   return tem;
 }
 
-static char *
-xrealloc (ptr, size)
-     char *ptr;
-     unsigned size;
+static void *
+xrealloc (void *ptr, size_t size)
 {
-  register char *tem = realloc (ptr, size);
+  register void *tem = realloc (ptr, size);
 
   if (!tem)
     memory_out ();
@@ -108,15 +97,11 @@ xrealloc (ptr, size)
 
    The fourth and following args to tparam serve as the parameter values.  */
 
-static char *tparam1 ();
+static char *tparam1 (char *, char *, int, char *, char *, int *);
 
 /* VARARGS 2 */
 char *
-tparam (string, outstring, len, arg0, arg1, arg2, arg3)
-     char *string;
-     char *outstring;
-     int len;
-     int arg0, arg1, arg2, arg3;
+tparam (char *string, char *outstring, int len, int arg0, int arg1, int arg2, int arg3)
 {
   int arg[4];
 
@@ -134,9 +119,7 @@ static char tgoto_buf[50];
 
 __private_extern__
 char *
-tgoto (cm, hpos, vpos)
-     char *cm;
-     int hpos, vpos;
+tgoto (char *cm, int hpos, int vpos)
 {
   int args[2];
   if (!cm)
@@ -147,12 +130,7 @@ tgoto (cm, hpos, vpos)
 }
 
 static char *
-tparam1 (string, outstring, len, up, left, argp)
-     char *string;
-     char *outstring;
-     int len;
-     char *up, *left;
-     register int *argp;
+tparam1 (char *string, char *outstring, int len, char *up, char *left, int *argp)
 {
   register int c;
   register char *p = string;
@@ -173,21 +151,21 @@ tparam1 (string, outstring, len, up, left, argp)
       if (op + 5 >= outend)
        {
          register char *new;
+         int offset = op - outstring;
+
          if (outlen == 0)
            {
              outlen = len + 40;
              new = (char *) xmalloc (outlen);
-             outend += 40;
-             bcopy (outstring, new, op - outstring);
+             memcpy (new, outstring, offset);
            }
          else
            {
-             outend += outlen;
              outlen *= 2;
              new = (char *) xrealloc (outstring, outlen);
            }
-         op += new - outstring;
-         outend += new - outstring;
+         op = new + offset;
+         outend = new + outlen;
          outstring = new;
        }
       c = *p++;
index eb7326013d3091b72af3d7fb3f73ae38820ef820..9230acaf16e1dc80732058a4ce80716fa74eb17f 100644 (file)
@@ -18,6 +18,7 @@ AC_DEFUN([AM_LANGINFO_CODESET],
        [am_cv_langinfo_codeset=no])
     ])
   if test $am_cv_langinfo_codeset = yes; then
+    AC_DEFINE([HAVE_NL_LANGINFO], [1])
     AC_DEFINE([HAVE_LANGINFO_CODESET], [1],
       [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
   fi
diff --git a/parse.y b/parse.y
index 90436220969db0b7c79a5e8e9f8da07c31f8eaaf..dd1903190174f75ba113ba810c9d2017c4f20221 100644 (file)
--- a/parse.y
+++ b/parse.y
@@ -1,6 +1,6 @@
 /* parse.y - Yacc grammar for bash. */
 
-/* Copyright (C) 1989-2024 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2025 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
index 35fa324f47b612f01be03012c5ce03ea1aab58be..4075274208aa2f9fc77fa2779e69f4978d5a26bc 100644 (file)
@@ -1,6 +1,6 @@
 /* patchlevel.h -- current bash patch level */
 
-/* Copyright (C) 2001-2024 Free Software Foundation, Inc.
+/* Copyright (C) 2001-2025 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
index bcd517e1a5787354673858c770eed7021f2afe15..dc1b149c6056861eca68944bd9c06bc41bdd67ea 100644 (file)
Binary files a/po/pt.gmo and b/po/pt.gmo differ
index 4971e34e84ee8c8a6b087eb83ee35fd97dcb0710..2fc9ea6ce881feec463eba47a47f338aad1a873c 100644 (file)
--- a/po/pt.po
+++ b/po/pt.po
 # Bash - Bourne Again Shell.
 # Copyright (C) 2020 Free Software Foundation, Inc.
 # This file is distributed under the same license as the Bash package.
-# Pedro Albuquerque <pmra@protonmail.com>, 2018, 2019, 2020.
+# Pedro Albuquerque <pmra@protonmail.com>, 2025.
+# Portuguese (Portugal) Translation for the bash package
 #
 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: 2024-11-12 11:51-0500\n"
-"PO-Revision-Date: 2020-12-08 03:20+0000\n"
+"POT-Creation-Date: 2022-01-11 14:50-0500\n"
+"PO-Revision-Date: 2025-03-17 05:10+0000\n"
 "Last-Translator: Pedro Albuquerque <pmra@protonmail.com>\n"
 "Language-Team: Portuguese <translation-team-pt@lists.sourceforge.net>\n"
 "Language: pt\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Bugs: Report translation errors to the Language-Team address.\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Geany / PoHelper 1.37\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"X-Generator: Poedit 3.5\n"
 
-#: arrayfunc.c:63
+#: arrayfunc.c:66
 msgid "bad array subscript"
 msgstr "subscrito de matriz inválido"
 
-#: arrayfunc.c:466 builtins/declare.def:748 variables.c:2196 variables.c:2225
-#: variables.c:3099
+#: 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:493 builtins/declare.def:920
+#: 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:789
+#: 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:841
+#: 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:464
-#, fuzzy
-msgid "cannot create"
+#: bashhist.c:455
+#, c-format
+msgid "%s: cannot create: %s"
 msgstr "%s: impossível criar: %s"
 
-#: bashline.c:4628
+#: 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:4799
+#: 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:4828
+#: bashline.c:4666
 #, c-format
 msgid "no closing `%c' in %s"
 msgstr "sem \"%c\" de fecho em %s"
 
-#: bashline.c:4859
-#, fuzzy, c-format
-msgid "%s: missing separator"
+#: bashline.c:4697
+#, c-format
+msgid "%s: missing colon separator"
 msgstr "%s: separador dois pontos em falta"
 
-#: bashline.c:4906
+#: bashline.c:4733
 #, c-format
 msgid "`%s': cannot unbind in command keymap"
 msgstr "\"%s\": impossível desassociar no mapa de teclado do comando"
 
-#: braces.c:320
+#: braces.c:327
 #, c-format
 msgid "brace expansion: cannot allocate memory for %s"
 msgstr "expansão: impossível alocar memória para %s"
 
-#: braces.c:383
-#, fuzzy, c-format
-msgid "brace expansion: failed to allocate memory for %s elements"
+#: braces.c:406
+#, c-format
+msgid "brace expansion: failed to allocate memory for %u elements"
 msgstr "expansão: falha ao alocar memória para %u elementos"
 
-#: braces.c:442
+#: braces.c:451
 #, c-format
 msgid "brace expansion: failed to allocate memory for `%s'"
 msgstr "expansão: falha ao alocar memória para \"%s\""
 
-#: builtins/alias.def:131 variables.c:1789
+#: builtins/alias.def:131 variables.c:1817
 #, c-format
 msgid "`%s': invalid alias name"
 msgstr "\"%s\": aliás inválido"
 
-#: builtins/bind.def:123
+#: builtins/bind.def:122 builtins/bind.def:125
 msgid "line editing not enabled"
-msgstr "Edição de linha não activada"
+msgstr "edição de linha não activada"
 
-#: builtins/bind.def:208
+#: builtins/bind.def:212
 #, c-format
 msgid "`%s': invalid keymap name"
 msgstr "\"%s\": mapa de teclado inválido"
 
-#: builtins/bind.def:277
-#, fuzzy
-msgid "cannot read"
+#: builtins/bind.def:252
+#, c-format
+msgid "%s: cannot read: %s"
 msgstr "%s: impossível ler: %s"
 
-#: builtins/bind.def:353 builtins/bind.def:382
+#: builtins/bind.def:328 builtins/bind.def:358
 #, c-format
 msgid "`%s': unknown function name"
 msgstr "\"%s\": nome de função desconhecido"
 
-#: builtins/bind.def:361
+#: builtins/bind.def:336
 #, c-format
 msgid "%s is not bound to any keys.\n"
 msgstr "%s: não tem associação a qualquer tecla.\n"
 
-#: builtins/bind.def:365
+#: builtins/bind.def:340
 #, c-format
 msgid "%s can be invoked via "
 msgstr "%s pode ser chamado via "
 
-#: builtins/bind.def:401 builtins/bind.def:418
+#: builtins/bind.def:378 builtins/bind.def:395
 #, c-format
 msgid "`%s': cannot unbind"
 msgstr "\"%s\": impossível desassociar"
 
-#: builtins/break.def:80 builtins/break.def:125
+#: builtins/break.def:77 builtins/break.def:119
 msgid "loop count"
 msgstr "total de ciclos"
 
-#: builtins/break.def:145
+#: builtins/break.def:139
 msgid "only meaningful in a `for', `while', or `until' loop"
 msgstr "só tem significado num ciclo \"for\", \"while\" ou \"until\""
 
-#: builtins/caller.def:135
-#, fuzzy
+#: builtins/caller.def:136
 msgid ""
 "Returns the context of the current subroutine call.\n"
 "    \n"
@@ -147,13 +145,9 @@ msgid ""
 "    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."
+"    current one; the top frame is frame 0."
 msgstr ""
-"Devolver o contexto da actual chamada a sub-rotina.\n"
+"Devolve o contexto da actual chamada a sub-rotina.\n"
 "     \n"
 "     Sem EXPR, devolve \"$linha $nomefich\".  Com EXPR, devolve\n"
 "     \"$linha $sub-rotina $nomefich\"; esta informação extra pode ser usada\n"
@@ -161,380 +155,353 @@ msgstr ""
 "     \n"
 "     O valor de EXPR indica quantas chamadas deve recuar antes da\n"
 "     actual; a chamada superior é a chamada 0.\n"
-"     \n"
 "     Estado de saída:\n"
-"     Devolve 0 a não ser que a consola não esteja a executar uma função ou "
-"EXPR\n"
+"     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:321
+#: builtins/cd.def:327
 msgid "HOME not set"
 msgstr "HOME não definida"
 
-#: builtins/cd.def:329 builtins/common.c:143 builtins/fc.def:293 test.c:946
+#: builtins/cd.def:335 builtins/common.c:161 test.c:916
 msgid "too many arguments"
 msgstr "demasiados argumentos"
 
-#: builtins/cd.def:335
+#: builtins/cd.def:342
 msgid "null directory"
 msgstr "pasta nula"
 
-#: builtins/cd.def:345
+#: builtins/cd.def:353
 msgid "OLDPWD not set"
 msgstr "OLDPWD não definida"
 
-#: builtins/common.c:91
+#: builtins/common.c:96
 #, c-format
 msgid "line %d: "
 msgstr "linha %d: "
 
-#: builtins/common.c:117 error.c:227
+#: builtins/common.c:134 error.c:264
 #, c-format
 msgid "warning: "
 msgstr "aviso: "
 
-#: builtins/common.c:131
+#: builtins/common.c:148
 #, c-format
 msgid "%s: usage: "
 msgstr "%s: uso: "
 
-#: builtins/common.c:178 shell.c:524 shell.c:865
+#: 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"
 
-#: builtins/common.c:184
+#: builtins/common.c:200
 #, c-format
 msgid "%s: numeric argument required"
 msgstr "%s: requer um argumento numérico"
 
-#: builtins/common.c:190
+#: builtins/common.c:207
 #, c-format
 msgid "%s: not found"
 msgstr "%s: não encontrado"
 
-#: builtins/common.c:198 shell.c:878
+#: builtins/common.c:216 shell.c:879
 #, c-format
 msgid "%s: invalid option"
 msgstr "%s: opção inválida"
 
-#: builtins/common.c:204
+#: builtins/common.c:223
 #, c-format
 msgid "%s: invalid option name"
 msgstr "%s: nome de opção inválido"
 
-#: builtins/common.c:210 error.c:461
+#: 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"
 
-#: builtins/common.c:219
+#: builtins/common.c:240
 msgid "invalid octal number"
 msgstr "número octal inválido"
 
-#: builtins/common.c:221
+#: builtins/common.c:242
 msgid "invalid hex number"
 msgstr "número hexadecimal inválido"
 
-#: builtins/common.c:223 expr.c:1559 expr.c:1573
+#: builtins/common.c:244 expr.c:1574
 msgid "invalid number"
 msgstr "número inválido"
 
-#: builtins/common.c:230
+#: builtins/common.c:252
 #, c-format
 msgid "%s: invalid signal specification"
 msgstr "%s: especificação de sinal inválida"
 
-#: builtins/common.c:236
+#: builtins/common.c:259
 #, c-format
 msgid "`%s': not a pid or valid job spec"
 msgstr "\"%s\": especificação de pid ou tarefa inválida"
 
-#: builtins/common.c:242 error.c:455
+#: builtins/common.c:266 error.c:536
 #, c-format
 msgid "%s: readonly variable"
 msgstr "%s: variável só de leitura"
 
-#: builtins/common.c:248
-#, fuzzy, c-format
+#: builtins/common.c:273
+#, c-format
 msgid "%s: cannot assign"
-msgstr "%s: impossível desactivar"
+msgstr "%s: impossível atribuir"
 
-#: builtins/common.c:255
+#: builtins/common.c:281
 #, c-format
 msgid "%s: %s out of range"
 msgstr "%s: %s fora do intervalo"
 
-#: builtins/common.c:255 builtins/common.c:257
+#: builtins/common.c:281 builtins/common.c:283
 msgid "argument"
 msgstr "argumento"
 
-#: builtins/common.c:257
+#: builtins/common.c:283
 #, c-format
 msgid "%s out of range"
 msgstr "%s fora do intervalo"
 
-#: builtins/common.c:264
+#: builtins/common.c:291
 #, c-format
 msgid "%s: no such job"
 msgstr "%s: tarefa inexistente"
 
-#: builtins/common.c:271
+#: builtins/common.c:299
 #, c-format
 msgid "%s: no job control"
 msgstr "%s: sem controlo da tarefa"
 
-#: builtins/common.c:273
+#: builtins/common.c:301
 msgid "no job control"
 msgstr "sem controlo da tarefa"
 
-#: builtins/common.c:279
-#, fuzzy, c-format
-msgid "%s: invalid job specification"
-msgstr "%s: especificação de inacção inválida"
-
-#: builtins/common.c:289
+#: builtins/common.c:311
 #, c-format
 msgid "%s: restricted"
 msgstr "%s: restrita"
 
-#: builtins/common.c:291
+#: builtins/common.c:313
 msgid "restricted"
 msgstr "restrita"
 
-#: builtins/common.c:298
+#: builtins/common.c:321
 #, c-format
 msgid "%s: not a shell builtin"
 msgstr "%s: não é interno da consola"
 
-#: builtins/common.c:307
-#, fuzzy
-msgid "write error"
+#: builtins/common.c:330
+#, c-format
+msgid "write error: %s"
 msgstr "erro de escrita: %s"
 
-#: builtins/common.c:314
-#, fuzzy
-msgid "error setting terminal attributes"
+#: builtins/common.c:338
+#, c-format
+msgid "error setting terminal attributes: %s"
 msgstr "erro ao definir atributos do terminal: %s"
 
-#: builtins/common.c:316
-#, fuzzy
-msgid "error getting terminal attributes"
+#: builtins/common.c:340
+#, c-format
+msgid "error getting terminal attributes: %s"
 msgstr "erro ao obter atributos do terminal: %s"
 
-#: builtins/common.c:611
-#, fuzzy
-msgid "error retrieving current directory"
+#: 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:675 builtins/common.c:677
+#: 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:709
-#, fuzzy, c-format
-msgid "%s: job specification requires leading `%%'"
-msgstr "%s: a opção requer um argumento"
-
-#: builtins/common.c:937
+#: builtins/common.c:971
 msgid "help not available in this version"
 msgstr "ajuda indisponível nesta versão"
 
-#: builtins/common.c:1005
-#, c-format
-msgid "%s: not an indexed array"
-msgstr "%s: não é uma matriz indexada"
-
-#: builtins/common.c:1028 builtins/set.def:964 variables.c:3868
+#: 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:1033 builtins/set.def:930 variables.c:3873
+#: builtins/common.c:1043 builtins/set.def:932 variables.c:3830
 #, c-format
 msgid "%s: cannot unset"
 msgstr "%s: impossível desactivar"
 
-#: builtins/complete.def:285
+#: builtins/complete.def:287
 #, c-format
 msgid "%s: invalid action name"
 msgstr "%s: nome de acção inválido"
 
-#: builtins/complete.def:501 builtins/complete.def:644
-#: builtins/complete.def:899
+#: 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:703
+#: 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:705
+#: 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:872
+#: 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:139
+#: builtins/declare.def:137
 msgid "can only be used in a function"
 msgstr "só pode ser usado numa função"
 
-#: builtins/declare.def:471
+#: builtins/declare.def:437
 msgid "cannot use `-f' to make functions"
 msgstr "impossível usar \"-f\" para fazer funções"
 
-#: builtins/declare.def:499 execute_cmd.c:6294
+#: builtins/declare.def:464 execute_cmd.c:6132
 #, c-format
 msgid "%s: readonly function"
 msgstr "%s: função só de leitura"
 
-#: builtins/declare.def:556 builtins/declare.def:843
+#: 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:567 variables.c:3346
+#: 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:572 variables.c:2035 variables.c:3343
+#: 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:576 builtins/declare.def:850 builtins/declare.def:859
+#: 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:908
+#: 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:914
+#: 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/declare.def:943
+#: 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:149 builtins/enable.def:157
+#: builtins/enable.def:145 builtins/enable.def:153
 msgid "dynamic loading not available"
 msgstr "carregamento dinâmico indisponível"
 
-#: builtins/enable.def:389
+#: builtins/enable.def:376
 #, c-format
 msgid "cannot open shared object %s: %s"
 msgstr "impossível abrir objecto partilhado %s: %s"
 
-#: builtins/enable.def:408
-#, c-format
-msgid "%s: builtin names may not contain slashes"
-msgstr ""
-
-#: builtins/enable.def:423
+#: 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:440
+#: builtins/enable.def:422
 #, c-format
 msgid "%s: dynamic builtin already loaded"
 msgstr "%s: interno dinâmico já carregado"
 
-#: builtins/enable.def:444
+#: 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:565
+#: builtins/enable.def:551
 #, c-format
 msgid "%s: not dynamically loaded"
 msgstr "%s: não carregada dinamicamente"
 
-#: builtins/enable.def:591
+#: builtins/enable.def:577
 #, c-format
 msgid "%s: cannot delete: %s"
 msgstr "%s: impossível eliminar: %s"
 
-#: builtins/evalfile.c:137 builtins/hash.def:190 execute_cmd.c:6114
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5959
 #, c-format
 msgid "%s: is a directory"
 msgstr "%s: é uma pasta"
 
-#: builtins/evalfile.c:143
+#: builtins/evalfile.c:144
 #, c-format
 msgid "%s: not a regular file"
 msgstr "%s: não é um ficheiro normal"
 
-#: builtins/evalfile.c:152
+#: builtins/evalfile.c:153
 #, c-format
 msgid "%s: file is too large"
 msgstr "%s: ficheiro muito grande"
 
-#: builtins/evalfile.c:189 builtins/evalfile.c:207 execute_cmd.c:6196
-#: shell.c:1690
-#, fuzzy
-msgid "cannot execute binary file"
+#: 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"
 
-#: builtins/evalstring.c:478
-#, fuzzy, c-format
-msgid "%s: ignoring function definition attempt"
-msgstr "erro ao importar definição de função para \"%s\""
-
-#: builtins/exec.def:157 builtins/exec.def:159 builtins/exec.def:248
-#, fuzzy
-msgid "cannot execute"
+#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246
+#, c-format
+msgid "%s: cannot execute: %s"
 msgstr "%s: impossível executar: %s"
 
-#: builtins/exit.def:61
+#: builtins/exit.def:64
 #, c-format
 msgid "logout\n"
 msgstr "logout\n"
 
-#: builtins/exit.def:85
+#: builtins/exit.def:89
 msgid "not login shell: use `exit'"
 msgstr "não é consola de sessão: use \"exit\""
 
-#: builtins/exit.def:116
+#: builtins/exit.def:121
 #, c-format
 msgid "There are stopped jobs.\n"
 msgstr "Há tarefas interrompidas.\n"
 
-#: builtins/exit.def:118
+#: builtins/exit.def:123
 #, c-format
 msgid "There are running jobs.\n"
 msgstr "Há tarefas em curso.\n"
 
-#: builtins/fc.def:284 builtins/fc.def:391 builtins/fc.def:435
+#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417
 msgid "no command found"
 msgstr "sem comando encontrado"
 
-#: builtins/fc.def:381 builtins/fc.def:386 builtins/fc.def:425
-#: builtins/fc.def:430
+#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407
+#: builtins/fc.def:412
 msgid "history specification"
 msgstr "especificação de histórico"
 
-#: builtins/fc.def:462
-#, fuzzy
-msgid "cannot open temp file"
+#: builtins/fc.def:444
+#, c-format
+msgid "%s: cannot open temp file: %s"
 msgstr "%s: impossível abrir ficheiro temporário: %s"
 
-#: builtins/fg_bg.def:150 builtins/jobs.def:293
+#: builtins/fg_bg.def:152 builtins/jobs.def:284
 msgid "current"
 msgstr "actual"
 
-#: builtins/fg_bg.def:159
+#: builtins/fg_bg.def:161
 #, c-format
 msgid "job %d started without job control"
 msgstr "tarefa %d começou sem controlo de tarefa"
@@ -549,11 +516,11 @@ msgstr "%s: opção ilegal -- %c\n"
 msgid "%s: option requires an argument -- %c\n"
 msgstr "%s: a opção requer um argumento -- %c\n"
 
-#: builtins/hash.def:88
+#: builtins/hash.def:91
 msgid "hashing disabled"
 msgstr "hashing desactivado"
 
-#: builtins/hash.def:144
+#: builtins/hash.def:139
 #, c-format
 msgid "%s: hash table empty\n"
 msgstr "%s: tabela de hash vazia\n"
@@ -579,18 +546,15 @@ 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:214
-#, fuzzy
-msgid "cannot open"
-msgstr "impossível suspender"
+#: builtins/help.def:223
+#, c-format
+msgid "%s: cannot open: %s"
+msgstr "%s: impossível abrir: %s"
 
-#: builtins/help.def:500
+#: builtins/help.def:523
 #, c-format
 msgid ""
 "These shell commands are defined internally.  Type `help' to see this list.\n"
@@ -601,8 +565,7 @@ 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"
@@ -610,140 +573,141 @@ msgstr ""
 "Um asterisco (*) junto a um nome significa que o comando está inactivo.\n"
 "\n"
 
-#: builtins/history.def:162
+#: builtins/history.def:159
 msgid "cannot use more than one of -anrw"
 msgstr "impossível usar mais de um -anrw"
 
-#: builtins/history.def:195 builtins/history.def:207 builtins/history.def:218
-#: builtins/history.def:243 builtins/history.def:250
+#: 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:278
-#, fuzzy
-msgid "empty filename"
-msgstr "nome de variável de matriz vazio"
-
-#: builtins/history.def:280 subst.c:8215
-#, c-format
-msgid "%s: parameter null or not set"
-msgstr "%s: parâmetro nulo ou não definido"
-
-#: builtins/history.def:349
+#: builtins/history.def:338
 #, c-format
 msgid "%s: invalid timestamp"
 msgstr "%s: datação inválida"
 
-#: builtins/history.def:457
+#: builtins/history.def:449
 #, c-format
 msgid "%s: history expansion failed"
 msgstr "%s: falha na expansão do histórico"
 
+#: builtins/inlib.def:71
+#, c-format
+msgid "%s: inlib failed"
+msgstr "%s: falha inlib"
+
 #: builtins/jobs.def:109
 msgid "no other options allowed with `-x'"
 msgstr "não são permitidas mais opções com \"-x\""
 
-#: builtins/kill.def:213
+#: builtins/kill.def:211
 #, c-format
 msgid "%s: arguments must be process or job IDs"
 msgstr "%s: os argumentos têm de ser IDs de processos ou tarefas"
 
-#: builtins/kill.def:275
+#: builtins/kill.def:274
 msgid "Unknown error"
 msgstr "Erro desconhecido"
 
-#: builtins/let.def:96 builtins/let.def:120 expr.c:633 expr.c:651
+#: builtins/let.def:97 builtins/let.def:122 expr.c:640 expr.c:658
 msgid "expression expected"
 msgstr "esperada expressão"
 
-#: builtins/mapfile.def:249 builtins/read.def:373
+#: builtins/mapfile.def:180
+#, c-format
+msgid "%s: not an indexed array"
+msgstr "%s: não é uma matriz indexada"
+
+#: 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:257 builtins/read.def:380
-#, fuzzy
-msgid "invalid file descriptor"
+#: 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:266 builtins/mapfile.def:304
+#: 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:277
+#: builtins/mapfile.def:304
 #, c-format
 msgid "%s: invalid array origin"
 msgstr "%s: origem de matriz inválida"
 
-#: builtins/mapfile.def:294
+#: builtins/mapfile.def:321
 #, c-format
 msgid "%s: invalid callback quantum"
 msgstr "%s: callback inválida"
 
-#: builtins/mapfile.def:327
+#: builtins/mapfile.def:354
 msgid "empty array variable name"
 msgstr "nome de variável de matriz vazio"
 
-#: builtins/mapfile.def:347
+#: builtins/mapfile.def:375
 msgid "array variable support required"
 msgstr "requerido suporte a variáveis de matriz"
 
-#: builtins/printf.def:477
+#: builtins/printf.def:430
 #, c-format
 msgid "`%s': missing format character"
 msgstr "%s: carácter de formato em falta"
 
-#: builtins/printf.def:603
+#: 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:705
-msgid "string length"
-msgstr ""
-
-#: builtins/printf.def:805
+#: builtins/printf.def:708
 #, c-format
 msgid "`%c': invalid format character"
 msgstr "\"%c\": carácter de formato inválido"
 
-#: builtins/printf.def:922
+#: builtins/printf.def:734
+#, c-format
+msgid "warning: %s: %s"
+msgstr "aviso: %s: %s"
+
+#: builtins/printf.def:822
 #, c-format
 msgid "format parsing problem: %s"
 msgstr "problema de análise de formato: %s"
 
-#: builtins/printf.def:1107
+#: builtins/printf.def:919
 msgid "missing hex digit for \\x"
 msgstr "dígito hex em falta para \\x"
 
-#: builtins/printf.def:1122
+#: builtins/printf.def:934
 #, c-format
 msgid "missing unicode digit for \\%c"
 msgstr "dígito unicode em falta para \\%c"
 
-#: builtins/pushd.def:198
+#: builtins/pushd.def:199
 msgid "no other directory"
 msgstr "nenhuma outra pasta"
 
-#: builtins/pushd.def:358 builtins/pushd.def:383
+#: builtins/pushd.def:360
 #, c-format
 msgid "%s: invalid argument"
 msgstr "%s: argumento inválido"
 
-#: builtins/pushd.def:501
+#: builtins/pushd.def:480
 msgid "<no current directory>"
 msgstr "<sem pasta actual>"
 
-#: builtins/pushd.def:543
+#: builtins/pushd.def:524
 msgid "directory stack empty"
 msgstr "pilha de pastas vazia"
 
-#: builtins/pushd.def:545
+#: builtins/pushd.def:526
 msgid "directory stack index"
 msgstr "índice da pilha de pastas"
 
-#: builtins/pushd.def:708
+#: builtins/pushd.def:701
 msgid ""
 "Display the list of currently remembered directories.  Directories\n"
 "    find their way onto the list with the `pushd' command; you can get\n"
@@ -758,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 ""
 "Mostrar a lista de pastas actualmente lembradas.  As pastas\n"
@@ -785,7 +747,7 @@ msgstr ""
 "      -N\tmostra a N entrada a contar da direita da lista mostrada por\n"
 "    \tpastas quando chamada sem opções, começando com zero."
 
-#: builtins/pushd.def:730
+#: builtins/pushd.def:723
 msgid ""
 "Adds a directory to the top of the directory stack, or rotates\n"
 "    the stack, making the new top of the stack the current working\n"
@@ -831,7 +793,7 @@ msgstr ""
 "    \n"
 "    O \"dirs\" interno mostra a pilha de pastas."
 
-#: builtins/pushd.def:755
+#: builtins/pushd.def:748
 msgid ""
 "Removes entries from the directory stack.  With no arguments, removes\n"
 "    the top directory from the stack, and changes to the new top directory.\n"
@@ -869,347 +831,336 @@ msgstr ""
 "    \n"
 "    O \"dirs\" interno mostra a pilha de pastas."
 
-#: builtins/read.def:346
+#: builtins/read.def:308
 #, c-format
 msgid "%s: invalid timeout specification"
 msgstr "%s: especificação de inacção inválida"
 
-#: builtins/read.def:909
-#, fuzzy
-msgid "read error"
+#: builtins/read.def:827
+#, c-format
+msgid "read error: %d: %s"
 msgstr "erro de leitura: %d: %s"
 
-#: builtins/return.def:73
+#: builtins/return.def:68
 msgid "can only `return' from a function or sourced script"
 msgstr "só pode usar \"return\" a partir de uma função ou script baseado"
 
-#: builtins/set.def:863
+#: builtins/set.def:869
 msgid "cannot simultaneously unset a function and a variable"
 msgstr "impossível desactivar simultaneamente uma função e uma variável"
 
-#: builtins/set.def:981
+#: builtins/set.def:969
 #, c-format
 msgid "%s: not an array variable"
 msgstr "%s: não é variável de matriz"
 
-#: builtins/setattr.def:187
+#: builtins/setattr.def:189
 #, c-format
 msgid "%s: not a function"
 msgstr "%s: não é função"
 
-#: builtins/setattr.def:192
+#: builtins/setattr.def:194
 #, c-format
 msgid "%s: cannot export"
 msgstr "%s: impossível exportar"
 
-#: builtins/shift.def:74 builtins/shift.def:86
+#: builtins/shift.def:72 builtins/shift.def:79
 msgid "shift count"
 msgstr "total de trocas"
 
-#: builtins/shopt.def:332
+#: 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:457
+#: builtins/shopt.def:444
 #, c-format
 msgid "%s: invalid shell option name"
 msgstr "%s: nome de opção da consola inválido"
 
-#: builtins/source.def:143
+#: builtins/source.def:128
 msgid "filename argument required"
 msgstr "requerido argumento de nome de ficheiro"
 
-#: builtins/source.def:179
+#: builtins/source.def:154
 #, c-format
 msgid "%s: file not found"
 msgstr "%s: ficheiro não encontrado"
 
-#: builtins/suspend.def:105
+#: builtins/suspend.def:102
 msgid "cannot suspend"
 msgstr "impossível suspender"
 
-#: builtins/suspend.def:111
+#: builtins/suspend.def:112
 msgid "cannot suspend a login shell"
 msgstr "impossível suspender uma consola de sessão"
 
-#: builtins/test.def:146 test.c:926
-msgid "missing `]'"
-msgstr "\"]\" em falta"
-
-#: builtins/type.def:231
+#: builtins/type.def:235
 #, c-format
 msgid "%s is aliased to `%s'\n"
 msgstr "%s usa o aliás \"%s\"\n"
 
-#: builtins/type.def:252
+#: builtins/type.def:256
 #, c-format
 msgid "%s is a shell keyword\n"
 msgstr "%s é palavra-chave da consola\n"
 
-#: builtins/type.def:270 builtins/type.def:314
-#, c-format
-msgid "%s is a special shell builtin\n"
-msgstr "%s é opção interna especial da consola\n"
-
-#: builtins/type.def:289
+#: builtins/type.def:275
 #, c-format
 msgid "%s is a function\n"
 msgstr "%s é uma função\n"
 
-#: builtins/type.def:316
+#: builtins/type.def:299
+#, c-format
+msgid "%s is a special shell builtin\n"
+msgstr "%s é opção interna especial da consola\n"
+
+#: builtins/type.def:301
 #, c-format
 msgid "%s is a shell builtin\n"
 msgstr "%s é opção interna da consola\n"
 
-#: builtins/type.def:338 builtins/type.def:425
+#: builtins/type.def:323 builtins/type.def:408
 #, c-format
 msgid "%s is %s\n"
 msgstr "%s é %s\n"
 
-#: builtins/type.def:358
+#: builtins/type.def:343
 #, c-format
 msgid "%s is hashed (%s)\n"
 msgstr "%s tem hash (%s)\n"
 
-#: builtins/ulimit.def:401
+#: builtins/ulimit.def:400
 #, c-format
 msgid "%s: invalid limit argument"
 msgstr "%s: argumento de limite inválido"
 
-#: builtins/ulimit.def:427
+#: builtins/ulimit.def:426
 #, c-format
 msgid "`%c': bad command"
 msgstr "\"%c\": comando errado"
 
-#: builtins/ulimit.def:463 builtins/ulimit.def:733
-#, fuzzy
-msgid "cannot get limit"
+#: builtins/ulimit.def:464
+#, c-format
+msgid "%s: cannot get limit: %s"
 msgstr "%s: impossível obter limite: %s"
 
-#: builtins/ulimit.def:496
+#: builtins/ulimit.def:490
 msgid "limit"
 msgstr "limite"
 
-#: builtins/ulimit.def:509 builtins/ulimit.def:797
-#, fuzzy
-msgid "cannot modify limit"
+#: builtins/ulimit.def:502 builtins/ulimit.def:802
+#, c-format
+msgid "%s: cannot modify limit: %s"
 msgstr "%s: impossível modificar limite: %s"
 
-#: builtins/umask.def:114
+#: builtins/umask.def:115
 msgid "octal number"
 msgstr "número octal"
 
-#: builtins/umask.def:256
+#: builtins/umask.def:232
 #, c-format
 msgid "`%c': invalid symbolic mode operator"
 msgstr "\"%c\": operador de modo simbólico inválido"
 
-#: builtins/umask.def:341
+#: builtins/umask.def:287
 #, c-format
 msgid "`%c': invalid symbolic mode character"
 msgstr "\"%c\": carácter de modo simbólico inválido"
 
-#: error.c:83 error.c:311 error.c:313 error.c:315
+#: error.c:89 error.c:373 error.c:375 error.c:377
 msgid " line "
 msgstr " linha "
 
-#: error.c:151
+#: error.c:164
 #, c-format
 msgid "last command: %s\n"
 msgstr "último comando: %s\n"
 
-#: error.c:159
+#: error.c:172
 #, c-format
 msgid "Aborting..."
 msgstr "A abortar..."
 
 #. TRANSLATORS: this is a prefix for informational messages.
-#: error.c:244
+#: error.c:287
 #, c-format
 msgid "INFORM: "
 msgstr "INFORM.: "
 
-#: error.c:261
-#, fuzzy, c-format
+#: error.c:310
+#, c-format
 msgid "DEBUG warning: "
-msgstr "aviso: "
+msgstr "Aviso de DEPURAÇÃO: "
 
-#: error.c:413
+#: error.c:488
 msgid "unknown command error"
 msgstr "erro de comando desconhecido"
 
-#: error.c:414
+#: error.c:489
 msgid "bad command type"
 msgstr "tipo de comando errado"
 
-#: error.c:415
+#: error.c:490
 msgid "bad connector"
 msgstr "conector errado"
 
-#: error.c:416
+#: error.c:491
 msgid "bad jump"
 msgstr "salto errado"
 
-#: error.c:449
+#: error.c:529
 #, c-format
 msgid "%s: unbound variable"
 msgstr "%s: variável desassociada"
 
-#: eval.c:256
+#: 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:606
-#, fuzzy
-msgid "cannot redirect standard input from /dev/null"
+#: 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:1404
+#: execute_cmd.c:1317
 #, c-format
 msgid "TIMEFORMAT: `%c': invalid format character"
 msgstr "FORMATOHORA: \"%c\": carácter de formato inválido"
 
-#: execute_cmd.c:2485
+#: 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:2639
+#: execute_cmd.c:2524
 msgid "pipe error"
 msgstr "erro de pipe"
 
-#: execute_cmd.c:4092
-#, c-format
-msgid "invalid regular expression `%s': %s"
-msgstr ""
-
-#: execute_cmd.c:4094
-#, c-format
-msgid "invalid regular expression `%s'"
-msgstr ""
-
-#: execute_cmd.c:5048
+#: 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:5061
+#: 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:5190
+#: 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:5728
-#, fuzzy
-msgid "command not found"
-msgstr "%s: comando não encontrado"
-
-#: execute_cmd.c:5757
+#: 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:6150
-#, fuzzy
-msgid "bad interpreter"
-msgstr "%s: %s: interpretador errado"
+#: execute_cmd.c:5715
+#, c-format
+msgid "%s: command not found"
+msgstr "%s: comando não encontrado"
+
+#: execute_cmd.c:5957
+#, c-format
+msgid "%s: %s"
+msgstr "%s: %s"
 
-#: execute_cmd.c:6159
-#, fuzzy, c-format
+#: execute_cmd.c:5975
+#, c-format
 msgid "%s: cannot execute: required file not found"
-msgstr "%s: impossível executar o binário"
+msgstr "%s: impossível executar: ficheiro requerido não encontrado"
 
-#: execute_cmd.c:6335
+#: execute_cmd.c:6000
+#, c-format
+msgid "%s: %s: bad interpreter"
+msgstr "%s: %s: interpretador errado"
+
+#: execute_cmd.c:6037
+#, c-format
+msgid "%s: cannot execute binary file: %s"
+msgstr "%s: impossível executar binário: %s"
+
+#: execute_cmd.c:6123
+#, c-format
+msgid "`%s': is a special builtin"
+msgstr "%s: é uma opção interna especial"
+
+#: execute_cmd.c:6175
 #, c-format
 msgid "cannot duplicate fd %d to fd %d"
 msgstr "impossível duplicar fd %d para fd %d"
 
-#: expr.c:265
+#: expr.c:263
 msgid "expression recursion level exceeded"
 msgstr "nível de recursão da expressão excedido"
 
-#: expr.c:293
+#: expr.c:291
 msgid "recursion stack underflow"
 msgstr "sub-fluxo da pilha de recursividade"
 
-#: expr.c:471
-#, fuzzy
-msgid "arithmetic syntax error in expression"
+#: expr.c:478
+msgid "syntax error in expression"
 msgstr "erro de sintaxe na expressão"
 
-#: expr.c:515
+#: expr.c:522
 msgid "attempted assignment to non-variable"
 msgstr "tentativa de atribuição a não-variável"
 
-#: expr.c:524
-#, fuzzy
-msgid "arithmetic syntax error in variable assignment"
+#: expr.c:531
+msgid "syntax error in variable assignment"
 msgstr "erro de sintaxe na atribuição de variável"
 
-#: expr.c:538 expr.c:905
+#: expr.c:545 expr.c:912
 msgid "division by 0"
 msgstr "divisão por 0"
 
-#: expr.c:586
+#: expr.c:593
 msgid "bug: bad expassign token"
 msgstr "problema: símbolo expassign errado"
 
-#: expr.c:640
+#: expr.c:647
 msgid "`:' expected for conditional expression"
 msgstr "\":\" esperados para expressão condicional"
 
-#: expr.c:967
+#: expr.c:973
 msgid "exponent less than 0"
 msgstr "expoente menor que 0"
 
-#: expr.c:1028
+#: expr.c:1030
 msgid "identifier expected after pre-increment or pre-decrement"
 msgstr "identificador esperado após pré-incremento ou pré-decremento"
 
-#: expr.c:1055
+#: expr.c:1057
 msgid "missing `)'"
 msgstr "\")\" em falta"
 
-#: expr.c:1106 expr.c:1489
-#, fuzzy
-msgid "arithmetic syntax error: operand expected"
+#: expr.c:1108 expr.c:1492
+msgid "syntax error: operand expected"
 msgstr "erro de sintaxe: operando esperado"
 
-#: expr.c:1450 expr.c:1471
-msgid "--: assignment requires lvalue"
-msgstr ""
-
-#: expr.c:1452 expr.c:1473
-msgid "++: assignment requires lvalue"
-msgstr ""
-
-#: expr.c:1491
-#, fuzzy
-msgid "arithmetic syntax error: invalid arithmetic operator"
+#: expr.c:1494
+msgid "syntax error: invalid arithmetic operator"
 msgstr "erro de sintaxe: operador aritmético inválido"
 
-#: expr.c:1514
+#: 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:1577
+#: expr.c:1578
 msgid "invalid arithmetic base"
 msgstr "base aritmética inválida"
 
-#: expr.c:1586
+#: expr.c:1587
 msgid "invalid integer constant"
 msgstr "constante inteira inválida"
 
-#: expr.c:1602
+#: expr.c:1603
 msgid "value too great for base"
 msgstr "valor muito grande para a base"
 
-#: expr.c:1653
+#: expr.c:1652
 #, c-format
 msgid "%s: expression error\n"
 msgstr "%s: erro de expressão\n"
@@ -1218,192 +1169,186 @@ msgstr "%s: erro de expressão\n"
 msgid "getcwd: cannot access parent directories"
 msgstr "getcwd: impossível aceder a pastas-mãe"
 
-#: general.c:459
-#, c-format
-msgid "`%s': is a special builtin"
-msgstr "%s: é uma opção interna especial"
-
-#: input.c:98 subst.c:6540
+#: 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"
 
-#: input.c:254
+#: 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:262
+#: input.c:274
 #, c-format
 msgid "save_bash_input: buffer already exists for new fd %d"
 msgstr "save_bash_input: buffer já existe para o novo fd %d"
 
-#: jobs.c:549
+#: jobs.c:543
 msgid "start_pipeline: pgrp pipe"
 msgstr "start_pipeline: pipe pgrp"
 
-#: jobs.c:910
+#: 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:962
+#: 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:1380
+#: 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:1496
+#: 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:1620
+#: 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:1949
+#: jobs.c:1839
 #, c-format
 msgid "describe_pid: %ld: no such pid"
 msgstr "describe_pid: %ld: pid não existente"
 
-#: jobs.c:1963
+#: jobs.c:1854
 #, c-format
 msgid "Signal %d"
 msgstr "Sinal %d"
 
-#: jobs.c:1974 jobs.c:2000
+#: jobs.c:1868 jobs.c:1894
 msgid "Done"
 msgstr "Feito"
 
-#: jobs.c:1979 siglist.c:123
+#: jobs.c:1873 siglist.c:123
 msgid "Stopped"
 msgstr "Interrompido"
 
-#: jobs.c:1983
+#: jobs.c:1877
 #, c-format
 msgid "Stopped(%s)"
 msgstr "Interrompido(%s)"
 
-#: jobs.c:1987
+#: jobs.c:1881
 msgid "Running"
 msgstr "Em execução"
 
-#: jobs.c:2004
+#: jobs.c:1898
 #, c-format
 msgid "Done(%d)"
 msgstr "Feito(%d)"
 
-#: jobs.c:2006
+#: jobs.c:1900
 #, c-format
 msgid "Exit %d"
 msgstr "Sair de %d"
 
-#: jobs.c:2009
+#: jobs.c:1903
 msgid "Unknown status"
 msgstr "Estado desconhecido"
 
-#: jobs.c:2105
+#: jobs.c:1990
 #, c-format
 msgid "(core dumped) "
 msgstr "(núcleo despejado) "
 
-#: jobs.c:2124
+#: jobs.c:2009
 #, c-format
 msgid "  (wd: %s)"
 msgstr "  (wd: %s)"
 
-#: jobs.c:2391
+#: jobs.c:2250
 #, c-format
 msgid "child setpgid (%ld to %ld)"
 msgstr "setpgid filho (%ld para %ld)"
 
-#: jobs.c:2753 nojobs.c:640
+#: 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:3049
+#: jobs.c:2884
 #, c-format
 msgid "wait_for: No record of process %ld"
 msgstr "wait_for: sem registo do processo %ld"
 
-#: jobs.c:3407
+#: jobs.c:3223
 #, c-format
 msgid "wait_for_job: job %d is stopped"
 msgstr "wait_for_tarefa: tarefa %d está interrompida"
 
-#: jobs.c:3835
+#: jobs.c:3551
 #, c-format
 msgid "%s: no current jobs"
 msgstr "%s: sem tarefas actuais"
 
-#: jobs.c:3842
+#: jobs.c:3558
 #, c-format
 msgid "%s: job has terminated"
 msgstr "%s: tarefa terminada"
 
-#: jobs.c:3851
+#: jobs.c:3567
 #, c-format
 msgid "%s: job %d already in background"
 msgstr "%s: tarefa %d já em 2º plano"
 
-#: jobs.c:4089
+#: jobs.c:3793
 msgid "waitchld: turning on WNOHANG to avoid indefinite block"
 msgstr "waitchld: a ligar WNOHANG para evitar bloquieo indefinido"
 
-#: jobs.c:4638
+#: jobs.c:4307
 #, c-format
 msgid "%s: line %d: "
 msgstr "%s: linha %d: "
 
-#: jobs.c:4654 nojobs.c:895
+#: jobs.c:4321 nojobs.c:921
 #, c-format
 msgid " (core dumped)"
 msgstr " (núcleo despejado)"
 
-#: jobs.c:4674 jobs.c:4694
+#: jobs.c:4333 jobs.c:4346
 #, c-format
 msgid "(wd now: %s)\n"
 msgstr "(wd agora: %s)\n"
 
-#: jobs.c:4738
+#: jobs.c:4378
 msgid "initialize_job_control: getpgrp failed"
 msgstr "initialize_job_control: getpgrp falhou"
 
-#: jobs.c:4794
+#: 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:4810
+#: jobs.c:4450
 msgid "initialize_job_control: line discipline"
 msgstr "initialize_job_control: disciplina de linha"
 
-#: jobs.c:4820
+#: jobs.c:4460
 msgid "initialize_job_control: setpgid"
 msgstr "initialize_job_control: setpgid"
 
-#: jobs.c:4841 jobs.c:4850
+#: 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:4855
+#: jobs.c:4495
 msgid "no job control in this shell"
 msgstr "não há controlo de tarefa nesta consola"
 
-#: lib/malloc/malloc.c:364
+#: lib/malloc/malloc.c:367
 #, c-format
 msgid "malloc: failed assertion: %s\n"
 msgstr "malloc: asserção falhada: %s\n"
 
-#: lib/malloc/malloc.c:375
+#: lib/malloc/malloc.c:383
 #, c-format
 msgid ""
 "\r\n"
@@ -1412,392 +1357,376 @@ msgstr ""
 "\r\n"
 "malloc: %s:%d: asserção frustrada\r\n"
 
-#: lib/malloc/malloc.c:376 lib/malloc/malloc.c:925
+#: lib/malloc/malloc.c:384 lib/malloc/malloc.c:941
 msgid "unknown"
 msgstr "desconhecido"
 
-#: lib/malloc/malloc.c:876
+#: lib/malloc/malloc.c:892
 msgid "malloc: block on free list clobbered"
 msgstr "malloc: bloqueio na lista livre clobbered"
 
-#: lib/malloc/malloc.c:961
+#: 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:964
+#: 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:982
+#: 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:988
+#: lib/malloc/malloc.c:1007
 msgid "free: underflow detected; magic8 corrupted"
 msgstr "free: sub-fluxo detectado; magic8 corrompido"
 
-#: lib/malloc/malloc.c:995
+#: 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:1155
+#: 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:1170
+#: 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:1176
+#: lib/malloc/malloc.c:1197
 msgid "realloc: underflow detected; magic8 corrupted"
 msgstr "realloc: sub-fluxo detectado; magic8 corrompido"
 
-#: lib/malloc/malloc.c:1184
+#: lib/malloc/malloc.c:1205
 msgid "realloc: start and end chunk sizes differ"
 msgstr "realloc: tamanho dos pontos inicial e final difere"
 
-#: lib/malloc/table.c:179
+#: lib/malloc/table.c:191
 #, c-format
 msgid "register_alloc: alloc table is full with FIND_ALLOC?\n"
 msgstr "register_alloc: tabela de alocação cheia com FIND_ALLOC?\n"
 
-#: lib/malloc/table.c:188
+#: lib/malloc/table.c:200
 #, c-format
 msgid "register_alloc: %p already in table as allocated?\n"
 msgstr "register_alloc: %p já na tabela como alocado?\n"
 
-#: lib/malloc/table.c:237
+#: lib/malloc/table.c:253
 #, c-format
 msgid "register_free: %p already in table as free?\n"
 msgstr "register_free: %p já na tabela como livre?\n"
 
-#: lib/sh/fmtulong.c:90
+#: lib/sh/fmtulong.c:102
 msgid "invalid base"
 msgstr "base inválida"
 
-#: lib/sh/netopen.c:161
+#: lib/sh/netopen.c:168
 #, c-format
 msgid "%s: host unknown"
 msgstr "%s: anfitrião desconhecido"
 
-#: lib/sh/netopen.c:168
+#: lib/sh/netopen.c:175
 #, c-format
 msgid "%s: invalid service"
 msgstr "%s: serviço inválido"
 
-#: lib/sh/netopen.c:294
+#: lib/sh/netopen.c:306
 #, c-format
 msgid "%s: bad network path specification"
 msgstr "%s: especificação de caminho de rede errada"
 
-#: lib/sh/netopen.c:332
+#: lib/sh/netopen.c:347
 msgid "network operations not supported"
 msgstr "operações de rede não suportadas"
 
-#: locale.c:226 locale.c:228 locale.c:301 locale.c:303
-#, fuzzy
-msgid "cannot change locale"
+#: 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: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:294
+#, c-format
+msgid "setlocale: %s: cannot change locale (%s)"
 msgstr "setlocale: %s: não pode alterar o idioma (%s)"
 
-#: mailcheck.c:435
+#: locale.c:296
+#, c-format
+msgid "setlocale: %s: cannot change locale (%s): %s"
+msgstr "setlocale: %s: não pode alterar o idioma (%s): %s"
+
+#: mailcheck.c:439
 msgid "You have mail in $_"
 msgstr "Tem correio em $_"
 
-#: mailcheck.c:460
+#: mailcheck.c:464
 msgid "You have new mail in $_"
 msgstr "Tem novo correio em $_"
 
-#: mailcheck.c:476
+#: mailcheck.c:480
 #, c-format
 msgid "The mail in %s has been read\n"
 msgstr "O correio em %s já foi lido\n"
 
-#: make_cmd.c:286
+#: make_cmd.c:314
 msgid "syntax error: arithmetic expression required"
 msgstr "erro de sintaxe: requerida expressão aritmética"
 
-#: make_cmd.c:288
+#: make_cmd.c:316
 msgid "syntax error: `;' unexpected"
 msgstr "erro de sintaxe: \";\" inesperado"
 
-#: make_cmd.c:289
+#: make_cmd.c:317
 #, c-format
 msgid "syntax error: `((%s))'"
 msgstr "erro de sintaxe: \"((%s))\""
 
-#: make_cmd.c:523
+#: 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:627
+#: 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:722
+#: 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:2572
+#: 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:2864
-#, fuzzy
-msgid "script file read error"
-msgstr "erro de escrita: %s"
-
-#: parse.y:3101
+#: parse.y:2921
 msgid "maximum here-document count exceeded"
 msgstr "total here-document máximo excedido"
 
-#: parse.y:3901 parse.y:4799 parse.y:6853
+#: 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:5006
+#: parse.y:4452
 msgid "unexpected EOF while looking for `]]'"
 msgstr "EOF inesperado ao procurar \"]]\""
 
-#: parse.y:5011
+#: 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:5015
+#: parse.y:4461
 msgid "syntax error in conditional expression"
 msgstr "erro de sintaxe em expressão condicional"
 
-#: parse.y:5093
+#: parse.y:4539
 #, c-format
 msgid "unexpected token `%s', expected `)'"
 msgstr "símbolo inesperado \"%s\", esperado \")\""
 
-#: parse.y:5097
+#: parse.y:4543
 msgid "expected `)'"
 msgstr "esperado \")\""
 
-#: parse.y:5127
+#: parse.y:4571
 #, c-format
 msgid "unexpected argument `%s' to conditional unary operator"
 msgstr "argumento \"%s\" inesperado para operador unário condicional"
 
-#: parse.y:5131
+#: parse.y:4575
 msgid "unexpected argument to conditional unary operator"
 msgstr "argumento inesperado para operador unário condicional"
 
-#: parse.y:5178
+#: 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:5182
+#: parse.y:4625
 msgid "conditional binary operator expected"
 msgstr "esperado operador binário condicional"
 
-#: parse.y:5211
+#: parse.y:4647
 #, c-format
 msgid "unexpected argument `%s' to conditional binary operator"
 msgstr "argumento \"%s\" inesperado para operador binário condicional"
 
-#: parse.y:5215
+#: parse.y:4651
 msgid "unexpected argument to conditional binary operator"
 msgstr "argumento inesperado para operador binário condicional"
 
-#: parse.y:5226
+#: parse.y:4662
 #, c-format
 msgid "unexpected token `%c' in conditional command"
 msgstr "símbolo \"%c\" inesperado em comando condicional"
 
-#: parse.y:5229
+#: parse.y:4665
 #, c-format
 msgid "unexpected token `%s' in conditional command"
 msgstr "símbolo \"%s\" inesperado em comando condicional"
 
-#: parse.y:5233
+#: parse.y:4669
 #, c-format
 msgid "unexpected token %d in conditional command"
 msgstr "símbolo %d inesperado em comando condicional"
 
-#: parse.y:6821
-#, fuzzy, c-format
-msgid "syntax error near unexpected token `%s' while looking for matching `%c'"
-msgstr "EOF inesperado ao procurar \"%c\" correspondentes"
-
-#: parse.y:6823
+#: parse.y:6118
 #, c-format
 msgid "syntax error near unexpected token `%s'"
 msgstr "erro de sintaxe junto a símbolo \"%s\" inesperado"
 
-#: parse.y:6842
+#: parse.y:6137
 #, c-format
 msgid "syntax error near `%s'"
 msgstr "erro de sintaxe junto a \"%s\""
 
-#: parse.y:6861
-#, fuzzy, c-format
-msgid "syntax error: unexpected end of file from `%s' command on line %d"
-msgstr "erro de sintaxe: fim de ficheiro inesperado"
-
-#: parse.y:6863
-#, fuzzy, c-format
-msgid "syntax error: unexpected end of file from command on line %d"
-msgstr "erro de sintaxe: fim de ficheiro inesperado"
-
-#: parse.y:6867
+#: parse.y:6151
 msgid "syntax error: unexpected end of file"
 msgstr "erro de sintaxe: fim de ficheiro inesperado"
 
-#: parse.y:6867
+#: parse.y:6151
 msgid "syntax error"
 msgstr "erro de sintaxe"
 
-#: parse.y:6916
+#: parse.y:6216
 #, c-format
 msgid "Use \"%s\" to leave the shell.\n"
 msgstr "Use \"%s\" para sair da consola.\n"
 
-#: parse.y:7114
+#: parse.y:6394
 msgid "unexpected EOF while looking for matching `)'"
 msgstr "EOF inesperado ao procurar o \")\" correspondente"
 
-#: pathexp.c:897
-#, fuzzy
-msgid "invalid glob sort type"
-msgstr "base inválida"
-
-#: pcomplete.c:1070
+#: pcomplete.c:1132
 #, c-format
 msgid "completion: function `%s' not found"
 msgstr "completion: função \"%s\" não encontrada"
 
-#: pcomplete.c:1654
+#: pcomplete.c:1722
 #, c-format
 msgid "programmable_completion: %s: possible retry loop"
 msgstr "programmable_completion: %s: possível ciclo de repetição"
 
-#: pcomplib.c:176
+#: pcomplib.c:182
 #, c-format
 msgid "progcomp_insert: %s: NULL COMPSPEC"
 msgstr "progcomp_insert: %s: NULL COMPSPEC"
 
-#: print_cmd.c:324
+#: print_cmd.c:302
 #, c-format
 msgid "print_command: bad connector `%d'"
 msgstr "print_command: conector \"%d\" errado"
 
-#: print_cmd.c:399
+#: print_cmd.c:375
 #, c-format
 msgid "xtrace_set: %d: invalid file descriptor"
 msgstr "xtrace_set: %d: descritor de ficheiro inválido"
 
-#: print_cmd.c:404
+#: print_cmd.c:380
 msgid "xtrace_set: NULL file pointer"
 msgstr "xtrace_set: ponteiro de ficheiro NULL"
 
-#: print_cmd.c:408
+#: 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:1597
+#: print_cmd.c:1545
 #, c-format
 msgid "cprintf: `%c': invalid format character"
 msgstr "cprintf: \"%c\": carácter de formato inválido"
 
-#: redir.c:145 redir.c:193
+#: redir.c:150 redir.c:198
 msgid "file descriptor out of range"
 msgstr "descritor de ficheiro fora de alcance"
 
-#: redir.c:200
-#, fuzzy
-msgid "ambiguous redirect"
+#: redir.c:205
+#, c-format
+msgid "%s: ambiguous redirect"
 msgstr "%s: redireccionamento ambíguo"
 
-#: redir.c:204
-#, fuzzy
-msgid "cannot overwrite existing file"
+#: redir.c:209
+#, c-format
+msgid "%s: cannot overwrite existing file"
 msgstr "%s: impossível sobrescrever ficheiro existente"
 
-#: redir.c:209
-#, fuzzy
-msgid "restricted: cannot redirect output"
+#: redir.c:214
+#, c-format
+msgid "%s: restricted: cannot redirect output"
 msgstr "%s: restricto: impossível redireccionar saída"
 
-#: redir.c:214
-#, fuzzy
-msgid "cannot create temp file for here-document"
+#: 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:218
-#, fuzzy
-msgid "cannot assign fd to variable"
+#: redir.c:223
+#, c-format
+msgid "%s: cannot assign fd to variable"
 msgstr "%s: impossível atribuir fd a variável"
 
-#: redir.c:633
+#: 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:937 redir.c:1051 redir.c:1109 redir.c:1273
+#: 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:359
+#: shell.c:353
 msgid "could not find /tmp, please create!"
 msgstr "impossível encontrar /tmp, por favor crie-a!"
 
-#: shell.c:363
+#: shell.c:357
 msgid "/tmp must be a valid directory name"
 msgstr "/tmp tem de ser um nome de pasta válido"
 
-#: shell.c:827
+#: shell.c:826
 msgid "pretty-printing mode ignored in interactive shells"
 msgstr "modo pretty-printing ignorado em consolas interactivas"
 
-#: shell.c:969
+#: shell.c:972
 #, c-format
 msgid "%c%c: invalid option"
 msgstr "%c%c: opção inválida"
 
-#: shell.c:1357
+#: 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:1373
+#: 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:1562
+#: shell.c:1544
 msgid "cannot start debugger; debugging mode disabled"
 msgstr "impossível iniciar o depurador; modo de depuração desactivado"
 
-#: shell.c:1675
+#: shell.c:1658
 #, c-format
 msgid "%s: Is a directory"
 msgstr "%s: é uma pasta"
 
-#: shell.c:1891
+#: shell.c:1907
 msgid "I have no name!"
 msgstr "Não tenho nome!"
 
-#: shell.c:2055
+#: shell.c:2061
 #, c-format
 msgid "GNU bash, version %s-(%s)\n"
 msgstr "GNU bash, versão %s-(%s)\n"
 
-#: shell.c:2056
+#: shell.c:2062
 #, c-format
 msgid ""
 "Usage:\t%s [GNU long option] [option] ...\n"
@@ -1806,52 +1735,49 @@ msgstr ""
 "Uso:\t%s [opção longa GNU] [opção] ...\n"
 "\t%s [opção longa GNU] [opção] script-file ...\n"
 
-#: shell.c:2058
+#: shell.c:2064
 msgid "GNU long options:\n"
 msgstr "Opções longas GNU:\n"
 
-#: shell.c:2062
+#: shell.c:2068
 msgid "Shell options:\n"
 msgstr "Opções da consola:\n"
 
-#: shell.c:2063
+#: 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:2082
+#: shell.c:2088
 #, c-format
 msgid "\t-%s or -o option\n"
 msgstr "\topção -%s ou -o\n"
 
-#: shell.c:2088
+#: 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:2089
+#: 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:2090
+#: 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:2092
+#: 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:2093
+#: 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:808
+#: sig.c:765
 #, c-format
 msgid "sigprocmask: %d: invalid operation"
 msgstr "sigprocmask: %d: operação inválida"
@@ -2021,308 +1947,282 @@ msgstr "Pedido de informação"
 msgid "Unknown Signal #%d"
 msgstr "Sinal desconhecido #%d"
 
-#: subst.c:1501 subst.c:1793 subst.c:1999
+#: 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:3599
+#: 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:6379 subst.c:6395
+#: 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:6455
+#: subst.c:6124
 msgid "cannot make child for process substitution"
 msgstr "impossível fazer filho para substituição de processo"
 
-#: subst.c:6530
+#: subst.c:6198
 #, c-format
 msgid "cannot open named pipe %s for reading"
 msgstr "impossível abrir pipe chamado %s para leitura"
 
-#: subst.c:6532
+#: subst.c:6200
 #, c-format
 msgid "cannot open named pipe %s for writing"
 msgstr "impossível abrir pipe chamado %s para escrita"
 
-#: subst.c:6555
+#: 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:6721
+#: subst.c:6370
 msgid "command substitution: ignored null byte in input"
 msgstr "substituição de comando: byte nulo ignorado na entrada"
 
-#: subst.c:6960
-msgid "function_substitute: cannot open anonymous file for output"
-msgstr ""
-
-#: subst.c:7034
-#, fuzzy
-msgid "function_substitute: cannot duplicate anonymous file as standard output"
-msgstr "command_substitute: impossível duplicar pipe como fd 1"
-
-#: subst.c:7208 subst.c:7229
+#: subst.c:6533
 msgid "cannot make pipe for command substitution"
 msgstr "impossível fazer pipe para substituição de comando"
 
-#: subst.c:7280
+#: subst.c:6580
 msgid "cannot make child for command substitution"
 msgstr "impossível fazer filho para substituição de comando"
 
-#: subst.c:7313
+#: subst.c:6613
 msgid "command_substitute: cannot duplicate pipe as fd 1"
 msgstr "command_substitute: impossível duplicar pipe como fd 1"
 
-#: subst.c:7802 subst.c:10978
+#: 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:7895 subst.c:7913 subst.c:8089
+#: 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:7929 subst.c:8097
+#: subst.c:7212 subst.c:7377
 #, c-format
 msgid "%s: invalid variable name"
 msgstr "%s: nome de variável inválido"
 
-#: subst.c:8114 subst.c:10260 subst.c:10287
-#, c-format
-msgid "%s: bad substitution"
-msgstr "%s: má substituição"
-
-#: subst.c:8213
+#: subst.c:7478
 #, c-format
 msgid "%s: parameter not set"
 msgstr "%s: parâmetro não definido"
 
-#: subst.c:8469 subst.c:8484
+#: subst.c:7480
+#, c-format
+msgid "%s: parameter null or not set"
+msgstr "%s: parâmetro nulo ou não definido"
+
+#: subst.c:7727 subst.c:7742
 #, c-format
 msgid "%s: substring expression < 0"
 msgstr "%s: expressão de sub-cadeia < 0"
 
-#: subst.c:10386
+#: subst.c:9560 subst.c:9587
+#, c-format
+msgid "%s: bad substitution"
+msgstr "%s: má substituição"
+
+#: subst.c:9678
 #, c-format
 msgid "$%s: cannot assign in this way"
 msgstr "$%s: impossível atribuir desta forma"
 
-#: subst.c:10844
-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:11552
+#: subst.c:10795
 #, c-format
 msgid "bad substitution: no closing \"`\" in %s"
 msgstr "má substituição: sem \"\"\" de fecho em %s"
 
-#: subst.c:12626
+#: subst.c:11874
 #, c-format
 msgid "no match: %s"
 msgstr "sem par:%s"
 
-#: test.c:156
+#: test.c:147
 msgid "argument expected"
 msgstr "argumento esperado"
 
-#: test.c:164
-#, fuzzy, c-format
-msgid "%s: integer expected"
+#: test.c:156
+#, c-format
+msgid "%s: integer expression expected"
 msgstr "%s: expressão inteira esperada"
 
-#: test.c:292
+#: test.c:265
 msgid "`)' expected"
 msgstr "\")\" esperado"
 
-#: test.c:294
+#: test.c:267
 #, c-format
 msgid "`)' expected, found %s"
 msgstr "\")\" esperado, encontrado %s"
 
-#: test.c:488 test.c:831
+#: test.c:469 test.c:814
 #, c-format
 msgid "%s: binary operator expected"
 msgstr "%s: operador bináro esperado"
 
-#: test.c:792 test.c:795
+#: test.c:771 test.c:774
 #, c-format
 msgid "%s: unary operator expected"
 msgstr "%s: operador unáro esperado"
 
-#: test.c:944
+#: test.c:896
+msgid "missing `]'"
+msgstr "\"]\" em falta"
+
+#: test.c:914
 #, c-format
 msgid "syntax error: `%s' unexpected"
 msgstr "erro de sintaxe: \"%s\" esperado"
 
-#: trap.c:225
+#: trap.c:220
 msgid "invalid signal number"
 msgstr "número de sinal inválido"
 
-#: trap.c:358
+#: 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:455
+#: 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:459
+#: 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:592
+#: trap.c:509
 #, c-format
 msgid "trap_handler: bad signal %d"
 msgstr "trap_handler: sinal errado %d"
 
-#: unwind_prot.c:246 unwind_prot.c:292
-#, fuzzy
-msgid "frame not found"
-msgstr "%s: ficheiro não encontrado"
-
-#: variables.c:441
+#: 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:864
+#: 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:2191 variables.c:2220 variables.c:2278 variables.c:2297
-#: variables.c:2315 variables.c:2350 variables.c:2378 variables.c:2405
-#: variables.c:2431 variables.c:3274 variables.c:3282 variables.c:3797
-#: variables.c:3841
-#, fuzzy, c-format
-msgid "%s: maximum nameref depth (%d) exceeded"
-msgstr "total here-document máximo excedido"
-
-#: variables.c:2641
+#: 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:2660
+#: 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:2831 variables.c:2884
+#: variables.c:2818 variables.c:2874
 #, c-format
 msgid "%s: cannot inherit value from incompatible type"
-msgstr ""
+msgstr "%s: impossível herdar valor de tipo incompatível"
 
-#: variables.c:3437
+#: variables.c:3459
 #, c-format
 msgid "%s: assigning integer to name reference"
 msgstr "%s: a atribuir inteiro à referência de nome"
 
-#: variables.c:4387
+#: 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:4791
+#: variables.c:4757
 #, c-format
 msgid "%s has null exportstr"
 msgstr "%s tem exportstr nulo"
 
-#: variables.c:4796 variables.c:4805
+#: 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:4811
+#: variables.c:4777
 #, c-format
 msgid "no `=' in exportstr for %s"
 msgstr "sem \"=\" em exportstr para %s"
 
-#: variables.c:5329
+#: 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:5342
+#: variables.c:5330
 msgid "pop_var_context: no global_variables context"
 msgstr "pop_var_context: sem contexto de global_variables"
 
-#: variables.c:5432
+#: 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:6423
+#: variables.c:6400
 #, c-format
 msgid "%s: %s: cannot open as FILE"
 msgstr "%s: %s: impossível abrir como FICHEIRO"
 
-#: variables.c:6428
+#: 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:6472
+#: variables.c:6450
 #, c-format
 msgid "%s: %s: compatibility value out of range"
 msgstr "%s: %s: valor de compatibilidade fora do intervalo"
 
-#: version.c:50
-#, fuzzy
-msgid "Copyright (C) 2024 Free Software Foundation, Inc."
-msgstr "Copyright (C) 2020 Free Software Foundation, Inc."
+#: version.c:46 version2.c:46
+msgid "Copyright (C) 2022 Free Software Foundation, Inc."
+msgstr "Copyright (C) 2022 Free Software Foundation, Inc."
 
-#: version.c:51
-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: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"
 
-#: version.c:90
+#: version.c:86 version2.c:86
 #, c-format
 msgid "GNU bash, version %s (%s)\n"
 msgstr "GNU bash, versão %s (%s)\n"
 
-#: version.c:95
+#: version.c:91 version2.c:91
 msgid "This is free software; you are free to change and redistribute it."
 msgstr "Este é um programa gratuito; pode alterá-lo e distribuí-lo à vontade."
 
-#: version.c:96
+#: version.c:92 version2.c:92
 msgid "There is NO WARRANTY, to the extent permitted by law."
 msgstr "Não há QUALQUER GARANTIA, até aos limites previstos pela Lei."
 
-#: xmalloc.c:84
+#: xmalloc.c:93
 #, c-format
 msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: impossível alocar %lu bytes (%lu bytes alocados)"
 
-#: xmalloc.c:86
+#: xmalloc.c:95
 #, c-format
 msgid "%s: cannot allocate %lu bytes"
 msgstr "%s: impossível alocar %lu bytes"
 
-#: xmalloc.c:164
+#: xmalloc.c:165
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
 msgstr "%s: %s:%d: impossível alocar %lu bytes (%lu bytes alocados)"
 
-#: xmalloc.c:166
+#: xmalloc.c:167
 #, c-format
 msgid "%s: %s:%d: cannot allocate %lu bytes"
 msgstr "%s: %s:%d: impossível alocar %lu bytes"
@@ -2336,13 +2236,8 @@ 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]"
@@ -2361,8 +2256,7 @@ msgid "caller [expr]"
 msgstr "caller [expr]"
 
 #: builtins.c:66
-#, fuzzy
-msgid "cd [-L|[-P [-e]]] [-@] [dir]"
+msgid "cd [-L|[-P [-e]] [-@]] [dir]"
 msgstr "cd [-L|[-P [-e]] [-@]] [pst]"
 
 #: builtins.c:68
@@ -2374,18 +2268,12 @@ msgid "command [-pVv] command [arg ...]"
 msgstr "comando [-pVv] comando [arg ...]"
 
 #: builtins.c:78
-#, fuzzy
-msgid ""
-"declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] "
-"[name ...]"
-msgstr "declare [-aAfFgiIlnrtux] [-p] [nome[=valor] ...]"
+msgid "declare [-aAfFgiIlnrtux] [name[=value] ...] or declare -p [-aAfFilnrtux] [name ...]"
+msgstr "declare [-aAfFgiIlnrtux] [name[=value] ...] ou declare -p [-aAfFilnrtux] [name ...]"
 
 #: builtins.c:80
-#, fuzzy
-msgid ""
-"typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] "
-"[name ...]"
-msgstr "typeset [-aAfFgiIlnrtux] [-p] nome[=valor] ..."
+msgid "typeset [-aAfFgiIlnrtux] name[=value] ... or typeset -p [-aAfFilnrtux] [name ...]"
+msgstr "typeset [-aAfFgiIlnrtux] name[=value] ... ou typeset -p [-aAfFilnrtux] [name ...]"
 
 #: builtins.c:82
 msgid "local [option] name[=value] ..."
@@ -2444,12 +2332,8 @@ 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]"
@@ -2460,34 +2344,24 @@ 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
-#, fuzzy
-msgid ""
-"read [-Eers] [-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
-#, fuzzy
 msgid "set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]"
-msgstr "set [-abefhkmnptuvxBCHP] [-o nome-opção] [--] [arg ...]"
+msgstr "set [-abefhkmnptuvxBCEHPT] [-o nome-opção] [--] [-] [arg ...]"
 
 #: builtins.c:144
 msgid "unset [-f] [-v] [-n] [name ...]"
@@ -2506,13 +2380,11 @@ msgid "shift [n]"
 msgstr "shift [n]"
 
 #: builtins.c:152
-#, fuzzy
-msgid "source [-p path] filename [arguments]"
+msgid "source filename [arguments]"
 msgstr "source ficheiro [argumentos]"
 
 #: builtins.c:154
-#, fuzzy
-msgid ". [-p path] filename [arguments]"
+msgid ". filename [arguments]"
 msgstr ". ficheiro [argumentos]"
 
 #: builtins.c:157
@@ -2528,8 +2400,7 @@ msgid "[ arg... ]"
 msgstr "[ arg... ]"
 
 #: builtins.c:166
-#, fuzzy
-msgid "trap [-Plp] [[action] signal_spec ...]"
+msgid "trap [-lp] [[arg] signal_spec ...]"
 msgstr "trap [-lp] [[arg] signal_spec ...]"
 
 #: builtins.c:168
@@ -2537,9 +2408,8 @@ msgid "type [-afptP] name [name ...]"
 msgstr "type [-afptP] nome [nome ...]"
 
 #: builtins.c:171
-#, fuzzy
 msgid "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limit]"
-msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limite]"
+msgstr "ulimit [-SHabcdefiklmnpqrstuvxPRT] [limite]"
 
 #: builtins.c:174
 msgid "umask [-p] [-S] [mode]"
@@ -2554,137 +2424,106 @@ msgid "wait [pid ...]"
 msgstr "wait [pid ...]"
 
 #: builtins.c:184
-msgid "! PIPELINE"
-msgstr ""
-
-#: builtins.c:186
 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done"
 msgstr "for NOME [in PALAVRAS ... ] ; do COMANDOS; done"
 
-#: builtins.c:188
+#: builtins.c:186
 msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done"
 msgstr "for (( exp1; exp2; exp3 )); do COMANDOS; done"
 
-#: builtins.c:190
+#: builtins.c:188
 msgid "select NAME [in WORDS ... ;] do COMMANDS; done"
 msgstr "select NOME [in PALAVRAS ... ;] do COMANDOS; done"
 
-#: builtins.c:192
+#: builtins.c:190
 msgid "time [-p] pipeline"
 msgstr "time [-p] pipeline"
 
-#: builtins.c:194
+#: builtins.c:192
 msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac"
 msgstr "case PALAVRA in [PADRÃO [| PADRÃO]...) COMANDOS ;;]... esac"
 
-#: builtins.c:196
-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:194
+msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi"
+msgstr "if COMANDOS; then COMANDOS; [ elif COMANDOS; then COMANDOS; ]... [ else COMANDOS; ] fi"
 
-#: builtins.c:198
-#, fuzzy
+#: builtins.c:196
 msgid "while COMMANDS; do COMMANDS-2; done"
-msgstr "while COMANDOS; do COMANDOS; done"
+msgstr "while COMMANDS; do COMMANDS-2; done"
 
-#: builtins.c:200
-#, fuzzy
+#: builtins.c:198
 msgid "until COMMANDS; do COMMANDS-2; done"
-msgstr "until COMANDOS; do COMANDOS; done"
+msgstr "until COMMANDS; do COMMANDS-2; done"
 
-#: builtins.c:202
+#: builtins.c:200
 msgid "coproc [NAME] command [redirections]"
 msgstr "coproc [NOME] comando [redireccionamentos]"
 
-#: builtins.c:204
+#: builtins.c:202
 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }"
 msgstr "nome de função { COMANDOS ; } ou nome () { COMANDOS ; }"
 
-#: builtins.c:206
+#: builtins.c:204
 msgid "{ COMMANDS ; }"
 msgstr "{ COMANDOS ; }"
 
-#: builtins.c:208
+#: builtins.c:206
 msgid "job_spec [&]"
 msgstr "job_spec [&]"
 
-#: builtins.c:210
+#: builtins.c:208
 msgid "(( expression ))"
 msgstr "(( expressão ))"
 
-#: builtins.c:212
+#: builtins.c:210
 msgid "[[ expression ]]"
 msgstr "[[ expressão ]]"
 
-#: builtins.c:214
+#: builtins.c:212
 msgid "variables - Names and meanings of some shell variables"
 msgstr "variáveis - nomes e significados de algumas variáveis da consola"
 
-#: builtins.c:217
+#: builtins.c:215
 msgid "pushd [-n] [+N | -N | dir]"
 msgstr "pushd [-n] [+N | -N | pasta]"
 
-#: builtins.c:221
+#: builtins.c:219
 msgid "popd [-n] [+N | -N]"
 msgstr "popd [-n] [+N | -N]"
 
-#: builtins.c:225
+#: builtins.c:223
 msgid "dirs [-clpv] [+N] [-N]"
 msgstr "dirs [-clpv] [+N] [-N]"
 
-#: builtins.c:228
+#: builtins.c:226
 msgid "shopt [-pqsu] [-o] [optname ...]"
 msgstr "shopt [-pqsu] [-o] [nomeopção ...]"
 
-#: builtins.c:230
+#: builtins.c:228
 msgid "printf [-v var] format [arguments]"
 msgstr "printf [-v var] formato [argumentos]"
 
-#: builtins.c:233
-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: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 ...]"
 
-#: builtins.c:237
-#, fuzzy
-msgid ""
-"compgen [-V varname] [-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: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]"
 
-#: builtins.c:241
+#: builtins.c:239
 msgid "compopt [-o|+o option] [-DEI] [name ...]"
 msgstr "compopt [-o|+o opção] [-DEI] [nome ...]"
 
-#: builtins.c:244
-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:242
+msgid "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]"
+msgstr "mapfile [-d delim] [-n total] [-O origem] [-s total] [-t] [-u fd] [-C callback] [-c quantia] [matriz]"
 
-#: builtins.c:246
-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: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]"
 
-#: builtins.c:258
+#: builtins.c:256
 msgid ""
 "Define or display aliases.\n"
 "    \n"
@@ -2699,8 +2538,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 ""
 "Definir ou mostrar aliás.\n"
@@ -2716,11 +2554,10 @@ 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:280
+#: builtins.c:278
 msgid ""
 "Remove each NAME from the list of defined aliases.\n"
 "    \n"
@@ -2736,8 +2573,7 @@ msgstr ""
 "    \n"
 "    Devolve sucesso a não ser que NOME seja um aliás inexistente."
 
-#: builtins.c:293
-#, fuzzy
+#: builtins.c:291
 msgid ""
 "Set Readline key bindings and variables.\n"
 "    \n"
@@ -2749,91 +2585,65 @@ 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"
-"    If arguments remain after option processing, the -p and -P options "
-"treat\n"
-"    them as readline command names and restrict output to those names.\n"
-"    \n"
 "    Exit Status:\n"
 "    bind returns 0 unless an unrecognized option is given or an error occurs."
 msgstr ""
 "Definir associações de teclas e variáveis para Readline.\n"
 "    \n"
 "    Associar uma sequência de teclas a uma função ou macro Readline, ou\n"
-"    defina uma variável Readline. A sintaxe de argumento não-opção é "
-"equivalente\n"
-"    à encontrada em ~/.inputrc, mas tem de ser passada como argumento "
-"único:\n"
+"    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:335
+#: builtins.c:330
 msgid ""
 "Exit for, while, or until loops.\n"
 "    \n"
@@ -2845,14 +2655,13 @@ 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"
 "     O estado de saída é 0 a não ser que N não seja maior ou igual que 1."
 
-#: builtins.c:347
+#: builtins.c:342
 msgid ""
 "Resume for, while, or until loops.\n"
 "    \n"
@@ -2870,14 +2679,13 @@ msgstr ""
 "     Estado de saída:\n"
 "     O estado de saída é 0 a não ser que N não seja maior ou igual que 1."
 
-#: builtins.c:359
+#: 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"
@@ -2885,18 +2693,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:374
+#: builtins.c:369
 msgid ""
 "Return the context of the current subroutine call.\n"
 "    \n"
@@ -2921,31 +2726,23 @@ 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:392
-#, fuzzy
+#: builtins.c:387
 msgid ""
 "Change the shell working directory.\n"
 "    \n"
-"    Change the current directory to DIR.  The default DIR is the value of "
-"the\n"
-"    HOME shell variable. If DIR is \"-\", it is converted to $OLDPWD.\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"
@@ -2961,32 +2758,25 @@ 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"
@@ -2998,22 +2788,18 @@ 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:430
+#: builtins.c:425
 msgid ""
 "Print the name of the current working directory.\n"
 "    \n"
@@ -3035,15 +2821,13 @@ 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:447
+#: builtins.c:442
 msgid ""
 "Null command.\n"
 "    \n"
@@ -3059,7 +2843,7 @@ msgstr ""
 "     Estado de saída:\n"
 "     Sempre com sucesso."
 
-#: builtins.c:458
+#: builtins.c:453
 msgid ""
 "Return a successful result.\n"
 "    \n"
@@ -3071,7 +2855,7 @@ msgstr ""
 "     Estado de saída:\n"
 "     Sempre com sucesso."
 
-#: builtins.c:467
+#: builtins.c:462
 msgid ""
 "Return an unsuccessful result.\n"
 "    \n"
@@ -3083,13 +2867,12 @@ msgstr ""
 "     Estado de saída:\n"
 "     Falha sempre."
 
-#: builtins.c:476
+#: 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"
@@ -3103,26 +2886,20 @@ 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:495
-#, fuzzy
+#: builtins.c:490
 msgid ""
 "Set variable values and attributes.\n"
 "    \n"
@@ -3150,14 +2927,12 @@ msgid ""
 "      -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, except for a,\n"
-"    A, and r.\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"
+"    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"
@@ -3173,8 +2948,7 @@ 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"
@@ -3196,16 +2970,14 @@ 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:538
+#: builtins.c:532
 msgid ""
 "Set variable values and attributes.\n"
 "    \n"
@@ -3215,17 +2987,13 @@ msgstr ""
 "     \n"
 "     Um sinónimo para \"declare\".  Veja \"help declare\"."
 
-#: builtins.c:546
-#, fuzzy
+#: builtins.c:540
 msgid ""
 "Define local variables.\n"
 "    \n"
 "    Create a local variable called NAME, and give it VALUE.  OPTION can\n"
 "    be any option accepted by `declare'.\n"
 "    \n"
-"    If any NAME is \"-\", local saves the set of shell options and restores\n"
-"    them when the function returns.\n"
-"    \n"
 "    Local variables can only be used within a function; they are visible\n"
 "    only to the function where they are defined and its children.\n"
 "    \n"
@@ -3238,21 +3006,18 @@ 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:566
+#: 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"
@@ -3276,11 +3041,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"
@@ -3294,11 +3057,9 @@ 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"
@@ -3322,7 +3083,7 @@ msgstr ""
 "     Estado de saída:\n"
 "     Devolve sucesso a não ser que ocorra um erro de escrita."
 
-#: builtins.c:606
+#: builtins.c:597
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
@@ -3344,8 +3105,7 @@ msgstr ""
 "     Estado de saída:\n"
 "     Devolve sucesso a não ser que ocorra um erro de escrita."
 
-#: builtins.c:621
-#, fuzzy
+#: builtins.c:612
 msgid ""
 "Enable and disable shell builtins.\n"
 "    \n"
@@ -3365,12 +3125,6 @@ msgid ""
 "    \n"
 "    Without options, each NAME is enabled.\n"
 "    \n"
-"    On systems with dynamic loading, the shell variable BASH_LOADABLES_PATH\n"
-"    defines a search path for the directory containing FILENAMEs that do\n"
-"    not contain a slash. It may include \".\" to force a search of the "
-"current\n"
-"    directory.\n"
-"    \n"
 "    To use the `test' found in $PATH instead of the shell builtin\n"
 "    version, type `enable -n test'.\n"
 "    \n"
@@ -3385,8 +3139,7 @@ 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"
@@ -3400,15 +3153,13 @@ 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:654
+#: 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"
@@ -3416,14 +3167,13 @@ 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"
 "     Devolve estado de saída do comando ou sucesso se o comando for nulo."
 
-#: builtins.c:666
+#: builtins.c:652
 msgid ""
 "Parse option arguments.\n"
 "    \n"
@@ -3465,8 +3215,7 @@ 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"
@@ -3487,8 +3236,7 @@ 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"
@@ -3497,20 +3245,18 @@ 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"
 "     encontrado ou se ocorrer um erro."
 
-#: builtins.c:708
+#: 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"
@@ -3518,20 +3264,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 ""
 "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"
@@ -3539,15 +3281,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:729
+#: builtins.c:715
 msgid ""
 "Exit the shell.\n"
 "    \n"
@@ -3559,34 +3299,29 @@ msgstr ""
 "     Sai da consola com estado N. Se N for omitido, o estado de saída\n"
 "     é o do último comando executado."
 
-#: builtins.c:738
+#: 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 ""
 "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:748
-#, fuzzy
+#: 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"
@@ -3599,24 +3334,18 @@ msgid ""
 "    runs the last command beginning with `cc' and typing `r' re-executes\n"
 "    the last command.\n"
 "    \n"
-"    The history builtin also operates on the history list.\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"
@@ -3626,15 +3355,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:780
+#: builtins.c:764
 msgid ""
 "Move job to the foreground.\n"
 "    \n"
@@ -3654,14 +3381,12 @@ msgstr ""
 "     Estado de saída:\n"
 "     Estado do comando colocado em 1º plano ou falha se ocorrer um erro."
 
-#: builtins.c:795
+#: 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"
@@ -3669,23 +3394,19 @@ 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:809
+#: 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"
@@ -3720,10 +3441,9 @@ 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:834
+#: builtins.c:818
 msgid ""
 "Display information about builtin commands.\n"
 "    \n"
@@ -3741,14 +3461,12 @@ 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"
@@ -3761,11 +3479,9 @@ 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:858
-#, fuzzy
+#: builtins.c:842
 msgid ""
 "Display or manipulate the history list.\n"
 "    \n"
@@ -3789,16 +3505,11 @@ msgid ""
 "      -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. If FILENAME is not supplied\n"
-"    and HISTFILE is unset or null, the -a, -n, -r, and -w options have\n"
-"    no effect and return success.\n"
-"    \n"
-"    The fc builtin also operates on the history list.\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"
+"    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."
@@ -3806,18 +3517,15 @@ 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"
@@ -3828,21 +3536,16 @@ 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:899
+#: builtins.c:879
 msgid ""
 "Display status of jobs.\n"
 "    \n"
@@ -3878,18 +3581,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:926
+#: builtins.c:906
 msgid ""
 "Remove jobs from current shell.\n"
 "    \n"
@@ -3912,16 +3612,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:945
+#: builtins.c:925
 msgid ""
 "Send a signal to a job.\n"
 "    \n"
@@ -3956,24 +3654,21 @@ 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:969
+#: builtins.c:949
 msgid ""
 "Evaluate arithmetic expressions.\n"
 "    \n"
 "    Evaluate each ARG as an arithmetic expression.  Evaluation is done in\n"
 "    fixed-width integers with no check for overflow, though division by 0\n"
 "    is trapped and flagged as an error.  The following list of operators is\n"
-"    grouped into levels of equal-precedence operators.  The levels are "
-"listed\n"
+"    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"
@@ -4012,10 +3707,8 @@ 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"
@@ -4040,10 +3733,8 @@ 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"
@@ -4054,24 +3745,19 @@ msgstr ""
 "     Estado de saída:\n"
 "     Se o último ARG for avaliado como 0, let devolve 1; senão let devolve 0."
 
-#: builtins.c:1014
-#, fuzzy
+#: 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. By default, the backslash character escapes delimiter "
-"characters\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"
@@ -4079,14 +3765,11 @@ msgid ""
 "      -d delim\tcontinue until the first character of DELIM is read, rather\n"
 "    \t\tthan newline\n"
 "      -e\tuse Readline to obtain the line\n"
-"      -E\tuse Readline to obtain the line and use the bash default\n"
-"    \t\tcompletion instead of Readline's default completion\n"
 "      -i text\tuse TEXT as the initial text for Readline\n"
 "      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
 "    \t\tfor a newline, but honor a delimiter if fewer than\n"
 "    \t\tNCHARS characters are read before the delimiter\n"
-"      -N nchars\treturn only after reading exactly NCHARS characters, "
-"unless\n"
+"      -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"
@@ -4104,40 +3787,33 @@ 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"
-"     como delimitadores de palavras.\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. Por defeito, a barra esquerda \"\\\" escapa \n"
+"     delimitadores e novas linhas.\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"
+"        -e\tusa Readline para obter a linha\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"
@@ -4155,13 +3831,11 @@ 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:1064
+#: builtins.c:1042
 msgid ""
 "Return from a shell function.\n"
 "    \n"
@@ -4179,11 +3853,9 @@ 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:1077
-#, fuzzy
+#: builtins.c:1055
 msgid ""
 "Set or unset values of shell options and positional parameters.\n"
 "    \n"
@@ -4226,8 +3898,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"
@@ -4251,18 +3922,13 @@ 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"
 "      -   Assign any remaining arguments to the positional parameters.\n"
 "          The -x and -v options are turned off.\n"
 "    \n"
-"    If -o is supplied with no option-name, set prints the current shell\n"
-"    option settings. If +o is supplied with no option-name, set prints a\n"
-"    series of set commands to recreate the current option settings.\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"
@@ -4280,12 +3946,10 @@ 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"
@@ -4302,8 +3966,7 @@ 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"
@@ -4314,16 +3977,11 @@ 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"
@@ -4332,28 +3990,24 @@ 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"
@@ -4365,7 +4019,7 @@ msgstr ""
 "     Estado de saída:\n"
 "     Devolve sucesso a não ser que indique uma opção inválida."
 
-#: builtins.c:1166
+#: builtins.c:1140
 msgid ""
 "Unset values and attributes of shell variables and functions.\n"
 "    \n"
@@ -4377,8 +4031,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"
@@ -4402,16 +4055,14 @@ 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:1188
+#: 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"
@@ -4426,8 +4077,7 @@ 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"
@@ -4437,10 +4087,9 @@ 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:1207
+#: builtins.c:1181
 msgid ""
 "Mark shell variables as unchangeable.\n"
 "    \n"
@@ -4470,17 +4119,15 @@ 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:1229
+#: builtins.c:1203
 msgid ""
 "Shift positional parameters.\n"
 "    \n"
@@ -4498,17 +4145,14 @@ msgstr ""
 "     Estado de saída:\n"
 "     Devolve sucesso a não ser que N seja negativo ou maior que $#."
 
-#: builtins.c:1241 builtins.c:1257
-#, fuzzy
+#: builtins.c:1215 builtins.c:1230
 msgid ""
 "Execute commands from a file in the current shell.\n"
 "    \n"
-"    Read and execute commands from FILENAME in the current shell. If the\n"
-"    -p option is supplied, the PATH argument is treated as a colon-\n"
-"    separated list of directories to search for FILENAME. If -p is not\n"
-"    supplied, $PATH is searched to find FILENAME. If any ARGUMENTS are\n"
-"    supplied, they become the positional parameters when FILENAME is "
-"executed.\n"
+"    Read and execute commands from FILENAME in the current shell.  The\n"
+"    entries in $PATH are used to find the directory containing FILENAME.\n"
+"    If any ARGUMENTS are supplied, they become the positional parameters\n"
+"    when FILENAME is executed.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns the status of the last command executed in FILENAME; fails if\n"
@@ -4525,18 +4169,15 @@ msgstr ""
 "     Devolve o estado do último comando executado em NOMEFICH; falha se\n"
 "     NOMEFICH não pode ser lido."
 
-#: builtins.c:1274
-#, fuzzy
+#: builtins.c:1246
 msgid ""
 "Suspend shell execution.\n"
 "    \n"
 "    Suspend the execution of this shell until it receives a SIGCONT signal.\n"
-"    Unless forced, login shells and shells without job control cannot be\n"
-"    suspended.\n"
+"    Unless forced, login shells cannot be suspended.\n"
 "    \n"
 "    Options:\n"
-"      -f\tforce the suspend, even if the shell is a login shell or job\n"
-"    \t\tcontrol is not enabled.\n"
+"      -f\tforce the suspend, even if the shell is a login shell\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless job control is not enabled or an error occurs."
@@ -4550,10 +4191,9 @@ 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:1292
+#: builtins.c:1262
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4587,8 +4227,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"
@@ -4609,8 +4248,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"
@@ -4638,10 +4276,8 @@ 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"
@@ -4651,17 +4287,14 @@ 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"
@@ -4670,23 +4303,16 @@ 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"
@@ -4700,20 +4326,15 @@ 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"
@@ -4722,17 +4343,15 @@ 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:1374
+#: builtins.c:1344
 msgid ""
 "Evaluate conditional expression.\n"
 "    \n"
@@ -4744,12 +4363,11 @@ 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:1383
+#: 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"
@@ -4757,61 +4375,45 @@ 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:1395
-#, fuzzy
+#: 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"
-"    ACTION is a command to be read and executed when the shell receives the\n"
-"    signal(s) SIGNAL_SPEC.  If ACTION is absent (and a single SIGNAL_SPEC\n"
+"    ARG is a command to be read and executed when the shell receives the\n"
+"    signal(s) SIGNAL_SPEC.  If ARG is absent (and a single SIGNAL_SPEC\n"
 "    is supplied) or `-', each specified signal is reset to its original\n"
-"    value.  If ACTION is the null string each SIGNAL_SPEC is ignored by the\n"
+"    value.  If ARG is the null string each SIGNAL_SPEC is ignored by the\n"
 "    shell and by the commands it invokes.\n"
 "    \n"
-"    If a SIGNAL_SPEC is EXIT (0) ACTION is executed on exit from the shell.\n"
-"    If a SIGNAL_SPEC is DEBUG, ACTION is executed before every simple "
-"command\n"
-"    and selected other commands. If a SIGNAL_SPEC is RETURN, ACTION is\n"
-"    executed each time a shell function or a script run by the . or source\n"
-"    builtins finishes executing.  A SIGNAL_SPEC of ERR means to execute "
-"ACTION\n"
-"    each time a command's failure would cause the shell to exit when the -e\n"
-"    option is enabled.\n"
-"    \n"
-"    If no arguments are supplied, trap prints the list of commands "
-"associated\n"
-"    with each trapped signal in a form that may be reused as shell input to\n"
-"    restore the same signal dispositions.\n"
+"    If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell.  If\n"
+"    a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command.  If\n"
+"    a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or a\n"
+"    script run by the . or source builtins finishes executing.  A SIGNAL_SPEC\n"
+"    of ERR means to execute ARG each time a command's failure would cause the\n"
+"    shell to exit when the -e option is enabled.\n"
+"    \n"
+"    If no arguments are supplied, trap prints the list of commands associated\n"
+"    with each signal.\n"
 "    \n"
 "    Options:\n"
 "      -l\tprint a list of signal names and their corresponding numbers\n"
-"      -p\tdisplay the trap commands associated with each SIGNAL_SPEC in a\n"
-"    \t\tform that may be reused as shell input; or for all trapped\n"
-"    \t\tsignals if no arguments are supplied\n"
-"      -P\tdisplay the trap commands associated with each SIGNAL_SPEC. At "
-"least\n"
-"    \t\tone SIGNAL_SPEC must be supplied. -P and -p cannot be used\n"
-"    \t\ttogether.\n"
-"    \n"
-"    Each SIGNAL_SPEC is either a signal name in <signal.h> or a signal "
-"number.\n"
+"      -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n"
+"    \n"
+"    Each SIGNAL_SPEC is either a signal name in <signal.h> or a signal number.\n"
 "    Signal names are case insensitive and the SIG prefix is optional.  A\n"
 "    signal may be sent to the shell with \"kill -signal $$\".\n"
 "    \n"
 "    Exit Status:\n"
-"    Returns success unless a SIGSPEC is invalid or an invalid option is "
-"given."
+"    Returns success unless a SIGSPEC is invalid or an invalid option is given."
 msgstr ""
 "Capturar sinais e outros eventos.\n"
 "     \n"
@@ -4820,40 +4422,32 @@ 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:1438
+#: builtins.c:1401
 msgid ""
 "Display information about command type.\n"
 "    \n"
@@ -4879,8 +4473,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 informações sobre o tipo de comando.\n"
 "     \n"
@@ -4897,10 +4490,8 @@ 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"
@@ -4908,16 +4499,13 @@ 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:1469
-#, 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"
@@ -4954,21 +4542,16 @@ msgid ""
 "    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; -R, which is in microseconds;\n"
-"    -b, which is in bytes; and -e, -i, -k, -n, -q, -r, -u, -x, and -P,\n"
-"    which accept unscaled values.\n"
-"    \n"
-"    When in posix mode, values supplied with -c and -f are in 512-byte\n"
-"    increments.\n"
+"    Values are in 1024-byte increments, except for -t, which is in seconds,\n"
+"    -p, which is in increments of 512 bytes, and -u, which is an unscaled\n"
+"    number of processes.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
 msgstr ""
 "Modifica os limites de recursos da consola.\n"
 "     \n"
-"     Fornece controlo sobre os recursos disponíveis para consola e "
-"processos\n"
+"     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"
@@ -4979,8 +4562,7 @@ 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"
@@ -4995,30 +4577,25 @@ 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:1524
+#: builtins.c:1483
 msgid ""
 "Display or set file mode mask.\n"
 "    \n"
@@ -5037,45 +4614,36 @@ 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:1544
+#: 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"
@@ -5088,76 +4656,52 @@ 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:1575
+#: 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:1590
-msgid ""
-"Execute PIPELINE, which can be a simple command, and negate PIPELINE's\n"
-"    return status.\n"
-"    \n"
-"    Exit Status:\n"
-"    The logical negation of PIPELINE's return status."
-msgstr ""
-
-#: builtins.c:1600
+#: builtins.c:1549
 msgid ""
 "Execute commands for each member in a list.\n"
 "    \n"
@@ -5171,18 +4715,15 @@ 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:1614
+#: builtins.c:1563
 msgid ""
 "Arithmetic for loop.\n"
 "    \n"
@@ -5206,14 +4747,13 @@ 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:1632
+#: builtins.c:1581
 msgid ""
 "Select words from a list and execute commands.\n"
 "    \n"
@@ -5249,7 +4789,7 @@ msgstr ""
 "     Estado de saída:\n"
 "     Devolve o estado do último comando executado."
 
-#: builtins.c:1653
+#: builtins.c:1602
 msgid ""
 "Report time consumed by pipeline's execution.\n"
 "    \n"
@@ -5267,8 +4807,7 @@ 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"
@@ -5278,7 +4817,7 @@ msgstr ""
 "     Estado de saída:\n"
 "     O estado devolvido é o estado de PIPELINE."
 
-#: builtins.c:1670
+#: builtins.c:1619
 msgid ""
 "Execute commands based on pattern matching.\n"
 "    \n"
@@ -5296,21 +4835,16 @@ msgstr ""
 "     Estado de saída:\n"
 "     Devolve o estado do último comando executado."
 
-#: builtins.c:1682
+#: 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"
@@ -5319,28 +4853,21 @@ 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:1699
-#, fuzzy
+#: builtins.c:1648
 msgid ""
 "Execute commands as long as a test succeeds.\n"
 "    \n"
-"    Expand and execute COMMANDS-2 as long as the final command in COMMANDS "
-"has\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"
@@ -5348,19 +4875,17 @@ msgid ""
 msgstr ""
 "Executa comandos enquanto o teste tiver sucesso.\n"
 "     \n"
-"     Expande e executa COMANDOS enquanto o comando final no ciclo\n"
-"     \"while COMANDOS\" tenha um estado de saída zero.\n"
+"     Expande e executa COMANDOS-2 enquanto o comando final em COMANDOS\n"
+"     tenha um estado de saída zero.\n"
 "     \n"
 "     Estado de saída:\n"
 "     Devolve o estado do último comando executado."
 
-#: builtins.c:1711
-#, fuzzy
+#: builtins.c:1660
 msgid ""
 "Execute commands as long as a test does not succeed.\n"
 "    \n"
-"    Expand and execute COMMANDS-2 as long as the final command in COMMANDS "
-"has\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"
@@ -5368,13 +4893,13 @@ msgid ""
 msgstr ""
 "Executa comandos enquanto o teste não tiver sucesso.\n"
 "     \n"
-"     Expande e executa COMANDOS enquanto o comando final no ciclo\n"
-"     \"until COMANDOS\" tenha um estado de saída não zero.\n"
+"     Expande e executa COMANDOS-2 enquanto o comando final em COMANDOS\n"
+"     tenha um estado de saída não zero.\n"
 "     \n"
 "     Estado de saída:\n"
 "     Devolve o estado do último comando executado."
 
-#: builtins.c:1723
+#: builtins.c:1672
 msgid ""
 "Create a coprocess named NAME.\n"
 "    \n"
@@ -5388,8 +4913,7 @@ 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"
@@ -5397,13 +4921,12 @@ msgstr ""
 "     Estado de saída:\n"
 "     O comando coproc devolve um estado de saída 0."
 
-#: builtins.c:1737
+#: 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"
@@ -5420,7 +4943,7 @@ msgstr ""
 "     Estado de saída:\n"
 "     Devolve sucesso a não ser que NOME seja só de leitura."
 
-#: builtins.c:1751
+#: builtins.c:1700
 msgid ""
 "Group commands as a unit.\n"
 "    \n"
@@ -5438,7 +4961,7 @@ msgstr ""
 "     Estado de saída:\n"
 "     Devolve o estado do último comando executado."
 
-#: builtins.c:1763
+#: builtins.c:1712
 msgid ""
 "Resume job in foreground.\n"
 "    \n"
@@ -5462,7 +4985,7 @@ msgstr ""
 "     Estado de saída:\n"
 "     Devolve o estado da tarefa retomada."
 
-#: builtins.c:1778
+#: builtins.c:1727
 msgid ""
 "Evaluate arithmetic expression.\n"
 "    \n"
@@ -5481,16 +5004,13 @@ msgstr ""
 "     Estado de saída:\n"
 "     Devolve 1 se EXPRESSÃO avaliar como 0; senão, devolve 0."
 
-#: builtins.c:1790
+#: 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"
@@ -5511,29 +5031,22 @@ 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:1816
+#: builtins.c:1765
 msgid ""
 "Common shell variable names and usage.\n"
 "    \n"
@@ -5591,11 +5104,9 @@ 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"
@@ -5608,8 +5119,7 @@ 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"
@@ -5632,17 +5142,15 @@ 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:1873
+#: builtins.c:1822
 msgid ""
 "Add directories to stack.\n"
 "    \n"
@@ -5700,7 +5208,7 @@ msgstr ""
 "    Devolve sucesso a não ser que indique um argumento inválido ou a\n"
 "    troca de pastas falhe."
 
-#: builtins.c:1907
+#: builtins.c:1856
 msgid ""
 "Remove directories from stack.\n"
 "    \n"
@@ -5750,7 +5258,7 @@ msgstr ""
 "     Devolve sucesso a não ser que indique um argumento inválido ou a troca\n"
 "     de pastas falhe."
 
-#: builtins.c:1937
+#: builtins.c:1886
 msgid ""
 "Display directory stack.\n"
 "    \n"
@@ -5802,10 +5310,9 @@ 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:1968
+#: builtins.c:1917
 msgid ""
 "Set and unset shell options.\n"
 "    \n"
@@ -5841,8 +5348,7 @@ msgstr ""
 "    Devolve sucesso se OPTNOME estiver activado; falha se indicar uma opção\n"
 "    inválida ou OPTNOME esteja desactivada."
 
-#: builtins.c:1989
-#, fuzzy
+#: builtins.c:1938
 msgid ""
 "Formats and prints ARGUMENTS under control of the FORMAT.\n"
 "    \n"
@@ -5850,36 +5356,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 characters csndiouxXeEfFgGaA "
-"described\n"
-"    in printf(3), printf interprets:\n"
+"    In addition to the standard format specifications described in printf(1),\n"
+"    printf interprets:\n"
 "    \n"
 "      %b\texpand backslash escape sequences in the corresponding argument\n"
 "      %q\tquote the argument in a way that can be reused as shell input\n"
 "      %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"
+"      %(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"
@@ -5890,45 +5389,34 @@ 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:2025
-#, 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"
-"    or NAMEs are supplied, display existing completion specifications in a "
-"way\n"
-"    that allows them to be reused as input.\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"
@@ -5942,25 +5430,20 @@ 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"
@@ -5971,28 +5454,19 @@ 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:2055
-#, fuzzy
+#: 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 present, generate "
-"matches\n"
-"    against WORD.\n"
-"    \n"
-"    If the -V option is supplied, store the possible completions in the "
-"indexed\n"
-"    array VARNAME instead of printing them to the standard output.\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."
@@ -6004,19 +5478,15 @@ 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:2073
+#: 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"
@@ -6040,12 +5510,9 @@ 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"
@@ -6057,40 +5524,31 @@ 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:2104
+#: 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"
@@ -6103,31 +5561,25 @@ 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"
@@ -6141,16 +5593,14 @@ 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:2140
+#: builtins.c:2086
 msgid ""
 "Read lines from a file into an array variable.\n"
 "    \n"
@@ -6160,65 +5610,6 @@ msgstr ""
 "     \n"
 "     Um sinónimo para \"mapfile\"."
 
-#, c-format
-#~ msgid "%s: cannot open: %s"
-#~ msgstr "%s: impossível abrir: %s"
-
-#, c-format
-#~ msgid "%s: inlib failed"
-#~ msgstr "%s: falha inlib"
-
-#, c-format
-#~ msgid "%s: %s"
-#~ msgstr "%s: %s"
-
-#, c-format
-#~ msgid "%s: cannot execute binary file: %s"
-#~ msgstr "%s: impossível executar binário: %s"
-
-#, c-format
-#~ msgid "setlocale: LC_ALL: cannot change locale (%s)"
-#~ msgstr "setlocale: LC_ALL: não pode alterar o idioma (%s)"
-
-#, c-format
-#~ msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
-#~ msgstr "setlocale: LC_ALL: não pode alterar o idioma (%s): %s"
-
-#, c-format
-#~ msgid "setlocale: %s: cannot change locale (%s): %s"
-#~ msgstr "setlocale: %s: não pode alterar o idioma (%s): %s"
-
-#~ msgid ""
-#~ "Returns the context of the current subroutine call.\n"
-#~ "    \n"
-#~ "    Without EXPR, returns \"$line $filename\".  With EXPR, returns\n"
-#~ "    \"$line $subroutine $filename\"; this extra information can be used "
-#~ "to\n"
-#~ "    provide a stack trace.\n"
-#~ "    \n"
-#~ "    The value of EXPR indicates how many call frames to go back before "
-#~ "the\n"
-#~ "    current one; the top frame is frame 0."
-#~ msgstr ""
-#~ "Devolve o contexto da actual chamada a sub-rotina.\n"
-#~ "     \n"
-#~ "     Sem EXPR, devolve \"$linha $nomefich\".  Com EXPR, devolve\n"
-#~ "     \"$linha $sub-rotina $nomefich\"; esta informação extra pode ser "
-#~ "usada\n"
-#~ "     para obter um rasto da pilha.\n"
-#~ "     \n"
-#~ "     O valor de EXPR indica quantas chamadas deve recuar antes da\n"
-#~ "     actual; a chamada superior é a chamada 0.\n"
-#~ "     Estado de saída:\n"
-#~ "     Devolve 0 a não ser que a consola não esteja a executar uma função "
-#~ "ou EXPR\n"
-#~ "     seja inválida."
-
-#, c-format
-#~ msgid "warning: %s: %s"
-#~ msgstr "aviso: %s: %s"
-
-#, c-format
 #~ msgid "%s: invalid associative array key"
 #~ msgstr "%s: chave de matriz associativa inválida"
 
index 2ad4b8ef7aed2188fefd975fd7321a5b7d4e086a..e8abd97b03fa3fbd14b1c0ffc8ab550ce73f35f7 100644 (file)
@@ -1,6 +1,6 @@
 /* print_command -- A way to make readable commands from a command tree. */
 
-/* Copyright (C) 1989-2024 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2025 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
diff --git a/redir.c b/redir.c
index 918e878d35cd6ff32034b0396def7a99f4096ce2..343536b7bc0f81ea0d9fecd3da73fc5572f8ce6a 100644 (file)
--- a/redir.c
+++ b/redir.c
@@ -1,6 +1,6 @@
 /* redir.c -- Functions to perform input and output redirection. */
 
-/* Copyright (C) 1997-2024 Free Software Foundation, Inc.
+/* Copyright (C) 1997-2025 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
index 34b7f66bbea12620512eb77c9626eaf588f09978..0afae3fd23959a90fcca7f5577e14988c4fcb75d 100755 (executable)
@@ -1,4 +1,4 @@
-BUILD_DIR=/usr/local/build/bash/bash-current
+: ${BUILD_DIR:==/usr/local/build/bash/bash-current}
 THIS_SH=$BUILD_DIR/bash
 PATH=$PATH:$BUILD_DIR
 
index 3740723b15f820df2f80f86c5036e12cd4e2f1aa..2aff0e09997d2380aac7fe5fc1a614b530614a16 100755 (executable)
@@ -1,4 +1,4 @@
-BUILD_DIR=/usr/local/build/chet/bash/bash-current
+: ${BUILD_DIR:=/usr/local/build/chet/bash/bash-current}
 THIS_SH=$BUILD_DIR/bash
 PATH=$PATH:$BUILD_DIR
 
index 6e58501249c5d80b87a192a7b14a879cfd3f9cf7..762d77a355e5aaa8c32f4ed507efd456436bc590 100644 (file)
--- a/version.c
+++ b/version.c
@@ -1,6 +1,6 @@
 /* version.c -- distribution and version numbers. */
 
-/* Copyright (C) 1989-2024 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2025 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -47,7 +47,7 @@ const char * const release_status = (char *)0;
 #endif
 const char * const sccs_version = SCCSVERSION;
 
-const char * const bash_copyright = N_("Copyright (C) 2024 Free Software Foundation, Inc.");
+const char * const bash_copyright = N_("Copyright (C) 2025 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 */