]> git.ipfire.org Git - thirdparty/bash.git/commitdiff
changes to make builtins that perform assignments work better with arbitrary associat...
authorChet Ramey <chet.ramey@case.edu>
Tue, 4 Jan 2022 15:54:28 +0000 (10:54 -0500)
committerChet Ramey <chet.ramey@case.edu>
Tue, 4 Jan 2022 15:54:28 +0000 (10:54 -0500)
12 files changed:
CWRU/CWRU.chlog
arrayfunc.c
arrayfunc.h
builtins/common.c
builtins/common.h
builtins/printf.def
builtins/read.def
builtins/wait.def
expr.c
po/de.gmo
po/de.po
variables.c

index 158376f5d10d7c8eee24b0d761cec1947347ba05..81d96ae718fd925fd0b273c5de48fcf5c9bf531d 100644 (file)
@@ -2815,3 +2815,51 @@ subst.c
                unset A[$rkey]
          work because the unset builtin sees the W_ARRAYREF flag on its
          argument
+
+                                  12/29
+                                  -----
+builtins/common.h
+       - SET_VFLAGS: take a set of word flags, and set flags for use with
+         valid_array_reference (vflags) and assign_array_element/bind_int_variable
+         (bindflags) based on those flags and the setting of assoc_expand_once
+         (moved from read.def and generalized)
+
+arrayfunc.c
+       - array_variable_name: now exclusively takes AV_xxx flags; understands
+         how to translate AV_NOEXPAND to the right flag for skipsubscript;
+         understands AV_ONEWORD and AV_NOEXPAND
+       - array_variable_part: just passes the FLAGS arg to array_variable_name
+       - assign_array_element: translates ASS_ flags to AV_ flags for
+         array_variable_name
+       - array_value_internal: now just passes flags straight through to
+         array_variable_part (which sends them to array_variable_name)
+
+builtins/common.[ch]
+       - builtin_bind_var_to_int: now takes a new FLAGS third argument; passes
+         it to bind_var_to_int
+
+builtins/printf.def
+       - printf_builtin: use SET_VFLAGS to set flags for builtin_bind_variable
+         (bindflags); makes things like
+               declare -A A; key=']' ; printf -v A[$key] "foo"
+         work without a subscript error as long as assoc_expand_once is defined
+
+builtins/read.def
+       - read_builtin: use new common version of SET_VFLAGS instead of
+         private version; changed to use new calling sequence; makes things like
+               declare -A A; key=']' ; read A[$key] <<<"foo"
+         work without a subscript error as long as assoc_expand_once is defined
+
+builtins/wait.def
+       - wait_builtin: use SET_VFLAGS for variable name with -p option
+       - wait_builtin: call builtin_bind_var_to_int with new bindflags third
+         argument
+
+expr.c
+       - expr_streval: just pass TFLAG (AV_xxx flags) straight through to
+         array_variable_part
+
+variables.c
+       - bind_int_variable: translate the assignment flags (ASS_xxx) to
+         VA_xxx flags for valid_array_reference calls (ASS_ONEWORD); translate
+         assignment flags to AV_xxx flags for array_variable_part
index 1f9b84fdf2953fa112f9cb9283863241c94cf670..80d3cea7fdd38f643bd0769c26e8dccc6f82dbd6 100644 (file)
@@ -347,10 +347,15 @@ assign_array_element (name, value, flags, estatep)
      array_eltstate_t *estatep;
 {
   char *sub, *vname;
-  int sublen, isassoc;
+  int sublen, isassoc, avflags;
   SHELL_VAR *entry;
 
-  vname = array_variable_name (name, (flags & ASS_NOEXPAND) != 0, &sub, &sublen);
+  avflags = 0;
+  if (flags & ASS_NOEXPAND)
+    avflags |= AV_NOEXPAND;
+  if (flags & ASS_ONEWORD)
+    avflags |= AV_ONEWORD;
+  vname = array_variable_name (name, avflags, &sub, &sublen);
 
   if (vname == 0)
     return ((SHELL_VAR *)NULL);
@@ -1374,7 +1379,7 @@ array_variable_name (s, flags, subp, lenp)
      int *lenp;
 {
   char *t, *ret;
-  int ind, ni;
+  int ind, ni, ssflags;
 
   t = mbschr (s, '[');
   if (t == 0)
@@ -1386,7 +1391,15 @@ array_variable_name (s, flags, subp, lenp)
       return ((char *)NULL);
     }
   ind = t - s;
-  ni = skipsubscript (s, ind, flags&1);        /* XXX - was 0 not flags */
+  if ((flags & (AV_NOEXPAND|AV_ONEWORD)) == (AV_NOEXPAND|AV_ONEWORD))
+    ni = strlen (s) - 1;
+  else
+    {
+      ssflags = 0;
+      if (flags & AV_NOEXPAND)
+       ssflags |= 1;
+      ni = skipsubscript (s, ind, ssflags);
+    }
   if (ni <= ind + 1 || s[ni] != ']')
     {
       err_badarraysub (s);
@@ -1464,7 +1477,7 @@ array_value_internal (s, quoted, flags, estatep)
   WORD_LIST *l;
   SHELL_VAR *var;
 
-  var = array_variable_part (s, (flags&AV_NOEXPAND) ? 1 : 0, &t, &len);        /* XXX */
+  var = array_variable_part (s, flags, &t, &len);      /* XXX */
 
   /* Expand the index, even if the variable doesn't exist, in case side
      effects are needed, like ${w[i++]} where w is unset. */
index 2e102efc923e8181db9e138bc5449449a48c9d2e..69112b579cd23a22f1b93233178235841eb19a76 100644 (file)
@@ -55,7 +55,8 @@ extern int assoc_expand_once;
 /* The analog for indexed array subscripts */
 extern int array_expand_once;
 
-/* Flags for array_value_internal and callers array_value/get_array_value */
+/* Flags for array_value_internal and callers array_value/get_array_value; also
+   used by array_variable_name and array_variable_part. */
 #define AV_ALLOWALL    0x001   /* treat a[@] like $@ and a[*] like $* */
 #define AV_QUOTED      0x002
 #define AV_USEIND      0x004
index e168d875e43bdd1599cdbf8552f0895aae7952ce..7b80a3c7622ef975c63d75a24c8fead083b2924a 100644 (file)
@@ -990,10 +990,7 @@ builtin_bind_variable (name, value, flags)
 
 #if defined (ARRAY_VARS)
   /* Callers are responsible for calling this with array references that have
-     already undergone valid_array_reference checks.
-     Affected builtins: read, printf
-     To make this *really* work, needs additional downstream support, starting
-     with assign_array_element and array_variable_name. */
+     already undergone valid_array_reference checks (read, printf). */
   vflags = assoc_expand_once ? (VA_NOEXPAND|VA_ONEWORD) : 0;
   bindflags = flags | (assoc_expand_once ? ASS_NOEXPAND : 0) | ASS_ALLOWALLSUB;
   if (flags & ASS_NOEXPAND)
@@ -1016,13 +1013,14 @@ builtin_bind_variable (name, value, flags)
 }
 
 SHELL_VAR *
-builtin_bind_var_to_int (name, val)
+builtin_bind_var_to_int (name, val, flags)
      char *name;
      intmax_t val;
+     int flags;
 {
   SHELL_VAR *v;
 
-  v = bind_var_to_int (name, val, ASS_ALLOWALLSUB);
+  v = bind_var_to_int (name, val, flags|ASS_ALLOWALLSUB);
   return v;
 }
 
index 845d41d7290d4c64e750861f2ed6386d6180901b..38326b99e5489c304c6c01036cb4c52cbf4ab76e 100644 (file)
@@ -232,7 +232,7 @@ extern sh_builtin_func_t *this_shell_builtin;
 extern sh_builtin_func_t *last_shell_builtin;
 
 extern SHELL_VAR *builtin_bind_variable PARAMS((char *, char *, int));
-extern SHELL_VAR *builtin_bind_var_to_int PARAMS((char *, intmax_t));
+extern SHELL_VAR *builtin_bind_var_to_int PARAMS((char *, intmax_t, int));
 extern int builtin_unbind_variable PARAMS((const char *));
 
 extern int builtin_arrayref_flags PARAMS((WORD_DESC *, int));
@@ -263,4 +263,19 @@ extern int source_uses_path;
 /* variables from wait.def */
 extern int wait_intr_flag;
 
+/* common code to set flags for valid_array_reference and builtin_bind_variable */
+#if defined (ARRAY_VARS)
+#define SET_VFLAGS(wordflags, vflags, bindflags) \
+  do { \
+    vflags = assoc_expand_once ?  VA_NOEXPAND : 0; \
+    bindflags = assoc_expand_once ? ASS_NOEXPAND : 0; \
+    if (assoc_expand_once && (wordflags & W_ARRAYREF)) \
+      vflags |= VA_ONEWORD|VA_NOEXPAND; \
+    if (vflags & VA_NOEXPAND) \
+      bindflags |= ASS_NOEXPAND; \
+    if (vflags & VA_ONEWORD) \
+      bindflags |= ASS_ONEWORD; \
+  } while (0)
+#endif
+
 #endif /* !__COMMON_H */
index 638be1e3f6f2bb42f573a460d1b0f6d1d694fc04..251454480c350681998db40d96bd868eedc31be8 100644 (file)
@@ -151,7 +151,7 @@ extern int errno;
       if (vflag) \
        { \
          SHELL_VAR *v; \
-         v = builtin_bind_variable  (vname, vbuf, 0); \
+         v = builtin_bind_variable  (vname, vbuf, bindflags); \
          stupidly_hack_special_variables (vname); \
          if (v == 0 || readonly_p (v) || noassign_p (v)) \
            return (EXECUTION_FAILURE); \
@@ -232,6 +232,7 @@ static int conversion_error;
 
 /* printf -v var support */
 static int vflag = 0;
+static int bindflags = 0;
 static char *vbuf, *vname;
 static size_t vbsize;
 static int vblen;
@@ -266,10 +267,9 @@ printf_builtin (list)
        {
        case 'v':
          vname = list_optarg;
+         bindflags = 0;
 #if defined (ARRAY_VARS)
-         arrayflags = assoc_expand_once ? VA_NOEXPAND : 0;
-         if (assoc_expand_once && (list_optflags & W_ARRAYREF))
-           arrayflags |= VA_ONEWORD|VA_NOEXPAND;
+         SET_VFLAGS (list_optflags, arrayflags, bindflags);
          retval = legal_identifier (vname) || valid_array_reference (vname, arrayflags);
 #else
          retval = legal_identifier (vname);
index 1898e600e15d3c1862ba197df04c71dc52a76666..645652686ddc03f6491d22f6d43c2abfa263487c 100644 (file)
@@ -190,20 +190,6 @@ read_builtin_timeout (fd)
                                                : shtimer_select (read_timeout));
 }
 
-#if defined (ARRAY_VARS)
-#define SET_VFLAGS(wordflags) \
-  do { \
-    vflags = assoc_expand_once ?  VA_NOEXPAND : 0; \
-    bindflags = assoc_expand_once ? ASS_NOEXPAND : 0; \
-    if (assoc_expand_once && (wordflags & W_ARRAYREF)) \
-      vflags |= VA_ONEWORD|VA_NOEXPAND; \
-    if (vflags & VA_NOEXPAND) \
-      bindflags |= ASS_NOEXPAND; \
-    if (vflags & VA_ONEWORD) \
-      bindflags |= ASS_ONEWORD; \
-  } while (0)
-#endif
-
 /* Read the value of the shell variables whose names follow.
    The reading is done from the current input stream, whatever
    that may be.  Successive words of the input line are assigned
@@ -378,7 +364,7 @@ read_builtin (list)
      variable names is a valid identifier, and bail early if so. */
 #if defined (ARRAY_VARS)
   if (list)
-    SET_VFLAGS (list->word->flags);
+    SET_VFLAGS (list->word->flags, vflags, bindflags);
   if (list && legal_identifier (list->word->word) == 0 && valid_array_reference (list->word->word, vflags) == 0)
 #else
   bindflags = 0;
@@ -969,7 +955,7 @@ assign_vars:
     {
       varname = list->word->word;
 #if defined (ARRAY_VARS)
-      SET_VFLAGS (list->word->flags);
+      SET_VFLAGS (list->word->flags, vflags, bindflags);
       if (legal_identifier (varname) == 0 && valid_array_reference (varname, vflags) == 0)
 #else
       if (legal_identifier (varname) == 0)
@@ -1018,7 +1004,7 @@ assign_vars:
 
   /* Now assign the rest of the line to the last variable argument. */
 #if defined (ARRAY_VARS)
-  SET_VFLAGS (list->word->flags);
+  SET_VFLAGS (list->word->flags, vflags, bindflags);
   if (legal_identifier (list->word->word) == 0 && valid_array_reference (list->word->word, vflags) == 0)
 #else
   if (legal_identifier (list->word->word) == 0)
index b4758404ab78be889c5ea2321e00fecd1c296b41..290fb26f54bb18a5506b36a75c2b7221d9dfa0b9 100644 (file)
@@ -111,7 +111,7 @@ int
 wait_builtin (list)
      WORD_LIST *list;
 {
-  int status, code, opt, nflag;
+  int status, code, opt, nflag, vflags, bindflags;
   volatile int wflags;
   char *vname;
   SHELL_VAR *pidvar;
@@ -119,7 +119,7 @@ wait_builtin (list)
 
   USE_VAR(list);
 
-  nflag = wflags = 0;
+  nflag = wflags = vflags = 0;
   vname = NULL;
   pidvar = (SHELL_VAR *)NULL;
   reset_internal_getopt ();
@@ -136,6 +136,7 @@ wait_builtin (list)
          break;
        case 'p':
          vname = list_optarg;
+         vflags = list_optflags;         
          break;        
 #endif
        CASE_HELPOPT;
@@ -152,15 +153,10 @@ wait_builtin (list)
 #if defined (ARRAY_VARS)
       int arrayflags;
 
-#if 0
-      arrayflags = assoc_expand_once ? VA_NOEXPAND : 0;
-      if (assoc_expand_once && (list_optflags & W_ARRAYREF))
-       arrayflags |= VA_ONEWORD|VA_NOEXPAND;
-#else
-      arrayflags = 0;  /* not yet without builtin_bind_var_to_int support */
-#endif
+      SET_VFLAGS (vflags, arrayflags, bindflags);
       if (legal_identifier (vname) == 0 && valid_array_reference (vname, arrayflags) == 0)
 #else
+      bindflags = 0;
       if (legal_identifier (vname) == 0)
 #endif
        {
@@ -225,7 +221,7 @@ wait_builtin (list)
 
       status = wait_for_any_job (wflags, &pstat);
       if (vname && status >= 0)
-       builtin_bind_var_to_int (vname, pstat.pid);
+       builtin_bind_var_to_int (vname, pstat.pid, bindflags);
 
       if (status < 0)
        status = 127;
@@ -241,7 +237,7 @@ wait_builtin (list)
     {
       wait_for_background_pids (&pstat);
       if (vname)
-       builtin_bind_var_to_int (vname, pstat.pid);
+       builtin_bind_var_to_int (vname, pstat.pid, bindflags);
       WAIT_RETURN (EXECUTION_SUCCESS);
     }
 
diff --git a/expr.c b/expr.c
index 6b237137e00c6e82a9f06df3617fc1fa43e8b6bf..ef7c5d121aecb7f17f14e10b584d868741d20c80 100644 (file)
--- a/expr.c
+++ b/expr.c
@@ -1161,12 +1161,12 @@ expr_streval (tok, e, lvalue)
   initial_depth = expr_depth;
 
 #if defined (ARRAY_VARS)
-  tflag = assoc_expand_once && already_expanded;       /* for a start */
+  tflag = (assoc_expand_once && already_expanded) ? AV_NOEXPAND : 0;   /* for a start */
 #endif
 
   /* [[[[[ */
 #if defined (ARRAY_VARS)
-  aflag = (tflag) ? AV_NOEXPAND : 0;
+  aflag = tflag;       /* use a different variable for now */
   v = (e == ']') ? array_variable_part (tok, tflag, (char **)0, (int *)0) : find_variable (tok);
 #else
   v = find_variable (tok);
index 7a31bc581436aa2ead234c0a866d79a02dbd85dc..b9ebf6df2799323803ce54a9110330567cf8da19 100644 (file)
Binary files a/po/de.gmo and b/po/de.gmo differ
index 64d676fea6baf89a16facf361befd8ca8f697480..eb72a59910f6b51f3fecb57eeb1e84fa9422f060 100644 (file)
--- a/po/de.po
+++ b/po/de.po
@@ -2,13 +2,14 @@
 # Copyright (C) 2019 Free Software Foundation, Inc.
 # This file is distributed under the same license as the bash package.
 # Roland Illig <roland.illig@gmx.de> 2019
-# Nils Naumann <nau@gmx.net>, 1996-2019.
+# Nils Naumann <nau@gmx.net>, 1996-2021.
+#
 msgid ""
 msgstr ""
-"Project-Id-Version: bash 5.0\n"
+"Project-Id-Version: bash 5.1\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2020-11-28 12:51-0500\n"
-"PO-Revision-Date: 2019-10-21 20:58+0200\n"
+"PO-Revision-Date: 2021-12-29 22:04+0100\n"
 "Last-Translator: Nils Naumann <nau@gmx.net>\n"
 "Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
 "Language: de\n"
@@ -16,7 +17,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "X-Bugs: Report translation errors to the Language-Team address.\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
 
 #: arrayfunc.c:66
 msgid "bad array subscript"
@@ -31,8 +32,7 @@ msgstr "%s: Entferne das Nameref Attribut."
 #: arrayfunc.c:446 builtins/declare.def:851
 #, c-format
 msgid "%s: cannot convert indexed to associative array"
-msgstr ""
-"%s: Das indizierte Array kann in kein assoziatives Array umgewandelt werden."
+msgstr "%s: Das indizierte Array kann in kein assoziatives Array umgewandelt werden."
 
 #: arrayfunc.c:700
 #, c-format
@@ -47,8 +47,7 @@ msgstr "%s: Das Zuweisen auf einen nicht-numerischen Index ist nicht möglich."
 #: arrayfunc.c:747
 #, c-format
 msgid "%s: %s: must use subscript when assigning associative array"
-msgstr ""
-"%s: %s: Ein Feldindex wird zum Zuweisen eines assoziativen Arrays benötigt."
+msgstr "%s: %s: Ein Feldindex wird zum Zuweisen eines assoziativen Arrays benötigt."
 
 #: bashhist.c:452
 #, c-format
@@ -57,9 +56,7 @@ msgstr "%s: Kann die Datei %s nicht erzeugen."
 
 #: bashline.c:4310
 msgid "bash_execute_unix_command: cannot find keymap for command"
-msgstr ""
-"bash_execute_unix_command: Kann nicht die Tastenzuordnung für das Kommando "
-"finden."
+msgstr "bash_execute_unix_command: Kann nicht die Tastenzuordnung für das Kommando finden."
 
 #: bashline.c:4459
 #, c-format
@@ -78,6 +75,7 @@ msgstr "%s: Fehlender Doppelpunkt."
 
 #: bashline.c:4555
 #, fuzzy, c-format
+#| msgid "`%s': cannot unbind"
 msgid "`%s': cannot unbind in command keymap"
 msgstr "»%s«: Bindung kann nicht gelöst werden."
 
@@ -145,7 +143,6 @@ msgstr "nur in einer for-, while- oder until-Schleife sinnvoll."
 
 # caller
 #: builtins/caller.def:136
-#, fuzzy
 msgid ""
 "Returns the context of the current subroutine call.\n"
 "    \n"
@@ -163,12 +160,7 @@ msgstr ""
 "    Mit diesen Informationen kann ein Stacktrace erzeugt werden.\n"
 "\n"
 "    Das Argument gibt die angezeigte Position im Funktionsaufrufstapel an,\n"
-"    wobei 0 der aktuelle Funktionsaufruf ist.\n"
-"\n"
-"    Rückgabewert:\n"
-"    Ist ungleich 0 wenn keine Shellfunktion ausgeführt wird oder das "
-"Argument\n"
-"    ungültig ist, sonst 0."
+"    wobei 0 der aktuelle Funktionsaufruf ist."
 
 #: builtins/cd.def:327
 msgid "HOME not set"
@@ -370,7 +362,7 @@ msgstr "Kann nur innerhalb einer Funktion benutzt werden."
 #: builtins/declare.def:363 builtins/declare.def:756
 #, c-format
 msgid "%s: reference variable cannot be an array"
-msgstr ""
+msgstr "%s: Referenzvariable darf kein Array sein."
 
 #: builtins/declare.def:374 variables.c:3385
 #, c-format
@@ -410,8 +402,7 @@ msgstr "%s: Kann Feldvariablen nicht auf diese Art löschen."
 #: builtins/declare.def:845 builtins/read.def:815
 #, c-format
 msgid "%s: cannot convert associative to indexed array"
-msgstr ""
-"%s: Konvertieren von assoziativen in indizierte Arrays ist nicht möglich."
+msgstr "%s: Konvertieren von assoziativen in indizierte Arrays ist nicht möglich."
 
 #: builtins/enable.def:143 builtins/enable.def:151
 msgid "dynamic loading not available"
@@ -428,15 +419,14 @@ msgid "cannot find %s in shared object %s: %s"
 msgstr "Kann %s nicht in der dynamischen Bibliothek finden %s: %s"
 
 #: builtins/enable.def:388
-#, fuzzy, c-format
+#, c-format
 msgid "%s: dynamic builtin already loaded"
-msgstr "%s: Ist nicht dynamisch geladen."
+msgstr "%s: Ist bereits geladen."
 
 #: builtins/enable.def:392
 #, c-format
 msgid "load function for %s returns failure (%d): not loaded"
-msgstr ""
-"Die Ladefunktion von %s lieferte einen Fehler (%d), daher nicht geladen."
+msgstr "Die Ladefunktion von %s lieferte einen Fehler (%d), daher nicht geladen."
 
 #: builtins/enable.def:517
 #, c-format
@@ -551,14 +541,13 @@ msgid ""
 "'\n"
 "\n"
 msgstr ""
+"'\n"
+"\n"
 
 #: builtins/help.def:185
 #, c-format
-msgid ""
-"no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
-msgstr ""
-"Kein passendes Hilfethema für »%s«. Probieren Sie »help help«, »man -k %s« "
-"oder »info %s«."
+msgid "no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
+msgstr "Kein passendes Hilfethema für »%s«. Probieren Sie »help help«, »man -k %s« oder »info %s«."
 
 #: builtins/help.def:224
 #, c-format
@@ -578,10 +567,8 @@ msgid ""
 msgstr ""
 "Diese Shellkommandos sind intern definiert. Geben Sie »help« ein, um diese\n"
 "Liste zu sehen. Geben Sie »help Name« ein, um die Beschreibung der Funktion\n"
-"»Name« zu sehen. Geben Sie »info bash« ein, um die vollständige "
-"Dokumentation\n"
-"zu sehen. Geben Sie »man -k« oder »info« ein, um detaillierte "
-"Beschreibungen\n"
+"»Name« zu sehen. Geben Sie »info bash« ein, um die vollständige Dokumentation\n"
+"zu sehen. Geben Sie »man -k« oder »info« ein, um detaillierte Beschreibungen\n"
 "der Shellkommandos zu sehen.\n"
 "\n"
 "Ein Stern (*) neben dem Namen kennzeichnet deaktivierte Kommandos.\n"
@@ -664,8 +651,7 @@ msgstr "Fehlender Name für die Arrayvariable."
 
 #: builtins/mapfile.def:370
 msgid "array variable support required"
-msgstr ""
-"Die Unterstützung für Arrayvariablen ist in dieser Shell nicht vorhanden."
+msgstr "Die Unterstützung für Arrayvariablen ist in dieser Shell nicht vorhanden."
 
 #: builtins/printf.def:419
 #, c-format
@@ -737,12 +723,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 ""
 "Zeigt die Liste der gegenwärtig gespeicherten Verzeichnisse an.  Durch\n"
@@ -863,14 +847,11 @@ msgstr "Lesefehler: %d: %s"
 
 #: builtins/return.def:68
 msgid "can only `return' from a function or sourced script"
-msgstr ""
-"»Return« ist nur aus einer Funktion oder einem mit »source« ausgeführten "
-"Skript möglich."
+msgstr "»Return« ist nur aus einer Funktion oder einem mit »source« ausgeführten Skript möglich."
 
 #: builtins/set.def:869
 msgid "cannot simultaneously unset a function and a variable"
-msgstr ""
-"Gleichzeitiges »unset« einer Funktion und einer Variable ist nicht möglich."
+msgstr "Gleichzeitiges »unset« einer Funktion und einer Variable ist nicht möglich."
 
 #: builtins/set.def:966
 #, c-format
@@ -1017,7 +998,7 @@ msgstr "Unbekanntes Kommando"
 
 #: error.c:463
 msgid "bad command type"
-msgstr ""
+msgstr "Falscher Kommandotyp"
 
 # Programmierfehler
 #: error.c:464
@@ -1144,8 +1125,7 @@ msgstr "Der Exponent ist kleiner als 0."
 
 #: expr.c:1029
 msgid "identifier expected after pre-increment or pre-decrement"
-msgstr ""
-"Nach einem Präinkrement oder Prädekrement wird ein Bezeichner erwartet."
+msgstr "Nach einem Präinkrement oder Prädekrement wird ein Bezeichner erwartet."
 
 #: expr.c:1056
 msgid "missing `)'"
@@ -1169,9 +1149,8 @@ msgid "invalid arithmetic base"
 msgstr "Ungültige Basis."
 
 #: expr.c:1582
-#, fuzzy
 msgid "invalid integer constant"
-msgstr "%s: Ungültige Zeilenanzahlangabe."
+msgstr "Ungültige Ganzzahlenkonstante."
 
 #: expr.c:1598
 msgid "value too great for base"
@@ -1306,9 +1285,9 @@ msgid "wait_for_job: job %d is stopped"
 msgstr "wait_for_job: Der Job %d ist gestoppt."
 
 #: jobs.c:3564
-#, fuzzy, c-format
+#, c-format
 msgid "%s: no current jobs"
-msgstr "%s: Kein solcher Job."
+msgstr "%s: Kein aktueller Job."
 
 #: jobs.c:3571
 #, c-format
@@ -1404,9 +1383,8 @@ msgid "free: underflow detected; mh_nbytes out of range"
 msgstr "free: Underflow erkannt; mh_nbytes außerhalb des Gültigkeitsbereichs."
 
 #: lib/malloc/malloc.c:1001
-#, fuzzy
 msgid "free: underflow detected; magic8 corrupted"
-msgstr "free: Underflow erkannt; mh_nbytes außerhalb des Gültigkeitsbereichs."
+msgstr "free: Underflow erkannt; magic8 beschädigt."
 
 #: lib/malloc/malloc.c:1009
 msgid "free: start and end chunk sizes differ"
@@ -1418,14 +1396,11 @@ msgstr "realloc: Mit nicht zugewiesenen Argument aufgerufen."
 
 #: lib/malloc/malloc.c:1134
 msgid "realloc: underflow detected; mh_nbytes out of range"
-msgstr ""
-"realloc: Underflow erkannt; mh_nbytes außerhalb des Gültigkeitsbereichs."
+msgstr "realloc: Underflow erkannt; mh_nbytes außerhalb des Gültigkeitsbereichs."
 
 #: lib/malloc/malloc.c:1141
-#, fuzzy
 msgid "realloc: underflow detected; magic8 corrupted"
-msgstr ""
-"realloc: Underflow erkannt; mh_nbytes außerhalb des Gültigkeitsbereichs."
+msgstr "realloc: Underflow erkannt; magic8 beschädigt."
 
 #: lib/malloc/malloc.c:1150
 msgid "realloc: start and end chunk sizes differ"
@@ -1434,22 +1409,17 @@ msgstr "realloc: Beginn und Ende Segmentgrößen sind unterschiedlich.<"
 #: lib/malloc/table.c:191
 #, c-format
 msgid "register_alloc: alloc table is full with FIND_ALLOC?\n"
-msgstr ""
-"register_alloc: Speicherzuordnungstabelle ist mit FIND_ALLOC gefüllt?\n"
+msgstr "register_alloc: Speicherzuordnungstabelle ist mit FIND_ALLOC gefüllt?\n"
 
 #: lib/malloc/table.c:200
 #, c-format
 msgid "register_alloc: %p already in table as allocated?\n"
-msgstr ""
-"register_alloc: %p ist bereits in der Speicherzuordnungstabelle als belegt "
-"gekennzeichnet?\n"
+msgstr "register_alloc: %p ist bereits in der Speicherzuordnungstabelle als belegt gekennzeichnet?\n"
 
 #: lib/malloc/table.c:253
 #, c-format
 msgid "register_free: %p already in table as free?\n"
-msgstr ""
-"register_free: %p ist bereits in der Speicherzuordnungstabelle als frei "
-"gekennzeichnet?\n"
+msgstr "register_free: %p ist bereits in der Speicherzuordnungstabelle als frei gekennzeichnet?\n"
 
 #: lib/sh/fmtulong.c:102
 msgid "invalid base"
@@ -1530,9 +1500,7 @@ msgstr "make_here_document: Falscher Befehlstyp %d."
 #: make_cmd.c:657
 #, c-format
 msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
-msgstr ""
-"Das in der Zeile %d beginnende Here-Dokument geht bis zum Dateiende "
-"(erwartet wird »%s«)."
+msgstr "Das in der Zeile %d beginnende Here-Dokument geht bis zum Dateiende (erwartet wird »%s«)."
 
 #: make_cmd.c:756
 #, c-format
@@ -1541,9 +1509,7 @@ msgstr ""
 
 #: parse.y:2393
 #, c-format
-msgid ""
-"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
-"truncated"
+msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated"
 msgstr ""
 
 #: parse.y:2826
@@ -1717,9 +1683,7 @@ msgstr "%s: Kann fd keiner Variable zuweisen."
 
 #: redir.c:649
 msgid "/dev/(tcp|udp)/host/port not supported without networking"
-msgstr ""
-"Dateinamen der Form /dev/(tcp|udp)/host/port werden ohne Netzwerk nicht "
-"unterstützt"
+msgstr "Dateinamen der Form /dev/(tcp|udp)/host/port werden ohne Netzwerk nicht unterstützt"
 
 #: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
 msgid "redirection error: cannot duplicate fd"
@@ -1799,16 +1763,12 @@ msgstr "\t-%s oder Option -o\n"
 #: shell.c:2068
 #, c-format
 msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
-msgstr ""
-"Geben Sie »%s -c \"help set\"« ein, um mehr über Shell-Optionen zu "
-"erfahren.\n"
+msgstr "Geben Sie »%s -c \"help set\"« ein, um mehr über Shell-Optionen zu erfahren.\n"
 
 #: shell.c:2069
 #, c-format
 msgid "Type `%s -c help' for more information about shell builtin commands.\n"
-msgstr ""
-"Geben Sie »%s -c help« ein, um mehr über eingebaute Shellkommandos zu "
-"erfahren.\n"
+msgstr "Geben Sie »%s -c help« ein, um mehr über eingebaute Shellkommandos zu erfahren.\n"
 
 #: shell.c:2070
 #, c-format
@@ -2088,12 +2048,8 @@ msgid "$%s: cannot assign in this way"
 msgstr "$%s: Kann so nicht zuweisen."
 
 #: subst.c:9814
-msgid ""
-"future versions of the shell will force evaluation as an arithmetic "
-"substitution"
-msgstr ""
-"Zukünftige Versionen dieser Shell werden das Auswerten arithmetischer "
-"Ersetzungen erzwingen."
+msgid "future versions of the shell will force evaluation as an arithmetic substitution"
+msgstr "Zukünftige Versionen dieser Shell werden das Auswerten arithmetischer Ersetzungen erzwingen."
 
 #: subst.c:10367
 #, c-format
@@ -2138,9 +2094,9 @@ msgid "missing `]'"
 msgstr "Fehlende »]«"
 
 #: test.c:899
-#, fuzzy, c-format
+#, c-format
 msgid "syntax error: `%s' unexpected"
-msgstr "Syntax Fehler: unerwartetes `;'."
+msgstr "Syntax Fehler: »%s« unerwartet."
 
 #: trap.c:220
 msgid "invalid signal number"
@@ -2158,8 +2114,7 @@ msgstr "run_pending_traps: Ungültiger Wert in trap_list[%d]: %p"
 
 #: trap.c:418
 #, c-format
-msgid ""
-"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
+msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
 msgstr ""
 
 # Programmierfehler
@@ -2250,17 +2205,12 @@ msgid "%s: %s: compatibility value out of range"
 msgstr "%s: %s: compatibility value out of range"
 
 #: version.c:46 version2.c:46
-#, fuzzy
 msgid "Copyright (C) 2020 Free Software Foundation, Inc."
-msgstr "Copyright (C) 2018 Free Software Foundation, Inc."
+msgstr "Copyright (C) 2020 Free Software Foundation, Inc."
 
 #: version.c:47 version2.c:47
-msgid ""
-"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
-"html>\n"
-msgstr ""
-"Lizenz GPLv3+: GNU GPL Version 3 oder jünger <http://gnu.org/licenses/gpl."
-"html>\n"
+msgid "License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n"
+msgstr "Lizenz GPLv3+: GNU GPL Version 3 oder jünger <http://gnu.org/licenses/gpl.html>\n"
 
 #: version.c:86 version2.c:86
 #, c-format
@@ -2304,9 +2254,7 @@ msgid "unalias [-a] name [name ...]"
 msgstr "unalias [-a] Name [Name ...]"
 
 #: builtins.c:53
-msgid ""
-"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-"
-"x keyseq:shell-command] [keyseq:readline-function or readline-command]"
+msgid "bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-x keyseq:shell-command] [keyseq:readline-function or readline-command]"
 msgstr ""
 "bind [-lpsvPSVX] [-m Tastaturtabelle] [-f Dateiname] [-q Name] [-u Name]\n"
 "\t[-r Tastenfolge] [-x Tastenfolge:Shell Kommando]\n"
@@ -2341,15 +2289,13 @@ msgid "command [-pVv] command [arg ...]"
 msgstr "command [-pVv] Kommando [Argument ...]"
 
 #: builtins.c:78
-#, fuzzy
 msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
-msgstr "declare [-aAfFgilrntux] [-p] [Name[=Wert] ...]"
+msgstr "declare [-aAfFgiIlrntux] [-p] [Name[=Wert] ...]"
 
 #
 #: builtins.c:80
-#, fuzzy
 msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
-msgstr "typeset [-aAfFgilnrtux] [-p] Name[=Wert] ..."
+msgstr "typeset [-aAfFgiIlnrtux] [-p] Name[=Wert] ..."
 
 #: builtins.c:82
 msgid "local [option] name[=value] ..."
@@ -2373,15 +2319,13 @@ msgstr "eval [Argument ...]"
 
 # https://lists.gnu.org/archive/html/bug-bash/2019-09/msg00026.html
 #: builtins.c:96
-#, fuzzy
 msgid "getopts optstring name [arg ...]"
-msgstr "getopts Optionen Variable [Argumente]"
+msgstr "getopts Optionen [Argumente ...]"
 
 # https://lists.gnu.org/archive/html/bug-bash/2019-09/msg00026.html
 #: builtins.c:98
-#, fuzzy
 msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
-msgstr "exec [-cl] [-a Name] [Kommando [Argumente ...]] [Umleitung ...]"
+msgstr "exec [-cl] [-a Name] [Kommando [Argument ...]] [Umleitung ...]"
 
 #: builtins.c:100
 msgid "exit [n]"
@@ -2393,9 +2337,7 @@ msgstr "logout [n]"
 
 #: builtins.c:105
 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]"
-msgstr ""
-"fc [-e Editor] [-lnr] [Anfang] [Ende] oder fc -s [Muster=Ersetzung] "
-"[Kommando]"
+msgstr "fc [-e Editor] [-lnr] [Anfang] [Ende] oder fc -s [Muster=Ersetzung] [Kommando]"
 
 #: builtins.c:109
 msgid "fg [job_spec]"
@@ -2414,12 +2356,8 @@ msgid "help [-dms] [pattern ...]"
 msgstr "help [-dms] [Muster ...]"
 
 #: builtins.c:123
-msgid ""
-"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg "
-"[arg...]"
-msgstr ""
-"history [-c] [-d Offset] [n] oder history -anrw [Dateiname] oder history -ps "
-"Argument [Argument...]"
+msgid "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]"
+msgstr "history [-c] [-d Offset] [n] oder history -anrw [Dateiname] oder history -ps Argument [Argument...]"
 
 #: builtins.c:127
 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]"
@@ -2430,24 +2368,16 @@ msgid "disown [-h] [-ar] [jobspec ... | pid ...]"
 msgstr "disown [-h] [-ar] [Jobbezeichnung ... | pid ...]"
 
 #: builtins.c:134
-msgid ""
-"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l "
-"[sigspec]"
-msgstr ""
-"kill [-s Signalname | -n Signalnummer | -Signalname] pid | jobspec ... oder "
-"kill -l [Signalname]"
+msgid "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]"
+msgstr "kill [-s Signalname | -n Signalnummer | -Signalname] pid | jobspec ... oder kill -l [Signalname]"
 
 #: builtins.c:136
 msgid "let arg [arg ...]"
 msgstr "let Argument [Argument ...]"
 
 #: builtins.c:138
-msgid ""
-"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p "
-"prompt] [-t timeout] [-u fd] [name ...]"
-msgstr ""
-"read [-ers] [-a Feld] [-d Begrenzer] [-i Text] [-n Zeichenanzahl] [-N "
-"Zeichenanzahl] [-p Prompt] [-t Zeitlimit] [-u fd] [Name ...]"
+msgid "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]"
+msgstr "read [-ers] [-a Feld] [-d Begrenzer] [-i Text] [-n Zeichenanzahl] [-N Zeichenanzahl] [-p Prompt] [-t Zeitlimit] [-u fd] [Name ...]"
 
 #: builtins.c:140
 msgid "return [n]"
@@ -2510,9 +2440,8 @@ msgid "umask [-p] [-S] [mode]"
 msgstr "umask [-p] [-S] [Modus]"
 
 #: builtins.c:177
-#, fuzzy
 msgid "wait [-fn] [-p var] [id ...]"
-msgstr "wait [-fn] [id ...]"
+msgstr "wait [-fn] [-p Variable] [id ...]"
 
 #: builtins.c:181
 msgid "wait [pid ...]"
@@ -2539,12 +2468,8 @@ msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac"
 msgstr "case Wort in [Muster [| Muster]...) Kommandos ;;]... esac"
 
 #: builtins.c:194
-msgid ""
-"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else "
-"COMMANDS; ] fi"
-msgstr ""
-"if Kommandos; then Kommandos; [ elif Kommandos; then Kommandos; ]... [ else "
-"Kommandos; ] fi"
+msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi"
+msgstr "if Kommandos; then Kommandos; [ elif Kommandos; then Kommandos; ]... [ else Kommandos; ] fi"
 
 #: builtins.c:196
 msgid "while COMMANDS; do COMMANDS; done"
@@ -2604,45 +2529,28 @@ msgstr "printf [-v var] Format [Argumente]"
 
 # https://lists.gnu.org/archive/html/bug-bash/2019-09/msg00027.html
 #: builtins.c:231
-#, fuzzy
-msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
-"suffix] [name ...]"
+msgid "complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [name ...]"
 msgstr ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o Option] [-A Aktion]\n"
-"         [-G Suchmuster] [-W Wortliste]  [-F Funktion] [-C Kommando]\n"
-"         [-X Filtermuster] [-P Prefix] [-S Suffix] [Name ...]"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o Option] [-A Aktion] [-G Suchmuster] [-W Wortliste]  [-F Funktion] [-C Kommando] [-X Filtermuster] [-P Prefix] [-S Suffix] [Name \n"
+"...]"
 
 # https://lists.gnu.org/archive/html/bug-bash/2019-09/msg00027.html
 #: builtins.c:235
-#, fuzzy
-msgid ""
-"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-"
-"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
-msgstr ""
-"compgen [-abcdefgjksuv] [-o Option] [-A Aktion] [-G Suchmuster] [-W "
-"Wortliste]\n"
-"        [-F Funktion] [-C Kommando] [-X Filtermuster] [-P Prefix] [-S "
-"Suffix]\n"
-"        [Wort]"
+msgid "compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+msgstr "compgen [-abcdefgjksuv] [-o Option] [-A Aktion] [-G Suchmuster] [-W Wortliste] [-F Funktion] [-C Kommando] [-X Filtermuster] [-P Prefix] [-S Suffix] [Wort]"
 
 #: builtins.c:239
 msgid "compopt [-o|+o option] [-DEI] [name ...]"
 msgstr "compopt [-o|+o Option] [-DEI] [Name ...]"
 
 #: builtins.c:242
-msgid ""
-"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
-"callback] [-c quantum] [array]"
+msgid "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]"
 msgstr ""
 "mapfile [-d Begrenzer] [-n Anzahl] [-O Quelle] [-s Anzahl] [-t] [-u fd]\n"
 "        [-C Callback] [-c Menge] [Feldvariable]"
 
 #: builtins.c:244
-msgid ""
-"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
-"callback] [-c quantum] [array]"
+msgid "readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]"
 msgstr ""
 "readarray [-d Begrenzer] [-n Anzahl] [-O Quelle] [-s Anzahl] [-t]\n"
 "          [-u fd] [-C Callback] [-c Menge] [Feldvariable]"
@@ -2663,8 +2571,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 ""
 "Definiert Aliase oder zeigt sie an.\n"
@@ -2714,30 +2621,25 @@ msgid ""
 "    Options:\n"
 "      -m  keymap         Use KEYMAP as the keymap for the duration of this\n"
 "                         command.  Acceptable keymap names are emacs,\n"
-"                         emacs-standard, emacs-meta, emacs-ctlx, vi, vi-"
-"move,\n"
+"                         emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n"
 "                         vi-command, and vi-insert.\n"
 "      -l                 List names of functions.\n"
 "      -P                 List function names and bindings.\n"
 "      -p                 List functions and bindings in a form that can be\n"
 "                         reused as input.\n"
-"      -S                 List key sequences that invoke macros and their "
-"values\n"
-"      -s                 List key sequences that invoke macros and their "
-"values\n"
+"      -S                 List key sequences that invoke macros and their values\n"
+"      -s                 List key sequences that invoke macros and their values\n"
 "                         in a form that can be reused as input.\n"
 "      -V                 List variable names and values\n"
 "      -v                 List variable names and values in a form that can\n"
 "                         be reused as input.\n"
 "      -q  function-name  Query about which keys invoke the named function.\n"
-"      -u  function-name  Unbind all keys which are bound to the named "
-"function.\n"
+"      -u  function-name  Unbind all keys which are bound to the named function.\n"
 "      -r  keyseq         Remove the binding for KEYSEQ.\n"
 "      -f  filename       Read key bindings from FILENAME.\n"
 "      -x  keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n"
 "    \t\t\t\tKEYSEQ is entered.\n"
-"      -X                 List key sequences bound with -x and associated "
-"commands\n"
+"      -X                 List key sequences bound with -x and associated commands\n"
 "                         in a form that can be reused as input.\n"
 "    \n"
 "    Exit Status:\n"
@@ -2752,47 +2654,33 @@ msgstr ""
 "    re-read-init-file'.\n"
 "    \n"
 "    Optionen:\n"
-"      -m  Keymap         Benutzt KEYMAP as Tastaturbelegung für die "
-"Laufzeit\n"
-"                         dieses Kommandos.  Gültige Keymapnamen sind: "
-"emacs,\n"
-"                         emacs-standard, emacs-meta, emacs-ctlx, vi, vi-"
-"move,\n"
+"      -m  Keymap         Benutzt KEYMAP as Tastaturbelegung für die Laufzeit\n"
+"                         dieses Kommandos.  Gültige Keymapnamen sind: emacs,\n"
+"                         emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n"
 "                         vi-command und vi-insert.\n"
 "      -l                 Listet Funktionsnamen auf.\n"
 "      -P                 Listet Funktionsnamen und Tastenzuordnungen auf.\n"
-"      -p                 Listet Funktionsnamen und Tastenzuordnungen so "
-"auf,\n"
-"                         dass sie direkt als Eingabe verwendet werden "
-"können.\n"
-"      -S                 Listet Tastenfolgen und deren Werte auf, die "
-"Makros \n"
+"      -p                 Listet Funktionsnamen und Tastenzuordnungen so auf,\n"
+"                         dass sie direkt als Eingabe verwendet werden können.\n"
+"      -S                 Listet Tastenfolgen und deren Werte auf, die Makros \n"
 "                         aufrufen.\n"
-"      -s                 Listet Tastenfolgen und deren Werte auf, die "
-"Makros \n"
-"                         aufrufen, dass sie als Eingabe wiederverwendet "
-"werden\n"
+"      -s                 Listet Tastenfolgen und deren Werte auf, die Makros \n"
+"                         aufrufen, dass sie als Eingabe wiederverwendet werden\n"
 "                         können.\n"
 "      -V                 Listet Variablennamen und Werte auf.\n"
-"      -v                 Listet Variablennamen und Werte so auf, dass sie "
-"als\n"
+"      -v                 Listet Variablennamen und Werte so auf, dass sie als\n"
 "                         Eingabe verwendet werden können.\n"
 "      -q  Funktionsname  Sucht die Tastenfolgen, welche die angegebene\n"
 "                         Funktion aufrufen.\n"
-"      -u  Funktionsname  Entfernt alle der Funktion zugeordneten "
-"Tastenfolgen.\n"
-"      -r  Tastenfolge    Entfernt die Zuweisungen der angegebeben "
-"Tastenfolge.\n"
-"      -f  Dateiname      Liest die Tastenzuordnungen aus der angegebenen "
-"Datei.\n"
-"      -x  Tastenfolge:Shellkommando\tWeist der Tastenfolge das "
-"Shellkommando\n"
+"      -u  Funktionsname  Entfernt alle der Funktion zugeordneten Tastenfolgen.\n"
+"      -r  Tastenfolge    Entfernt die Zuweisungen der angegebeben Tastenfolge.\n"
+"      -f  Dateiname      Liest die Tastenzuordnungen aus der angegebenen Datei.\n"
+"      -x  Tastenfolge:Shellkommando\tWeist der Tastenfolge das Shellkommando\n"
 "    \t\t\t\t\tzu.\n"
 "      -X                                Listet mit -x erzeugte\n"
 "                                        Tastenfolgen und deren Werte\n"
 "                                        auf, die Makros aufrufen, dass\n"
-"                                        sie als Eingabe wiederverwendet "
-"werden\n"
+"                                        sie als Eingabe wiederverwendet werden\n"
 "                                        können.\n"
 "    \n"
 "    Rückgabewert: \n"
@@ -2813,8 +2701,7 @@ msgstr ""
 "Verlässt for-, while- oder until-Schleifen.\n"
 "\n"
 "    Break beendet eine »for«-, »while«- oder »until«- Schleife. Wenn »n«\n"
-"    angegeben ist, werden entsprechend viele geschachtelte Schleifen "
-"beendet.\n"
+"    angegeben ist, werden entsprechend viele geschachtelte Schleifen beendet.\n"
 "\n"
 "    Rückgabewert:\n"
 "    Der Rückgabewert ist 0, außer »n« ist nicht größer oder gleich 1."
@@ -2846,8 +2733,7 @@ msgid ""
 "    \n"
 "    Execute SHELL-BUILTIN with arguments ARGs without performing command\n"
 "    lookup.  This is useful when you wish to reimplement a shell builtin\n"
-"    as a shell function, but need to execute the builtin within the "
-"function.\n"
+"    as a shell function, but need to execute the builtin within the function.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
@@ -2890,8 +2776,7 @@ msgstr ""
 "    wobei 0 der aktuelle Funktionsaufruf ist.\n"
 "\n"
 "    Rückgabewert:\n"
-"    Ist ungleich 0 wenn keine Shellfunktion ausgeführt wird oder das "
-"Argument\n"
+"    Ist ungleich 0 wenn keine Shellfunktion ausgeführt wird oder das Argument\n"
 "    ungültig ist, sonst 0."
 
 # cd
@@ -2899,22 +2784,16 @@ msgstr ""
 msgid ""
 "Change the shell working directory.\n"
 "    \n"
-"    Change the current directory to DIR.  The default DIR is the value of "
-"the\n"
+"    Change the current directory to DIR.  The default DIR is the value of the\n"
 "    HOME shell variable.\n"
 "    \n"
-"    The variable CDPATH defines the search path for the directory "
-"containing\n"
-"    DIR.  Alternative directory names in CDPATH are separated by a colon "
-"(:).\n"
-"    A null directory name is the same as the current directory.  If DIR "
-"begins\n"
+"    The variable CDPATH defines the search path for the directory containing\n"
+"    DIR.  Alternative directory names in CDPATH are separated by a colon (:).\n"
+"    A null directory name is the same as the current directory.  If DIR begins\n"
 "    with a slash (/), then CDPATH is not used.\n"
 "    \n"
-"    If the directory is not found, and the shell option `cdable_vars' is "
-"set,\n"
-"    the word is assumed to be  a variable name.  If that variable has a "
-"value,\n"
+"    If the directory is not found, and the shell option `cdable_vars' is set,\n"
+"    the word is assumed to be  a variable name.  If that variable has a value,\n"
 "    its value is used for DIR.\n"
 "    \n"
 "    Options:\n"
@@ -2930,13 +2809,11 @@ msgid ""
 "    \t\tattributes as a directory containing the file attributes\n"
 "    \n"
 "    The default is to follow symbolic links, as if `-L' were specified.\n"
-"    `..' is processed by removing the immediately previous pathname "
-"component\n"
+"    `..' is processed by removing the immediately previous pathname component\n"
 "    back to a slash or the beginning of DIR.\n"
 "    \n"
 "    Exit Status:\n"
-"    Returns 0 if the directory is changed, and if $PWD is set successfully "
-"when\n"
+"    Returns 0 if the directory is changed, and if $PWD is set successfully when\n"
 "    -P is used; non-zero otherwise."
 msgstr ""
 "Wechselt das Arbeitsverzeichnis.\n"
@@ -2999,8 +2876,7 @@ msgstr ""
 "Gibt den Namen des aktuellen Arbeitsverzeichnisses aus.\n"
 "\n"
 "    Optionen:\n"
-"      -L        Gibt den Inhalt der Variable $PWD aus, wenn sie das "
-"aktuelle\n"
+"      -L        Gibt den Inhalt der Variable $PWD aus, wenn sie das aktuelle\n"
 "                Arbeitsverzeichnis enthält.\n"
 "      -P        Gibt den physischen Verzeichnispfad aus, ohne symbolische\n"
 "                Links.\n"
@@ -3059,8 +2935,7 @@ msgid ""
 "Execute a simple command or display information about commands.\n"
 "    \n"
 "    Runs COMMAND with ARGS suppressing  shell function lookup, or display\n"
-"    information about the specified COMMANDs.  Can be used to invoke "
-"commands\n"
+"    information about the specified COMMANDs.  Can be used to invoke commands\n"
 "    on disk when a function with the same name exists.\n"
 "    \n"
 "    Options:\n"
@@ -3072,8 +2947,7 @@ msgid ""
 "    Exit Status:\n"
 "    Returns exit status of COMMAND, or failure if COMMAND is not found."
 msgstr ""
-"Führt ein einfaches Kommando aus oder zeigt Informationen über Kommandos "
-"an.\n"
+"Führt ein einfaches Kommando aus oder zeigt Informationen über Kommandos an.\n"
 "\n"
 "    Führt das Kommando mit den angegebenen Argumenten aus, ohne\n"
 "    Shell-Funktion nachzuschlagen oder zeigt Informationen über die\n"
@@ -3081,21 +2955,18 @@ msgstr ""
 "    werden, wenn eine Shell-Funktion gleichen Namens existiert.\n"
 "\n"
 "    Optionen:\n"
-"      -p        Es wird ein Standardwert für PATH verwendet, der "
-"garantiert,\n"
+"      -p        Es wird ein Standardwert für PATH verwendet, der garantiert,\n"
 "                dass alle Standard-Dienstprogramme gefunden werden.\n"
 "      -v        Beschreibung des Kommandos ausgeben.\n"
 "                Ähnlich dem eingebauten Kommando »type«.\n"
 "      -V        Eine ausführlichere Beschreibung jedes Kommandos ausgeben.\n"
 "\n"
 "    Rückgabewert:\n"
-"    Gibt den Rückgabewert des Kommandos zurück, oder eine Fehlermeldung, "
-"wenn\n"
+"    Gibt den Rückgabewert des Kommandos zurück, oder eine Fehlermeldung, wenn\n"
 "    das Kommando nicht gefunden wird."
 
 # declare
 #: builtins.c:490
-#, fuzzy
 msgid ""
 "Set variable values and attributes.\n"
 "    \n"
@@ -3128,8 +2999,7 @@ msgid ""
 "    Variables with the integer attribute have arithmetic evaluation (see\n"
 "    the `let' command) performed when the variable is assigned a value.\n"
 "    \n"
-"    When used in a function, `declare' makes NAMEs local, as with the "
-"`local'\n"
+"    When used in a function, `declare' makes NAMEs local, as with the `local'\n"
 "    command.  The `-g' option suppresses this behavior.\n"
 "    \n"
 "    Exit Status:\n"
@@ -3139,8 +3009,7 @@ msgstr ""
 "Setzt Variablenwerte und deren Attribute.\n"
 "\n"
 "    Deklariert Variablen und weist ihnen Attribute zu. Wenn keine Namen\n"
-"    angegeben sind, werden die Attribute und Werte aller Variablen "
-"ausgegeben.\n"
+"    angegeben sind, werden die Attribute und Werte aller Variablen ausgegeben.\n"
 "    \n"
 "    Optionen:\n"
 "      -f        Schränkt Aktionen oder Anzeigen auf Funktionsnamen\n"
@@ -3149,6 +3018,8 @@ msgstr ""
 "                und Quelldatei beim Debuggen).\n"
 "      -g        Deklariert globale Varieblen innerhalb einer\n"
 "                Shellfunktion; wird ansonsten ignoriert.\n"
+"      -I        Eine neue lokale Variable erhält die Attribute und Werte der\n"
+"                Variable mit gleichen Namen im vorherigen Gültigkeitsbereich. \n"
 "      -p        Zeigt die Attribute und Werte jeder angegebenen\n"
 "                Variable an.\n"
 "\n"
@@ -3156,13 +3027,12 @@ msgstr ""
 "      -a\tDeklariert ein indiziertes Feld (wenn unterstützt).\n"
 "      -A\tDeklariert ein assoziatives Feld (wenn unterstützt).\n"
 "      -i\tDeklariert eine ganzzahlige Variable.\n"
-"      -l\tKonvertiert die Variabennmamen in Kleinbuchstaben.\n"
+"      -l\tKonvertiert die übergebenen Werte zu Kleinbuchstaben.\n"
 "      -n\tDer Name wird als Variable interpretiert. \n"
 "      -r\tDeklariert nur lesbare Variablen.\n"
 "      -t\tWeist das Attribut »trace« zu.\n"
-"      -u\tKonvertiert die Variablennamen in Großbuchstaben.\n"
-"      -x\tExportiert die Variablen über die aktuelle Shell-\n"
-"                Umgebung hinaus.\n"
+"      -u\tKonvertiert die übergebenen Werte in Großbuchstaben.\n"
+"      -x\tExportiert die Variablen.\n"
 "\n"
 "    Das Voranstellen von »+« anstelle von »-« schaltet die angegebenen\n"
 "    Attribute ab.\n"
@@ -3220,8 +3090,7 @@ msgstr ""
 msgid ""
 "Write arguments to the standard output.\n"
 "    \n"
-"    Display the ARGs, separated by a single space character and followed by "
-"a\n"
+"    Display the ARGs, separated by a single space character and followed by a\n"
 "    newline, on the standard output.\n"
 "    \n"
 "    Options:\n"
@@ -3245,11 +3114,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"
@@ -3369,8 +3236,7 @@ msgstr ""
 msgid ""
 "Execute arguments as a shell command.\n"
 "    \n"
-"    Combine ARGs into a single string, use the result as input to the "
-"shell,\n"
+"    Combine ARGs into a single string, use the result as input to the shell,\n"
 "    and execute the resulting commands.\n"
 "    \n"
 "    Exit Status:\n"
@@ -3387,7 +3253,6 @@ msgstr ""
 
 # getopts
 #: builtins.c:652
-#, fuzzy
 msgid ""
 "Parse option arguments.\n"
 "    \n"
@@ -3429,7 +3294,7 @@ msgid ""
 msgstr ""
 "Verarbeitet Optionsargumente.\n"
 "\n"
-"    Getopts wird von Shell-Prozeduren verwendet, um die\n"
+"    Getopts wird von Shellprozeduren verwendet, um die\n"
 "    Kommandozeilenoptionen auszuwerten.\n"
 "\n"
 "    \"Optionen\" enthält die auszuwertenden Buchstaben. Ein Doppelpunkt\n"
@@ -3458,8 +3323,7 @@ msgstr ""
 "    keine Fehlermeldungen ausgegeben, auch wenn das erste Zeichen\n"
 "    von OPTSTRING kein Doppelpunkt ist. OPTERR hat den Vorgabewert »1«.\n"
 "\n"
-"    Wenn im Aufruf von »getops« die »Argumente« angegeben sind, werden "
-"diese\n"
+"    Wenn im Aufruf von »getops« die »Argumente« angegeben sind, werden diese\n"
 "    verarbeitet. Ansonsten werden die von der Position abhängigen\n"
 "    Parameter ($1, $2, etc.) verarbeitet.\n"
 "\n"
@@ -3474,8 +3338,7 @@ msgid ""
 "Replace the shell with the given command.\n"
 "    \n"
 "    Execute COMMAND, replacing this shell with the specified program.\n"
-"    ARGUMENTS become the arguments to COMMAND.  If COMMAND is not "
-"specified,\n"
+"    ARGUMENTS become the arguments to COMMAND.  If COMMAND is not specified,\n"
 "    any redirections take effect in the current shell.\n"
 "    \n"
 "    Options:\n"
@@ -3483,13 +3346,11 @@ msgid ""
 "      -c\texecute COMMAND with an empty environment\n"
 "      -l\tplace a dash in the zeroth argument to COMMAND\n"
 "    \n"
-"    If the command cannot be executed, a non-interactive shell exits, "
-"unless\n"
+"    If the command cannot be executed, a non-interactive shell exits, unless\n"
 "    the shell option `execfail' is set.\n"
 "    \n"
 "    Exit Status:\n"
-"    Returns success unless COMMAND is not found or a redirection error "
-"occurs."
+"    Returns success unless COMMAND is not found or a redirection error occurs."
 msgstr ""
 "Ersetzt die Shell durch das angegebene Kommando.\n"
 "\n"
@@ -3520,8 +3381,7 @@ msgid ""
 msgstr ""
 "Beendet die aktuelle Shell.\n"
 "\n"
-"    Beendet die aktuelle Shell mit dem Rückgabewert N. Wenn N nicht "
-"angegeben\n"
+"    Beendet die aktuelle Shell mit dem Rückgabewert N. Wenn N nicht angegeben\n"
 "    ist, wird der Rückgabewert des letzten ausgeführten Kommandos übernommen."
 
 # logout
@@ -3529,8 +3389,7 @@ msgstr ""
 msgid ""
 "Exit a login shell.\n"
 "    \n"
-"    Exits a login shell with exit status N.  Returns an error if not "
-"executed\n"
+"    Exits a login shell with exit status N.  Returns an error if not executed\n"
 "    in a login shell."
 msgstr ""
 "Beendet eine Login-Shell.\n"
@@ -3544,15 +3403,13 @@ msgstr ""
 msgid ""
 "Display or execute commands from the history list.\n"
 "    \n"
-"    fc is used to list or edit and re-execute commands from the history "
-"list.\n"
+"    fc is used to list or edit and re-execute commands from the history list.\n"
 "    FIRST and LAST can be numbers specifying the range, or FIRST can be a\n"
 "    string, which means the most recent command beginning with that\n"
 "    string.\n"
 "    \n"
 "    Options:\n"
-"      -e ENAME\tselect which editor to use.  Default is FCEDIT, then "
-"EDITOR,\n"
+"      -e ENAME\tselect which editor to use.  Default is FCEDIT, then EDITOR,\n"
 "    \t\tthen vi\n"
 "      -l \tlist lines instead of editing\n"
 "      -n\tomit line numbers when listing\n"
@@ -3566,9 +3423,33 @@ msgid ""
 "    the last command.\n"
 "    \n"
 "    Exit Status:\n"
-"    Returns success or status of executed command; non-zero if an error "
-"occurs."
+"    Returns success or status of executed command; non-zero if an error occurs."
 msgstr ""
+"Anzeigen oder Ausführen von Befehlen aus der History-Liste.\n"
+"    \n"
+"    fc wird verwendet, um Befehle aus der History-Liste aufzulisten,\n"
+"    zu bearbeiten und erneut auszuführen.  FIRST und LAST können\n"
+"    Zahlen sein, die den Bereich angeben, oder FIRST kann eine\n"
+"    Zeichenkette sein, was bedeutet, dass der jüngste Befehl mit\n"
+"    dieser Zeichenfolge beginnt.\n"
+"    \n"
+"    Optionen:\n"
+"      -e ENAME Auswahl des zu verwendenden Editors.  Standard sind FCEDIT,\n"
+"         dann EDITOR, dann vi.\n"
+"      -l Zeilen auflisten statt bearbeiten.\n"
+"      -n Zeilennummern beim Auflisten weglassen.\n"
+"      -r kehrt die Reihenfolge der Zeilen um (die neuesten Zeilen zuerst).\n"
+"    \n"
+"    Mit `fc -s [pat=rep ...] [command]' wird COMMAND erneut\n"
+"    ausgeführt, nachdem die Ersetzung OLD=NEW durchgeführt wurde.\n"
+"    \n"
+"    Ein nützlicher Alias ist r='fc -s', so dass die Eingabe von `r cc'\n"
+"    den letzten Befehl ausführt, der mit \"cc\" beginnt, und die Eingabe\n"
+"    von \"r\" den letzten Befehl erneut ausführt.\n"
+"    \n"
+"    Exit-Status:\n"
+"    Gibt den Erfolg oder den Status des ausgeführten Befehls zurück;\n"
+"    ungleich Null, wenn ein Fehler auftritt."
 
 #: builtins.c:764
 msgid ""
@@ -3594,10 +3475,8 @@ msgstr ""
 msgid ""
 "Move jobs to the background.\n"
 "    \n"
-"    Place the jobs identified by each JOB_SPEC in the background, as if "
-"they\n"
-"    had been started with `&'.  If JOB_SPEC is not present, the shell's "
-"notion\n"
+"    Place the jobs identified by each JOB_SPEC in the background, as if they\n"
+"    had been started with `&'.  If JOB_SPEC is not present, the shell's notion\n"
 "    of the current job is used.\n"
 "    \n"
 "    Exit Status:\n"
@@ -3612,13 +3491,13 @@ msgstr ""
 "    Immer Erfolg, außer wenn die Jobsteuerung nicht verfügbar ist\n"
 "    oder ein Fehler auftritt."
 
+# hash
 #: builtins.c:793
 msgid ""
 "Remember or display program locations.\n"
 "    \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"
@@ -3635,6 +3514,29 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless NAME is not found or an invalid option is given."
 msgstr ""
+"Programpfade merken oder anzeigen.\n"
+"    \n"
+"    Ermittelt und speichert den vollständigen Pfadnamen jedes\n"
+"    Kommandos NAME.  Wenn keine Argumente angegeben werden, werden\n"
+"    Informationen über gespeicherte Kommandod angezeigt.\n"
+"    \n"
+"    Optionen:\n"
+"      -d Vergessen des Speicherortes für jeden NAME\n"
+"      -l Anzeige in einem Format, das als Eingabe wiederverwendet werden kann\n"
+"      -p Pfadname verwendet PATHNAME als den vollständigen Pfadnamen von NAME\n"
+"      -r vergisst alle gespeicherten Pfade\n"
+"      \n"
+"      -t gibt den Speicherort jedes NAMENS aus, wobei jedem\n"
+"         Speicherort der entsprechende NAME vorangestellt wird,\n"
+"         wenn mehrere NAMEs angegeben sind\n"
+"                \n"
+"    Argumente:\n"
+"        NAME    Jeder NAME wird in $PATH gesucht und in die Liste\n"
+"        der gespeicherten Befehle hinzugefügt.\n"
+"    \n"
+"    Exit-Status:\n"
+"    Gibt Erfolg zurück, es sei denn, NAME wird nicht gefunden oder es\n"
+"    wird eine ungültige Option angegeben."
 
 # help
 #: builtins.c:818
@@ -3655,8 +3557,7 @@ msgid ""
 "      PATTERN\tPattern specifying a help topic\n"
 "    \n"
 "    Exit Status:\n"
-"    Returns success unless PATTERN is not found or an invalid option is "
-"given."
+"    Returns success unless PATTERN is not found or an invalid option is given."
 msgstr ""
 "Informationen zu eingebauten Kommandos.\n"
 "\n"
@@ -3678,6 +3579,7 @@ msgstr ""
 "    Erfolg, außer wenn das Muster nicht gefunden oder eine ungültige Option\n"
 "    angegeben wurde."
 
+# history
 #: builtins.c:842
 msgid ""
 "Display or manipulate the history list.\n"
@@ -3706,13 +3608,47 @@ msgid ""
 "    \n"
 "    If the HISTTIMEFORMAT variable is set and not null, its value is used\n"
 "    as a format string for strftime(3) to print the time stamp associated\n"
-"    with each displayed history entry.  No time stamps are printed "
-"otherwise.\n"
+"    with each displayed history entry.  No time stamps are printed otherwise.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless an invalid option is given or an error occurs."
 msgstr ""
+"Zeigt die Verlaufsliste an oder bearbeitet sie.\n"
+"    \n"
+"    Zeigt die Verlaufsliste mit Zeilennummern an und stellt jedem\n"
+"    geänderten Eintrag ein `*' vorangestellt.  Ein Argument von N\n"
+"    listet nur die letzten N Einträge auf.\n"
+"    \n"
+"    Optionen:\n"
+"      -c Löscht die Verlaufsliste, indem alle Einträge gelöscht werden.\n"
+"      -d offset löscht den Verlaufseintrag an der Position\n"
+"         OFFSET. Negative Offsets zählen vom Verlaufslistenende\n"
+"         zurück.\n"
+"      -a Anhängen vom Verlauf dieser Sitzung an die Verlaufsdatei.\n"
+"      -n alle nicht bereits aus der Verlaufsdatei gelesenen.\n"
+"         Verlaufszeilen lesen und an die Verlaufsliste anhängen.\n"
+"      -r liest die Verlaufsdatei und hängt den Inhalt an die\n"
+"         Verlaufsliste an.\n"
+"      -w schreibt den aktuellen Verlauf in die Verlaufsdatei.\n"
+"      -p führt eine Verlaufserweiterung für jedes ARG durch und zeigt\n"
+"         das Ergebnis an, ohne es in der Verlaufslise einzutragen.\n"
+"      -s die ARGs als einen einzigen Eintrag an die History-Liste anhängen.\n"
+"    \n"
+"    Wenn FILENAME angegeben ist, wird dieser als History-Datei verwendet.\n"
+"    Andernfalls, wenn HISTFILE einen Wert hat, wird dieser verwendet,\n"
+"    sonst ~/.bash_history.\n"
+"    \n"
+"    Wenn die Variable HISTTIMEFORMAT gesetzt und nicht null ist, wird\n"
+"    ihr Wert verwendet als Formatierungszeichenfolge für strftime(3)\n"
+"    verwendet, um den Zeitstempel zu Zeitstempel für jeden angezeigten\n"
+"    History-Eintrag zu drucken.  Andernfalls werden keine Zeitstempel\n"
+"    gedruckt.\n"
+"    \n"
+"    Rückgabewert:\n"
+"    Gibt einen Erfolg zurück, es sei denn, es wurde eine ungültige\n"
+"    Option angegeben oder es ist ein Fehler aufgetreten."
 
+# jobs
 #: builtins.c:879
 msgid ""
 "Display status of jobs.\n"
@@ -3736,7 +3672,30 @@ msgid ""
 "    Returns success unless an invalid option is given or an error occurs.\n"
 "    If -x is used, returns the exit status of COMMAND."
 msgstr ""
+"Auftragstatus anzeigen.\n"
+"    \n"
+"    Listet die aktiven Aufträge auf.  JOBSPEC schränkt die Ausgabe auf\n"
+"    diesen Auftrag ein.  Ohne Optionen werden die Status der aktiven\n"
+"    Aufträge angezeigt.\n"
+"    \n"
+"    Optionen:\n"
+"      -l zeigt zusätzlich auch die Prozessnummern an.\n"
+"      -n zeigt nur die Prozesse an, deren Status sich seit der letzten\n"
+"         Benachrichtigung geändert haben.\n"
+"      -p zeigt nur Prozessnummern an.\n"
+"      -r zeigt nur laufende Aufträge an.\n"
+"      -s zeigt nur gestoppte Aufträge an\n"
+"    \n"
+"    Mit der Option -x wird COMMAND ausgeführt, nachdem alle in ARGS\n"
+"    enthaltenen Auftragsspezifikationen durch die zugehörigen\n"
+"    Prozesnummern ersetzt worden sind.\n"
+"    \n"
+"    Rückgabewert:\n"
+"    Gibt einen Erfolg zurück, es sei denn, es wurde eine ungültige\n"
+"    Option angegeben oder es ist ein Fehler aufgetreten.  Wenn -x\n"
+"    verwendet wird, wird der Rückgebewert von COMMAND zurückgegeben."
 
+# disown
 #: builtins.c:906
 msgid ""
 "Remove jobs from current shell.\n"
@@ -3753,7 +3712,23 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option or JOBSPEC is given."
 msgstr ""
+"Entfernt Aufträge aus der aktuellen Shell.\n"
+"    \n"
+"    Entfernt jedes JOBSPEC-Argument aus der Tabelle der aktiven\n"
+"    Aufträge. Ohne JOBSPECs verwendet die Shell ihre Vorstellung vom\n"
+"    aktuellen Auftrag.\n"
+"    \n"
+"    Optionen:\n"
+"      -a entfernt alle Aufträge, wenn JOBSPEC nicht angegeben wird.\n"
+"      -h JOBSPEC maskieren, so dass der Auftrag kein SIGHUP erhält,\n"
+"         wenn die Shell ein SIGHUP empfängt.\n"
+"      -r entfernt nur laufende Aufträge.\n"
+"    \n"
+"    Beenden Status:\n"
+"    Gibt Erfolg zurück, außer wenn eine ungültige Option oder\n"
+"    JOBSPEC angegeben wurde."
 
+# kill
 #: builtins.c:925
 msgid ""
 "Send a signal to a job.\n"
@@ -3776,6 +3751,27 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option is given or an error occurs."
 msgstr ""
+"Sendet ein Signal an einen Auftrag.\n"
+"    \n"
+"    Sendet den durch PID oder JOBSPEC identifizierten Prozessen das\n"
+"    mit SIGSPEC oder SIGNUM anggebene Signal. Wenn weder SIGSPEC\n"
+"    noch SIGNUM angegeben sind, dann wird wird SIGTERM gesendet.\n"
+"    \n"
+"    Optionen:\n"
+"      -s sig SIG ist ein Signalname.\n"
+"      -n sig SIG ist eine Signalnummer.\n"
+"      -l listet die Signalnamen auf. Wenn Argumente auf `-l' folgen,\n"
+"         werden für diese Signalnummern die Namen aufgelistet.\n"
+"      -L Synonym für -l.\n"
+"    \n"
+"    Kill ist ein in die Shell eingebaute Funktion, da diese erlaubt,\n"
+"    Auftrags- statt Prozessnummern anzugeben. Weierhin kann Kill\n"
+"    Prozesse auch dann beenden, wenn die maximal erlaubte\n"
+"    Prozessanzahl erreicht ist.\n"
+"    \n"
+"    Exit-Status:\n"
+"    Gibt Erfolg zurück, es sei denn, es wurde eine ungültige Option\n"
+"    angegeben oder es ist ein Fehler aufgetreten."
 
 #: builtins.c:949
 msgid ""
@@ -3784,8 +3780,7 @@ msgid ""
 "    Evaluate each ARG as an arithmetic expression.  Evaluation is done in\n"
 "    fixed-width integers with no check for overflow, though division by 0\n"
 "    is trapped and flagged as an error.  The following list of operators is\n"
-"    grouped into levels of equal-precedence operators.  The levels are "
-"listed\n"
+"    grouped into levels of equal-precedence operators.  The levels are listed\n"
 "    in order of decreasing precedence.\n"
 "    \n"
 "    \tid++, id--\tvariable post-increment, post-decrement\n"
@@ -3821,22 +3816,61 @@ msgid ""
 "    Exit Status:\n"
 "    If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise."
 msgstr ""
+"Auswerten arithmetischer Ausdrücke.\n"
+"    \n"
+"    Jedes ARG wird als arithmetischer Ausdruck ausgewertet.  Die\n"
+"    Auswertung erfolgt in Ganzzahlen mit fester Breite ohne\n"
+"    Überprüfung auf Überlauf. Division durch 0 wird abgefangen und als\n"
+"    Fehler gekennzeichnet.  Die folgende Liste von Operatoren ist in\n"
+"    abnehmender Präferenz nach gleichrangigen Operatoren gruppiert.\n"
+"    \n"
+"    \tid++, id-- Variable post-increment, post-decrement\n"
+"    \t++id, --id Variable pre-increment, pre-decrement\n"
+"    \t-, + unäres Minus, Plus\n"
+"    \t!, ~ logische und bitweise Negation\n"
+"    \t** Potenzierung\n"
+"    \t*, /, % Multiplikation, Division, Rest\n"
+"    \t+, - Addition, Subtraktion\n"
+"    \t<<, >> bitweise Links- und Rechtsverschiebung\n"
+"    \t<=, >=, <, > Vergleich\n"
+"    \t==, != Gleichheit, Ungleichheit\n"
+"    \t& bitweises UND\n"
+"    \t^ bitweises XOR\n"
+"    \t| bitweises ODER\n"
+"    \t&& logisches UND\n"
+"    \t|| logisches OR\n"
+"    \texpr ? expr : expr\n"
+"               Bedingte Ausführung\n"
+"    \t=, *=, /=, %=,\n"
+"    \t+=, -=, <<=, >>=,\n"
+"    \t&=, ^=, |= Zuweisung\n"
+"    \n"
+"    Shell-Variablen sind als Operanden zulässig. Der Variablenname\n"
+"    wird innerhalb eines Ausdrucks durch seinen Wert (der in eine\n"
+"    Ganzzahl mit fester Breite umgewandelt wird) ersetzt.  Das\n"
+"    Integer-Attribut der Variablen muss nicht eingeschaltet sein, um\n"
+"    in einem Ausdruck verwendet zu werden.\n"
+"    \n"
+"    Die Operatoren werden in der Reihenfolge ihres Vorrangs\n"
+"    ausgewertet. Unterausdrücke in Klammern werden zuerst ausgewertet\n"
+"    und können die obigen Rangfolge Regeln außer Kraft setzen.\n"
+"    \n"
+"    Rückgabewert:\n"
+"    Wenn der letzte ARG 0 ergibt, gibt let 1 zurück; andernfalls gibt let 0 zurück."
 
+# read
 #: builtins.c:994
 msgid ""
 "Read a line from the standard input and split it into fields.\n"
 "    \n"
 "    Reads a single line from the standard input, or from file descriptor FD\n"
-"    if the -u option is supplied.  The line is split into fields as with "
-"word\n"
+"    if the -u option is supplied.  The line is split into fields as with word\n"
 "    splitting, and the first word is assigned to the first NAME, the second\n"
 "    word to the second NAME, and so on, with any leftover words assigned to\n"
-"    the last NAME.  Only the characters found in $IFS are recognized as "
-"word\n"
+"    the last NAME.  Only the characters found in $IFS are recognized as word\n"
 "    delimiters.\n"
 "    \n"
-"    If no NAMEs are supplied, the line read is stored in the REPLY "
-"variable.\n"
+"    If no NAMEs are supplied, the line read is stored in the REPLY variable.\n"
 "    \n"
 "    Options:\n"
 "      -a array\tassign the words read to sequential indices of the array\n"
@@ -3848,8 +3882,7 @@ msgid ""
 "      -n nchars\treturn after reading NCHARS characters rather than waiting\n"
 "    \t\tfor a newline, but honor a delimiter if fewer than\n"
 "    \t\tNCHARS characters are read before the delimiter\n"
-"      -N nchars\treturn only after reading exactly NCHARS characters, "
-"unless\n"
+"      -N nchars\treturn only after reading exactly NCHARS characters, unless\n"
 "    \t\tEOF is encountered or read times out, ignoring any\n"
 "    \t\tdelimiter\n"
 "      -p prompt\toutput the string PROMPT without a trailing newline before\n"
@@ -3867,12 +3900,55 @@ 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 ""
+"Liest eine Zeile von der Standardeingabe und teilt sie in Felder auf.\n"
+"    \n"
+"    Liest eine einzelne Zeile aus der Standardeingabe oder vom\n"
+"    Dateideskriptor FD wenn die Option -u angegeben ist.  Die Zeile\n"
+"    wird wie bei der Wortaufteilung in Felder aufgeteilt aufgeteilt,\n"
+"    und das erste Wort wird dem ersten NAME zugewiesen, das zweite\n"
+"    NAME zugewiesen, das zweite Wort dem zweiten NAME usw., wobei alle\n"
+"    verbleibenden Wörter dem dem letzten NAME zugeordnet werden. Die\n"
+"    in $IFS enthaltenen Zeichen werden als Worttrennzeichen verwendet.\n"
+"    \n"
+"    Wenn keine NAMEn angegeben werden, wird die gelesene Zeile in der\n"
+"    REPLY-Variablen gespeichert.\n"
+"    \n"
+"    Optionen:\n"
+"      -a array weist die gelesenen Wörter den aufeinanderfolgenden\n"
+"               Indizes der Array Variable ARRAY, beginnend bei Null.\n"
+"      -d delim fortfahren, bis das erste Zeichen von DELIM gelesen\n"
+"               wird, anstelle von statt Newline.\n"
+"      -e Readline verwenden, um die Zeile zu lesen.\n"
+"      -i text TEXT als Anfangstext für Readline verwenden.\n"
+"      -n nchars Liest maximal NCHARS Zeichen, ohne ein Zeilenumbruch\n"
+"    \t\tzu suchen. Worttrennzeichen werden ausgewertet.\n"
+"      -N nchars Liest genau NCHARS Zeichen, bis EOF oder einer\n"
+"    \t\tZeitüberschreitung. Worttrennzeichen werden ignoriert.\n"
+"      -p prompt Gibt vor dem Lesen die Zeichenkette PROMPT ohne einen\n"
+"    \t\tabschließenden Zeilenumbruch aus.\n"
+"      -r        lässt keine Backslashes als Escape-Zeichen zu\n"
+"      -s        keine Echo-Eingabe von einem Terminal\n"
+"      -t timeout\n"
+"                Zeitüberschreitung und Rückgabe eines Fehlers, wenn\n"
+"    \t\teine vollständige Eingabezeile nicht innerhalb von\n"
+"    \t\tTIMEOUT Sekunden gelesen wird. Die TMOUT Variable\n"
+"    \t\tenthält das Standard-Timeout.  TIMEOUT kann als\n"
+"    \t\tBruchteil angegeben werden.  Wenn TIMEOUT gleich 0\n"
+"    \t\tist, werden keine daten geleden und gibt Erfolg\n"
+"    \t\tzurück, wenn Daten dem angegebenen Dateideskriptor\n"
+"    \t\tverfügbar sind.  Der Rückgabewert ist größer als 128,\n"
+"    \t\twenn die Zeitüberschreitung abgelaufen ist.\n"
+"      -u fd Lesen von Dateideskriptor FD statt von der Standardeingabe\n"
+"    \n"
+"    Rückgabewert: \n"
+"    Der Rückgabewert ist Null. Es sei denn, das Dateiende wurde\n"
+"    erreicht, die Lesezeit überschritten (in diesem Fall ist er größer\n"
+"    als 128), ein Variablenzuweisungsfehler tritt auf oder ein\n"
+"    ungültiger Dateideskriptor wurde als Argument von -u übergeben."
 
 #: builtins.c:1041
 msgid ""
@@ -3885,7 +3961,18 @@ msgid ""
 "    Exit Status:\n"
 "    Returns N, or failure if the shell is not executing a function or script."
 msgstr ""
+"Rückkehr aus einer Shell-Funktion.\n"
+"    \n"
+"    Bewirkt, dass eine Funktion oder ein geladenes Skript mit dem\n"
+"    durch N angegebenen Rückgabewert beendet wird.  Wenn N weggelassen\n"
+"    wird, wird als Rückgabewert der des zuletzt ausgeführten Befehls\n"
+"    verwendet.\n"
+"    \n"
+"    Rückgabewert:\n"
+"    Gibt N zurück, oder einen Fehler, wenn return außerhalb einer Funktion\n"
+"    oder Skript aufgerufen wird."
 
+# set
 #: builtins.c:1054
 msgid ""
 "Set or unset values of shell options and positional parameters.\n"
@@ -3929,8 +4016,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"
@@ -3954,8 +4040,7 @@ msgid ""
 "          by default when the shell is interactive.\n"
 "      -P  If set, do not resolve symbolic links when executing commands\n"
 "          such as cd which change the current directory.\n"
-"      -T  If set, the DEBUG and RETURN traps are inherited by shell "
-"functions.\n"
+"      -T  If set, the DEBUG and RETURN traps are inherited by shell functions.\n"
 "      --  Assign any remaining arguments to the positional parameters.\n"
 "          If there are no remaining arguments, the positional parameters\n"
 "          are unset.\n"
@@ -3971,6 +4056,90 @@ msgid ""
 "    Exit Status:\n"
 "    Returns success unless an invalid option is given."
 msgstr ""
+"Setzen oder Aufheben von Shell-Optionen und Positionsparametern.\n"
+"    \n"
+"    Den Wert von Shell-Attributen und Positionsparametern ändern, oder\n"
+"    die Namen und Werte von Shell-Variablen anzeigen.\n"
+"    \n"
+"    Optionen:\n"
+"      -a Markieren von Variablen die geändert oder erstellt wurden, für den Export.\n"
+"      -b Sofortige Benachrichtigung über das Auftragsende.\n"
+"      -e Sofortiger Abbruch, wenn ein Befehl mit einem Status ungleich Null beendet wird.\n"
+"      -f Deaktiviert das Generieren von Dateinamen (globbing).\n"
+"      -h Merkt sich den Speicherort von Befehlen, wenn sie nachgeschlagen werden.\n"
+"      -k Alle Zuweisungsargumente werden in die Umgebung für einen\n"
+"         Befehl in die Umgebung aufgenommen, nicht nur diejenigen,\n"
+"         die dem Befehl vorangestellt sind.\n"
+"      -m Die Auftragskontrolle ist aktiviert.\n"
+"      -n Befehle lesen, aber nicht ausführen.\n"
+"      -o Optionsname\n"
+"          Setzt die Variable, die dem Optionsname entspricht:\n"
+"              allexport wie -a\n"
+"              braceexpand wie -B\n"
+"              emacs verwendet eine emacsähnliche Schnittstelle zur Zeilenbearbeitung\n"
+"              errexit gleich wie -e\n"
+"              errtrace dasselbe wie -E\n"
+"              functrace dasselbe wie -T\n"
+"              hashall dasselbe wie -h\n"
+"              histexpand gleich wie -H\n"
+"              history Befehlshistorie aktivieren\n"
+"              ignoreeof die Shell wird beim Lesen von EOF nicht beendet\n"
+"              interaktive-Kommentare\n"
+"                           erlaubt das Erscheinen von Kommentaren in interaktiven Befehlen\n"
+"              keyword dasselbe wie -k\n"
+"              monitor gleich wie -m\n"
+"              noclobber dasselbe wie -C\n"
+"              noexec gleich wie -n\n"
+"              noglob gleich wie -f\n"
+"              nolog wird derzeit akzeptiert, aber ignoriert\n"
+"              notify gleich wie -b\n"
+"              nounset dasselbe wie -u\n"
+"              onecmd dasselbe wie -t\n"
+"              physical wie -P\n"
+"              pipefail der Rückgabewert einer Pipeline ist der Status\n"
+"                       des des letzten Befehls, der mit einem Status\n"
+"                       ungleich Null beendet wurde, oder Null, wenn\n"
+"                       kein Befehl mit einem Status ungleich Null\n"
+"                       beendet wurde.\n"
+"             posix     Ändert das Verhalten von bash, wo die Standard\n"
+"                       Operation vom Posix-Standard abweicht, um mit\n"
+"                       dem Standard übereinstimmen.\n"
+"              privilegiert gleich wie -p\n"
+"              verbose dasselbe wie -v\n"
+"              vi eine vi-ähnliche Schnittstelle zur Zeilenbearbeitung verwenden\n"
+"              xtrace dasselbe wie -x\n"
+"      -p Wird eingeschaltet, wenn die realen und effektiven\n"
+"         Benutzerkennungen nicht übereinstimmen.  Deaktiviert die\n"
+"         Verarbeitung der $ENV-Datei und das Importieren von Shell\n"
+"         Funktionen.  Wenn diese Option ausgeschalten ist, werden die\n"
+"         effektive uid und gid auf die reale uid und gid gesetzt. \n"
+"      -t Beenden nach dem Lesen und Ausführen eines Befehls.\n"
+"      -u Nicht gesetzte Variablen beim Substituieren als Fehler behandeln.\n"
+"      -v Shell-Eingabezeilen ausgeben, wenn sie gelesen werden.\n"
+"      -x Befehle und ihre Argumente ausgeben, wenn sie ausgeführt werden.\n"
+"      -B Die Shell führt eine Klammererweiterung durch\n"
+"      -C Dateien werden bei Ausgabeumleitung nicht überschrieben.\n"
+"      -E Wenn gesetzt, wird die Fehlerfalle (trap) an Shell-Funktionen vererbt.\n"
+"      -H Aktiviert die !-Stil Verlaufsersetzung.  Diese Option ist\n"
+"         bei einer interaktiven Shell standardmäßig aktiviert.\n"
+"      -P Symbolische Links werden nicht aufgelöst, wenn Befehle wie\n"
+"         z.B. cd, das aktuelle Verzeichnis ändern.\n"
+"      -T DEBUG und RETURN Fallen (trap) werden an Shellfunktionen vererbt.\n"
+"      -- Weist alle verbleibenden Argumente den Positionsparametern\n"
+"         zu.  Sind keine Argumente verblieben, werden die\n"
+"         Positionsparameter nicht gesetzt.\n"
+"      - Weist alle verbleibenden Argumente den Positionsparametern zu.\n"
+"        Die Optionen -x und -v sind ausgeschaltet.\n"
+"    \n"
+"    Durch Verwenden von + anstelle von - werden Option ausgeschaltet.\n"
+"    Die Optionen können auch beim Shellaufruf verwendet werden.  Die\n"
+"    aktuelle aktiven Optionen sind in $- gespeichert.  Die restlichen\n"
+"    n ARGs sind positionale Parameter und werden der Reihe nach $1,\n"
+"    $2, ... $n zugewiesen.  Wenn keine ARGs angegeben werden, werden\n"
+"    alle Shell-Variablen ausgegeben.\n"
+"    \n"
+"    Rückgabewert:\n"
+"    Gibt Erfolg zurück, es sei denn, eine ungültige Option wurde angegeben."
 
 #: builtins.c:1139
 msgid ""
@@ -3984,8 +4153,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"
@@ -3999,8 +4167,7 @@ msgid ""
 "Set export attribute for shell variables.\n"
 "    \n"
 "    Marks each NAME for automatic export to the environment of subsequently\n"
-"    executed commands.  If VALUE is supplied, assign VALUE before "
-"exporting.\n"
+"    executed commands.  If VALUE is supplied, assign VALUE before exporting.\n"
 "    \n"
 "    Options:\n"
 "      -f\trefer to shell functions\n"
@@ -4107,8 +4274,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"
@@ -4129,8 +4295,7 @@ msgid ""
 "      STRING1 != STRING2\n"
 "                     True if the strings are not equal.\n"
 "      STRING1 < STRING2\n"
-"                     True if STRING1 sorts before STRING2 "
-"lexicographically.\n"
+"                     True if STRING1 sorts before STRING2 lexicographically.\n"
 "      STRING1 > STRING2\n"
 "                     True if STRING1 sorts after STRING2 lexicographically.\n"
 "    \n"
@@ -4175,8 +4340,7 @@ msgstr ""
 msgid ""
 "Display process times.\n"
 "    \n"
-"    Prints the accumulated user and system times for the shell and all of "
-"its\n"
+"    Prints the accumulated user and system times for the shell and all of its\n"
 "    child processes.\n"
 "    \n"
 "    Exit Status:\n"
@@ -4194,8 +4358,7 @@ msgstr ""
 msgid ""
 "Trap signals and other events.\n"
 "    \n"
-"    Defines and activates handlers to be run when the shell receives "
-"signals\n"
+"    Defines and activates handlers to be run when the shell receives signals\n"
 "    or other conditions.\n"
 "    \n"
 "    ARG is a command to be read and executed when the shell receives the\n"
@@ -4204,34 +4367,26 @@ msgid ""
 "    value.  If ARG is the null string each SIGNAL_SPEC is ignored by the\n"
 "    shell and by the commands it invokes.\n"
 "    \n"
-"    If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell.  "
-"If\n"
-"    a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command.  "
-"If\n"
-"    a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or "
-"a\n"
-"    script run by the . or source builtins finishes executing.  A "
-"SIGNAL_SPEC\n"
-"    of ERR means to execute ARG each time a command's failure would cause "
-"the\n"
+"    If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell.  If\n"
+"    a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command.  If\n"
+"    a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or a\n"
+"    script run by the . or source builtins finishes executing.  A SIGNAL_SPEC\n"
+"    of ERR means to execute ARG each time a command's failure would cause the\n"
 "    shell to exit when the -e option is enabled.\n"
 "    \n"
-"    If no arguments are supplied, trap prints the list of commands "
-"associated\n"
+"    If no arguments are supplied, trap prints the list of commands associated\n"
 "    with each signal.\n"
 "    \n"
 "    Options:\n"
 "      -l\tprint a list of signal names and their corresponding numbers\n"
 "      -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n"
 "    \n"
-"    Each SIGNAL_SPEC is either a signal name in <signal.h> or a signal "
-"number.\n"
+"    Each SIGNAL_SPEC is either a signal name in <signal.h> or a signal number.\n"
 "    Signal names are case insensitive and the SIG prefix is optional.  A\n"
 "    signal may be sent to the shell with \"kill -signal $$\".\n"
 "    \n"
 "    Exit Status:\n"
-"    Returns success unless a SIGSPEC is invalid or an invalid option is "
-"given."
+"    Returns success unless a SIGSPEC is invalid or an invalid option is given."
 msgstr ""
 
 #: builtins.c:1400
@@ -4260,16 +4415,14 @@ msgid ""
 "      NAME\tCommand name to be interpreted.\n"
 "    \n"
 "    Exit Status:\n"
-"    Returns success if all of the NAMEs are found; fails if any are not "
-"found."
+"    Returns success if all of the NAMEs are found; fails if any are not found."
 msgstr ""
 
 #: builtins.c:1431
 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"
@@ -4336,23 +4489,19 @@ msgstr ""
 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"
@@ -4368,14 +4517,12 @@ msgstr ""
 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 ""
 
@@ -4460,17 +4607,12 @@ msgstr ""
 msgid ""
 "Execute commands based on conditional.\n"
 "    \n"
-"    The `if COMMANDS' list is executed.  If its exit status is zero, then "
-"the\n"
-"    `then COMMANDS' list is executed.  Otherwise, each `elif COMMANDS' list "
-"is\n"
+"    The `if COMMANDS' list is executed.  If its exit status is zero, then the\n"
+"    `then COMMANDS' list is executed.  Otherwise, each `elif COMMANDS' list is\n"
 "    executed in turn, and if its exit status is zero, the corresponding\n"
-"    `then COMMANDS' list is executed and the if command completes.  "
-"Otherwise,\n"
-"    the `else COMMANDS' list is executed, if present.  The exit status of "
-"the\n"
-"    entire construct is the exit status of the last command executed, or "
-"zero\n"
+"    `then COMMANDS' list is executed and the if command completes.  Otherwise,\n"
+"    the `else COMMANDS' list is executed, if present.  The exit status of the\n"
+"    entire construct is the exit status of the last command executed, or zero\n"
 "    if no condition tested true.\n"
 "    \n"
 "    Exit Status:\n"
@@ -4517,8 +4659,7 @@ msgid ""
 "Define shell function.\n"
 "    \n"
 "    Create a shell function named NAME.  When invoked as a simple command,\n"
-"    NAME runs COMMANDs in the calling shell's context.  When NAME is "
-"invoked,\n"
+"    NAME runs COMMANDs in the calling shell's context.  When NAME is invoked,\n"
 "    the arguments are passed to the function as $1...$n, and the function's\n"
 "    name is in $FUNCNAME.\n"
 "    \n"
@@ -4553,7 +4694,6 @@ msgstr ""
 
 # (( ))
 #: builtins.c:1726
-#, fuzzy
 msgid ""
 "Evaluate arithmetic expression.\n"
 "    \n"
@@ -4568,21 +4708,17 @@ msgstr ""
 "    Der Ausdruck wird nach den Regeln für arithmetische Berechnungen\n"
 "    ausgewertet. Diese Schreibweise entspricht »let Ausdruck«.\n"
 "\n"
-"    Rückgabewert: \n"
-"    Gibt »1« zurück, wenn die Auswertung des letzten Arguments Null\n"
-"    ergibt, sonst »0«."
+"    Rückgabewert:\n"
+"    Ist »1«, wenn der arithmetische Ausdruck 0 ergibt, sonst »0«."
 
 # [[
 #: builtins.c:1738
 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"
@@ -4603,8 +4739,7 @@ msgstr ""
 "Erweiterte Vergleiche.\n"
 "    \n"
 "    Der Status 0 oder 1 wird abhängig vom Vergleichsergebnis zurückgegeben.\n"
-"    Es werden die gleichen Ausdrücke wie in der »test« Funktion "
-"unterstützt,\n"
+"    Es werden die gleichen Ausdrücke wie in der »test« Funktion unterstützt,\n"
 "    die mit folgenden Operatoren verbunden werden können:\n"
 "    \n"
 "      ( AUSDRUCK )\tErgibt den Wert des AUSDRUCKs\n"
@@ -4697,8 +4832,7 @@ msgstr ""
 "                Anzahl EOF Zeichen (Ctrl-D) abgewartet, bis die Shell\n"
 "                verlassen wird. Der Vorgabewert ist 10. Ist IGNOREEOF\n"
 "                nicht gesetzt, signalisiert EOF das Ende der Eingabe.\n"
-"    MACHTYPE    Eine Zeichenkette die das aktuell laufende System "
-"beschreibt.\n"
+"    MACHTYPE    Eine Zeichenkette die das aktuell laufende System beschreibt.\n"
 "    MAILCHECK\tZeit in Sekunden, nach der nach E-Mails gesehen wird.\n"
 "    MAILPATH\tEine durch Doppelpunkt getrennte Liste von Dateinamen,\n"
 "                die nach E-Mail durchsucht werden.\n"
@@ -4947,34 +5081,27 @@ msgid ""
 "      -v var\tassign the output to shell variable VAR rather than\n"
 "    \t\tdisplay it on the standard output\n"
 "    \n"
-"    FORMAT is a character string which contains three types of objects: "
-"plain\n"
-"    characters, which are simply copied to standard output; character "
-"escape\n"
+"    FORMAT is a character string which contains three types of objects: plain\n"
+"    characters, which are simply copied to standard output; character escape\n"
 "    sequences, which are converted and copied to the standard output; and\n"
-"    format specifications, each of which causes printing of the next "
-"successive\n"
+"    format specifications, each of which causes printing of the next successive\n"
 "    argument.\n"
 "    \n"
-"    In addition to the standard format specifications described in "
-"printf(1),\n"
+"    In addition to the standard format specifications described in printf(1),\n"
 "    printf interprets:\n"
 "    \n"
 "      %b\texpand backslash escape sequences in the corresponding argument\n"
 "      %q\tquote the argument in a way that can be reused as shell input\n"
-"      %(fmt)T\toutput the date-time string resulting from using FMT as a "
-"format\n"
+"      %(fmt)T\toutput the date-time string resulting from using FMT as a format\n"
 "    \t        string for strftime(3)\n"
 "    \n"
 "    The format is re-used as necessary to consume all of the arguments.  If\n"
 "    there are fewer arguments than the format requires,  extra format\n"
-"    specifications behave as if a zero value or null string, as "
-"appropriate,\n"
+"    specifications behave as if a zero value or null string, as appropriate,\n"
 "    had been supplied.\n"
 "    \n"
 "    Exit Status:\n"
-"    Returns success unless an invalid option is given or a write or "
-"assignment\n"
+"    Returns success unless an invalid option is given or a write or assignment\n"
 "    error occurs."
 msgstr ""
 "Formatierte Ausgabe der ARGUMENTE.\n"
@@ -4983,43 +5110,34 @@ msgstr ""
 "      -v var\tDie formatierte Ausgabe ver Variable var zuweisen statt\n"
 "        \tsie an die Standardausgebe zu senden.\n"
 "\n"
-"    Die FORMAT-Zeichenkette kann einfache Zeichen enthalten, die "
-"unverändert\n"
-"    an die Standardausgabe geschickt werden. Escape-Sequenzen werden "
-"umgewandelt\n"
-"    und an die Standardausgabe geschickt sowie Formatanweisungen, welche "
-"das \n"
+"    Die FORMAT-Zeichenkette kann einfache Zeichen enthalten, die unverändert\n"
+"    an die Standardausgabe geschickt werden. Escape-Sequenzen werden umgewandelt\n"
+"    und an die Standardausgabe geschickt sowie Formatanweisungen, welche das \n"
 "    nachfolgende ARGUMENT auswerten und ausgeben.\n"
 "\n"
-"    Gegenüber der in printf(1) beschriebenen Standardverion werden "
-"zusätzliche\n"
+"    Gegenüber der in printf(1) beschriebenen Standardverion werden zusätzliche\n"
 "    Formatanweisungen ausgewertet:\n"
 "\n"
 "      %b\tWertet Escape-Sequenzen des zugehörigen Arguments aus.\n"
 "      %q\tBettet das Argument so ein, dass es als Shelleingabe\n"
 "                verwendet werden kann.\n"
-"      %(fmt)T\tAusgabe der aus FMT entstehende Datum-Zeit Zeichenkette, "
-"dass\n"
+"      %(fmt)T\tAusgabe der aus FMT entstehende Datum-Zeit Zeichenkette, dass\n"
 "                sie als Zeichenkette für strftime(3) verwendet werden kann.\n"
 "\n"
 "    Die Formatangabe wird wiederverwendet, bis alle Argumente ausgewertet\n"
-"    sind. Wenn weniger Argumente als Formatangaben vorhanden sind, werden "
-"für\n"
+"    sind. Wenn weniger Argumente als Formatangaben vorhanden sind, werden für\n"
 "    die Argumente Nullwerte bzw. leere Zeichenketten eingesetzt.\n"
 "\n"
 "    Rücgabewert:\n"
-"    Gibt Erfolg zurück, außer es wird eine ungültige Option angegeben oder "
-"ein\n"
+"    Gibt Erfolg zurück, außer es wird eine ungültige Option angegeben oder ein\n"
 "    Aus- bzw. Zuweisungsfehler auftritt."
 
 #: builtins.c:1971
 msgid ""
 "Specify how arguments are to be completed by Readline.\n"
 "    \n"
-"    For each NAME, specify how arguments are to be completed.  If no "
-"options\n"
-"    are supplied, existing completion specifications are printed in a way "
-"that\n"
+"    For each NAME, specify how arguments are to be completed.  If no options\n"
+"    are supplied, existing completion specifications are printed in a way that\n"
 "    allows them to be reused as input.\n"
 "    \n"
 "    Options:\n"
@@ -5034,10 +5152,8 @@ msgid ""
 "    \t\tcommand) word\n"
 "    \n"
 "    When completion is attempted, the actions are applied in the order the\n"
-"    uppercase-letter options are listed above. If multiple options are "
-"supplied,\n"
-"    the -D option takes precedence over -E, and both take precedence over -"
-"I.\n"
+"    uppercase-letter options are listed above. If multiple options are supplied,\n"
+"    the -D option takes precedence over -E, and both take precedence over -I.\n"
 "    \n"
 "    Exit Status:\n"
 "    Returns success unless an invalid option is supplied or an error occurs."
@@ -5049,8 +5165,7 @@ msgid ""
 "Display possible completions depending on the options.\n"
 "    \n"
 "    Intended to be used from within a shell function generating possible\n"
-"    completions.  If the optional WORD argument is supplied, matches "
-"against\n"
+"    completions.  If the optional WORD argument is supplied, matches against\n"
 "    WORD are generated.\n"
 "    \n"
 "    Exit Status:\n"
@@ -5058,8 +5173,7 @@ msgid ""
 msgstr ""
 "Zeigt mögliche Komplettierungen.\n"
 "\n"
-"    Wird in Shellfunktionen benutzt, um mögliche Komplettierungen "
-"anzuzeigen.\n"
+"    Wird in Shellfunktionen benutzt, um mögliche Komplettierungen anzuzeigen.\n"
 "    Wenn das optionale Wort-Argument angegeben ist, werden Komplettierungen\n"
 "    für dieses Wort erzeugt.\n"
 "    \n"
@@ -5070,12 +5184,9 @@ msgstr ""
 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"
@@ -5102,22 +5213,17 @@ msgstr ""
 msgid ""
 "Read lines from the standard input into an indexed array variable.\n"
 "    \n"
-"    Read lines from the standard input into the indexed array variable "
-"ARRAY, or\n"
-"    from file descriptor FD if the -u option is supplied.  The variable "
-"MAPFILE\n"
+"    Read lines from the standard input into the indexed array variable ARRAY, or\n"
+"    from file descriptor FD if the -u option is supplied.  The variable MAPFILE\n"
 "    is the default ARRAY.\n"
 "    \n"
 "    Options:\n"
 "      -d delim\tUse DELIM to terminate lines, instead of newline\n"
-"      -n count\tCopy at most COUNT lines.  If COUNT is 0, all lines are "
-"copied\n"
-"      -O origin\tBegin assigning to ARRAY at index ORIGIN.  The default "
-"index is 0\n"
+"      -n count\tCopy at most COUNT lines.  If COUNT is 0, all lines are copied\n"
+"      -O origin\tBegin assigning to ARRAY at index ORIGIN.  The default index is 0\n"
 "      -s count\tDiscard the first COUNT lines read\n"
 "      -t\tRemove a trailing DELIM from each line read (default newline)\n"
-"      -u fd\tRead lines from file descriptor FD instead of the standard "
-"input\n"
+"      -u fd\tRead lines from file descriptor FD instead of the standard input\n"
 "      -C callback\tEvaluate CALLBACK each time QUANTUM lines are read\n"
 "      -c quantum\tSpecify the number of lines read between each call to\n"
 "    \t\t\tCALLBACK\n"
@@ -5130,13 +5236,11 @@ msgid ""
 "    element to be assigned and the line to be assigned to that element\n"
 "    as additional arguments.\n"
 "    \n"
-"    If not supplied with an explicit origin, mapfile will clear ARRAY "
-"before\n"
+"    If not supplied with an explicit origin, mapfile will clear ARRAY before\n"
 "    assigning to it.\n"
 "    \n"
 "    Exit Status:\n"
-"    Returns success unless an invalid option is given or ARRAY is readonly "
-"or\n"
+"    Returns success unless an invalid option is given or ARRAY is readonly or\n"
 "    not an indexed array."
 msgstr ""
 
index 802a0510dbabdd228ff074ad148939522ddc9dab..6cb77186dc1cc57229bb9541a75898228e847e5c 100644 (file)
@@ -3401,16 +3401,24 @@ bind_int_variable (lhs, rhs, flags)
      int flags;
 {
   register SHELL_VAR *v;
-  int isint, isarr, implicitarray, vflags;
+  int isint, isarr, implicitarray, vflags, avflags;
 
   isint = isarr = implicitarray = 0;
 #if defined (ARRAY_VARS)
   /* Don't rely on VA_NOEXPAND being 1, set it explicitly */
   vflags = (flags & ASS_NOEXPAND) ? VA_NOEXPAND : 0;
+  if (flags & ASS_ONEWORD)
+    vflags |= VA_ONEWORD;
   if (valid_array_reference (lhs, vflags))
     {
       isarr = 1;
-      v = array_variable_part (lhs, (flags & ASS_NOEXPAND) != 0, (char **)0, (int *)0);
+      avflags = 0;
+      /* Common code to translate between assignment and reference flags. */
+      if (flags & ASS_NOEXPAND)
+       avflags |= AV_NOEXPAND;
+      if (flags & ASS_ONEWORD)
+       avflags |= AV_ONEWORD;
+      v = array_variable_part (lhs, avflags, (char **)0, (int *)0);
     }
   else if (legal_identifier (lhs) == 0)
     {