]> git.ipfire.org Git - thirdparty/bash.git/commitdiff
commit bash-20040923 snapshot
authorChet Ramey <chet.ramey@case.edu>
Sat, 3 Dec 2011 18:37:00 +0000 (13:37 -0500)
committerChet Ramey <chet.ramey@case.edu>
Sat, 3 Dec 2011 18:37:00 +0000 (13:37 -0500)
53 files changed:
CWRU/CWRU.chlog
CWRU/CWRU.chlog~
builtins/kill.def
builtins/reserved.def
command.h
command.h~ [new file with mode: 0644]
doc/bash.0
doc/bash.1
doc/bash.1~
doc/bash.html
doc/bash.ps
doc/bashref.dvi
doc/bashref.html
doc/bashref.info
doc/bashref.log
doc/bashref.ps
doc/bashref.texi
doc/bashref.texi~
doc/builtins.0
doc/builtins.ps
doc/rbash.ps
execute_cmd.c
execute_cmd.c~
general.c
general.c~
general.h
general.h~ [new file with mode: 0644]
jobs.c
jobs.c~
lib/tilde/tilde.c
lib/tilde/tilde.c~ [new file with mode: 0644]
lib/tilde/tilde.h
lib/tilde/tilde.h~ [new file with mode: 0644]
po/bash.pot
po/en@boldquot.gmo
po/en@boldquot.po
po/en@boldquot.po~ [new file with mode: 0644]
po/en@quot.gmo
po/en@quot.po
po/en@quot.po~ [new file with mode: 0644]
subst.c
subst.c.orig
subst.c.save1
subst.c.save2 [new file with mode: 0644]
subst.c~
subst.h
subst.h~
tests/errors.right
tests/errors.right~
tests/more-exp.right
tests/more-exp.right~ [new file with mode: 0644]
tests/more-exp.tests
tests/more-exp.tests~ [new file with mode: 0644]

index ae6b1ff3b5206dda16423bafa4fa134e6e21894d..63804b23db91919d6294dd5631b876bf11eae365 100644 (file)
@@ -10112,3 +10112,46 @@ bashline.c
          directory under certain circumstances:  a single instance found in
          $PATH when `.' is not in $PATH, and multiple instances found in the
          $PATH, even when `.' is in the $PATH
+
+                                  9/24
+                                  ----
+command.h
+       - new word flag: W_ASSIGNRHS, means word is rhs of assignment statement
+       - new word flag: W_NOTILDE, means word is not to be tilde expanded
+       - new word flag (internal): W_ITILDE, means the next character is a
+         tilde that should be expanded
+
+general.c
+       - new set of tilde suffixes for use when parsing the RHS of an
+         assignment statement and =~ should not be subject to tilde expansion
+       - if ASSIGN_P argument to bash_tilde_expand is 2, use tilde prefixes
+         for parsing RHS of assignment statement
+
+general.[ch]
+       - new function bash_tilde_find_word, drop-in replacement for
+         tilde_find_word
+
+subst.c
+       - call bash_tilde_expand with secord argument of 2 when expanding rhs
+         of an assignment statement, so tildes after second and subsequent
+         `=' in an assignment are not expanded
+       - new function, expand_string_assignment, to expand the rhs of an
+         assignment statement
+       - add `~' to EXP_CHAR, the characters that will cause the word
+         expansion functions to be called
+       - move tilde expansion into expand_word_internal instead of many
+         different calls to bash_tilde_expand scattered across different
+         functions.  NOTE:  This means that double quotes surrounding a
+         {paramOPword} expansion will cause tilde expansion to NOT be
+         performed on `word'.  I think this is right, what POSIX specifies,
+         and consistent with the behavior of other characters in the rhs
+
+execute_cmd.c
+       - take out calls to bash_tilde_expand before calling word expansion
+         functions
+
+                                  9/26
+                                  ----
+execute_cmd.c
+       - make sure to call UNBLOCK_CHILD before returning on a pipe creation
+         failure in execute_pipeline
index 81ca37a51f63e28d47e24858c3f5fdc5f67aa102..a65e1eaa9330c1c5dc4d7d78ccdd6d051ac5d88a 100644 (file)
@@ -10105,3 +10105,47 @@ lib/readline/complete.c
        - change append_to_match so that a non-zero value for
          rl_completion_suppress_append will cause no `/' to be appended to a
          directory name
+
+bashline.c
+       - experimental change to suppress appending a slash for a completed
+         filename that is found in PATH as well as a directory in the current
+         directory under certain circumstances:  a single instance found in
+         $PATH when `.' is not in $PATH, and multiple instances found in the
+         $PATH, even when `.' is in the $PATH
+
+                                  9/24
+                                  ----
+command.h
+       - new word flag: W_ASSIGNRHS, means word is rhs of assignment statement
+       - new word flag: W_NOTILDE, means word is not to be tilde expanded
+       - new word flag (internal): W_ITILDE, means the next character is a
+         tilde that should be expanded
+
+general.c
+       - new set of tilde suffixes for use when parsing the RHS of an
+         assignment statement and =~ should not be subject to tilde expansion
+       - if ASSIGN_P argument to bash_tilde_expand is 2, use tilde prefixes
+         for parsing RHS of assignment statement
+
+general.[ch]
+       - new function bash_tilde_find_word, drop-in replacement for
+         tilde_find_word
+
+subst.c
+       - call bash_tilde_expand with secord argument of 2 when expanding rhs
+         of an assignment statement, so tildes after second and subsequent
+         `=' in an assignment are not expanded
+       - new function, expand_string_assignment, to expand the rhs of an
+         assignment statement
+       - add `~' to EXP_CHAR, the characters that will cause the word
+         expansion functions to be called
+       - move tilde expansion into expand_word_internal instead of many
+         different calls to bash_tilde_expand scattered across different
+         functions.  NOTE:  This means that double quotes surrounding a
+         {paramOPword} expansion will cause tilde expansion to NOT be
+         performed on `word'.  I think this is right, what POSIX specifies,
+         and consistent with the behavior of other characters in the rhs
+
+execute_cmd.c
+       - take out calls to bash_tilde_expand before calling word expansion
+         functions
index d1b9f6daa849e75f10ba46b6e00cddc6debd97d4..2598013367be71e3d0eefb5dff8dc52f7af32173 100644 (file)
@@ -23,8 +23,8 @@ $PRODUCES kill.c
 
 $BUILTIN kill
 $FUNCTION kill_builtin
-$SHORT_DOC kill [-s sigspec | -n signum | -sigspec] [pid | job]... or kill -l [sigspec]
-Send the processes named by PID (or JOB) the signal SIGSPEC.  If
+$SHORT_DOC kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
+Send the processes named by PID (or JOBSPEC) the signal SIGSPEC.  If
 SIGSPEC is not present, then SIGTERM is assumed.  An argument of `-l'
 lists the signal names; if arguments follow `-l' they are assumed to
 be signal numbers for which names should be listed.  Kill is a shell
index 47846bb31d7b713f2fa98ef01042b23b2cd3e4d4..870f858923d99ccb813f1bf7fd1d096b7defe3ad 100644 (file)
@@ -109,10 +109,12 @@ $END
 
 $BUILTIN %
 $DOCNAME fg_percent
-$SHORT_DOC %JOBSPEC [&]
-This is similar to the `fg' command.  Resume a stopped or background
-job specified by %JOBSPEC.  Following the job specification with a `&'
-places the job in the background.
+$SHORT_DOC JOB_SPEC [&]
+Equivalent to the JOB_SPEC argument to the `fg' command.  Resume a
+stopped or background job.  JOB_SPEC can specify either a job name
+or a job number.  Following JOB_SPEC with a `&' places the job in
+the background, as if the job specification had been supplied as an
+argument to `bg'.
 $END
 
 $BUILTIN (( ... ))
index 0e1375dc7acb05c90f05cc72f84cc593d1804326..8d05376fbce573973105de9bc32e598194ee6777 100644 (file)
--- a/command.h
+++ b/command.h
@@ -78,6 +78,9 @@ enum command_type { cm_for, cm_case, cm_while, cm_if, cm_simple, cm_select,
 #define W_DOLLARAT     0x0100  /* $@ and its special handling */
 #define W_DOLLARSTAR   0x0200  /* $* and its special handling */
 #define W_NOCOMSUB     0x0400  /* Don't perform command substitution on this word */
+#define W_ASSIGNRHS    0x0800  /* Word is rhs of an assignment statement */
+#define W_NOTILDE      0x1000  /* Don't perform tilde expansion on this word */
+#define W_ITILDE       0x2000  /* Internal flag for word expansion */
 
 /* Possible values for subshell_environment */
 #define SUBSHELL_ASYNC 0x01    /* subshell caused by `command &' */
diff --git a/command.h~ b/command.h~
new file mode 100644 (file)
index 0000000..83aeea0
--- /dev/null
@@ -0,0 +1,337 @@
+/* command.h -- The structures used internally to represent commands, and
+   the extern declarations of the functions used to create them. */
+
+/* Copyright (C) 1993 Free Software Foundation, Inc.
+
+   This file is part of GNU Bash, the Bourne Again SHell.
+
+   Bash is free software; you can redistribute it and/or modify it under
+   the terms of the GNU General Public License as published by the Free
+   Software Foundation; either version 2, or (at your option) any later
+   version.
+
+   Bash is distributed in the hope that it will be useful, but WITHOUT ANY
+   WARRANTY; without even the implied warranty of MERCHANTABILITY or
+   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+   for more details.
+
+   You should have received a copy of the GNU General Public License along
+   with Bash; see the file COPYING.  If not, write to the Free Software
+   Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
+
+#if !defined (_COMMAND_H_)
+#define _COMMAND_H_
+
+#include "stdc.h"
+
+/* Instructions describing what kind of thing to do for a redirection. */
+enum r_instruction {
+  r_output_direction, r_input_direction, r_inputa_direction,
+  r_appending_to, r_reading_until, r_reading_string,
+  r_duplicating_input, r_duplicating_output, r_deblank_reading_until,
+  r_close_this, r_err_and_out, r_input_output, r_output_force,
+  r_duplicating_input_word, r_duplicating_output_word,
+  r_move_input, r_move_output, r_move_input_word, r_move_output_word
+};
+
+/* Redirection errors. */
+#define AMBIGUOUS_REDIRECT  -1
+#define NOCLOBBER_REDIRECT  -2
+#define RESTRICTED_REDIRECT -3 /* can only happen in restricted shells. */
+#define HEREDOC_REDIRECT    -4  /* here-doc temp file can't be created */
+
+#define CLOBBERING_REDIRECT(ri) \
+  (ri == r_output_direction || ri == r_err_and_out)
+
+#define OUTPUT_REDIRECT(ri) \
+  (ri == r_output_direction || ri == r_input_output || ri == r_err_and_out)
+
+#define INPUT_REDIRECT(ri) \
+  (ri == r_input_direction || ri == r_inputa_direction || ri == r_input_output)
+
+#define WRITE_REDIRECT(ri) \
+  (ri == r_output_direction || \
+       ri == r_input_output || \
+       ri == r_err_and_out || \
+       ri == r_appending_to || \
+       ri == r_output_force)
+
+/* redirection needs translation */
+#define TRANSLATE_REDIRECT(ri) \
+  (ri == r_duplicating_input_word || ri == r_duplicating_output_word || \
+   ri == r_move_input_word || ri == r_move_output_word)
+
+/* Command Types: */
+enum command_type { cm_for, cm_case, cm_while, cm_if, cm_simple, cm_select,
+                   cm_connection, cm_function_def, cm_until, cm_group,
+                   cm_arith, cm_cond, cm_arith_for, cm_subshell };
+
+/* Possible values for the `flags' field of a WORD_DESC. */
+#define W_HASDOLLAR    0x0001  /* Dollar sign present. */
+#define W_QUOTED       0x0002  /* Some form of quote character is present. */
+#define W_ASSIGNMENT   0x0004  /* This word is a variable assignment. */
+#define W_GLOBEXP      0x0008  /* This word is the result of a glob expansion. */
+#define W_NOSPLIT      0x0010  /* Do not perform word splitting on this word. */
+#define W_NOGLOB       0x0020  /* Do not perform globbing on this word. */
+#define W_NOSPLIT2     0x0040  /* Don't split word except for $@ expansion. */
+#define W_TILDEEXP     0x0080  /* Tilde expand this assignment word */
+#define W_DOLLARAT     0x0100  /* $@ and its special handling */
+#define W_DOLLARSTAR   0x0200  /* $* and its special handling */
+#define W_NOCOMSUB     0x0400  /* Don't perform command substitution on this word */
+#define W_ASSIGNRHS    0x0800  /* Word is rhs of an assignment statement */
+#define W_NOTILDE      0x1000  /* Don't perform tilde expansion on this word */
+
+/* Possible values for subshell_environment */
+#define SUBSHELL_ASYNC 0x01    /* subshell caused by `command &' */
+#define SUBSHELL_PAREN 0x02    /* subshell caused by ( ... ) */
+#define SUBSHELL_COMSUB        0x04    /* subshell caused by `command` or $(command) */
+#define SUBSHELL_FORK  0x08    /* subshell caused by executing a disk command */
+#define SUBSHELL_PIPE  0x10    /* subshell from a pipeline element */
+
+/* A structure which represents a word. */
+typedef struct word_desc {
+  char *word;          /* Zero terminated string. */
+  int flags;           /* Flags associated with this word. */
+} WORD_DESC;
+
+/* A linked list of words. */
+typedef struct word_list {
+  struct word_list *next;
+  WORD_DESC *word;
+} WORD_LIST;
+
+
+/* **************************************************************** */
+/*                                                                 */
+/*                     Shell Command Structs                       */
+/*                                                                 */
+/* **************************************************************** */
+
+/* What a redirection descriptor looks like.  If the redirection instruction
+   is ri_duplicating_input or ri_duplicating_output, use DEST, otherwise
+   use the file in FILENAME.  Out-of-range descriptors are identified by a
+   negative DEST. */
+
+typedef union {
+  int dest;                    /* Place to redirect REDIRECTOR to, or ... */
+  WORD_DESC *filename;         /* filename to redirect to. */
+} REDIRECTEE;
+
+/* Structure describing a redirection.  If REDIRECTOR is negative, the parser
+   (or translator in redir.c) encountered an out-of-range file descriptor. */
+typedef struct redirect {
+  struct redirect *next;       /* Next element, or NULL. */
+  int redirector;              /* Descriptor to be redirected. */
+  int flags;                   /* Flag value for `open'. */
+  enum r_instruction  instruction; /* What to do with the information. */
+  REDIRECTEE redirectee;       /* File descriptor or filename */
+  char *here_doc_eof;          /* The word that appeared in <<foo. */
+} REDIRECT;
+
+/* An element used in parsing.  A single word or a single redirection.
+   This is an ephemeral construct. */
+typedef struct element {
+  WORD_DESC *word;
+  REDIRECT *redirect;
+} ELEMENT;
+
+/* Possible values for command->flags. */
+#define CMD_WANT_SUBSHELL  0x01        /* User wants a subshell: ( command ) */
+#define CMD_FORCE_SUBSHELL 0x02        /* Shell needs to force a subshell. */
+#define CMD_INVERT_RETURN  0x04        /* Invert the exit value. */
+#define CMD_IGNORE_RETURN  0x08        /* Ignore the exit value.  For set -e. */
+#define CMD_NO_FUNCTIONS   0x10 /* Ignore functions during command lookup. */
+#define CMD_INHIBIT_EXPANSION 0x20 /* Do not expand the command words. */
+#define CMD_NO_FORK       0x40 /* Don't fork; just call execve */
+#define CMD_TIME_PIPELINE  0x80 /* Time a pipeline */
+#define CMD_TIME_POSIX    0x100 /* time -p; use POSIX.2 time output spec. */
+#define CMD_AMPERSAND     0x200 /* command & */
+#define CMD_STDIN_REDIR           0x400 /* async command needs implicit </dev/null */
+#define CMD_COMMAND_BUILTIN 0x0800 /* command executed by `command' builtin */
+
+/* What a command looks like. */
+typedef struct command {
+  enum command_type type;      /* FOR CASE WHILE IF CONNECTION or SIMPLE. */
+  int flags;                   /* Flags controlling execution environment. */
+  int line;                    /* line number the command starts on */
+  REDIRECT *redirects;         /* Special redirects for FOR CASE, etc. */
+  union {
+    struct for_com *For;
+    struct case_com *Case;
+    struct while_com *While;
+    struct if_com *If;
+    struct connection *Connection;
+    struct simple_com *Simple;
+    struct function_def *Function_def;
+    struct group_com *Group;
+#if defined (SELECT_COMMAND)
+    struct select_com *Select;
+#endif
+#if defined (DPAREN_ARITHMETIC)
+    struct arith_com *Arith;
+#endif
+#if defined (COND_COMMAND)
+    struct cond_com *Cond;
+#endif
+#if defined (ARITH_FOR_COMMAND)
+    struct arith_for_com *ArithFor;
+#endif
+    struct subshell_com *Subshell;
+  } value;
+} COMMAND;
+
+/* Structure used to represent the CONNECTION type. */
+typedef struct connection {
+  int ignore;                  /* Unused; simplifies make_command (). */
+  COMMAND *first;              /* Pointer to the first command. */
+  COMMAND *second;             /* Pointer to the second command. */
+  int connector;               /* What separates this command from others. */
+} CONNECTION;
+
+/* Structures used to represent the CASE command. */
+
+/* Pattern/action structure for CASE_COM. */
+typedef struct pattern_list {
+  struct pattern_list *next;   /* Clause to try in case this one failed. */
+  WORD_LIST *patterns;         /* Linked list of patterns to test. */
+  COMMAND *action;             /* Thing to execute if a pattern matches. */
+} PATTERN_LIST;
+
+/* The CASE command. */
+typedef struct case_com {
+  int flags;                   /* See description of CMD flags. */
+  int line;                    /* line number the `case' keyword appears on */
+  WORD_DESC *word;             /* The thing to test. */
+  PATTERN_LIST *clauses;       /* The clauses to test against, or NULL. */
+} CASE_COM;
+
+/* FOR command. */
+typedef struct for_com {
+  int flags;           /* See description of CMD flags. */
+  int line;            /* line number the `for' keyword appears on */
+  WORD_DESC *name;     /* The variable name to get mapped over. */
+  WORD_LIST *map_list; /* The things to map over.  This is never NULL. */
+  COMMAND *action;     /* The action to execute.
+                          During execution, NAME is bound to successive
+                          members of MAP_LIST. */
+} FOR_COM;
+
+#if defined (ARITH_FOR_COMMAND)
+typedef struct arith_for_com {
+  int flags;
+  int line;    /* generally used for error messages */
+  WORD_LIST *init;
+  WORD_LIST *test;
+  WORD_LIST *step;
+  COMMAND *action;
+} ARITH_FOR_COM;
+#endif
+
+#if defined (SELECT_COMMAND)
+/* KSH SELECT command. */
+typedef struct select_com {
+  int flags;           /* See description of CMD flags. */
+  int line;            /* line number the `select' keyword appears on */
+  WORD_DESC *name;     /* The variable name to get mapped over. */
+  WORD_LIST *map_list; /* The things to map over.  This is never NULL. */
+  COMMAND *action;     /* The action to execute.
+                          During execution, NAME is bound to the member of
+                          MAP_LIST chosen by the user. */
+} SELECT_COM;
+#endif /* SELECT_COMMAND */
+
+/* IF command. */
+typedef struct if_com {
+  int flags;                   /* See description of CMD flags. */
+  COMMAND *test;               /* Thing to test. */
+  COMMAND *true_case;          /* What to do if the test returned non-zero. */
+  COMMAND *false_case;         /* What to do if the test returned zero. */
+} IF_COM;
+
+/* WHILE command. */
+typedef struct while_com {
+  int flags;                   /* See description of CMD flags. */
+  COMMAND *test;               /* Thing to test. */
+  COMMAND *action;             /* Thing to do while test is non-zero. */
+} WHILE_COM;
+
+#if defined (DPAREN_ARITHMETIC)
+/* The arithmetic evaluation command, ((...)).  Just a set of flags and
+   a WORD_LIST, of which the first element is the only one used, for the
+   time being. */
+typedef struct arith_com {
+  int flags;
+  int line;
+  WORD_LIST *exp;
+} ARITH_COM;
+#endif /* DPAREN_ARITHMETIC */
+
+/* The conditional command, [[...]].  This is a binary tree -- we slippped
+   a recursive-descent parser into the YACC grammar to parse it. */
+#define COND_AND       1
+#define COND_OR                2
+#define COND_UNARY     3
+#define COND_BINARY    4
+#define COND_TERM      5
+#define COND_EXPR      6
+
+typedef struct cond_com {
+  int flags;
+  int line;
+  int type;
+  WORD_DESC *op;
+  struct cond_com *left, *right;
+} COND_COM;
+
+/* The "simple" command.  Just a collection of words and redirects. */
+typedef struct simple_com {
+  int flags;                   /* See description of CMD flags. */
+  int line;                    /* line number the command starts on */
+  WORD_LIST *words;            /* The program name, the arguments,
+                                  variable assignments, etc. */
+  REDIRECT *redirects;         /* Redirections to perform. */
+} SIMPLE_COM;
+
+/* The "function definition" command. */
+typedef struct function_def {
+  int flags;                   /* See description of CMD flags. */
+  int line;                    /* Line number the function def starts on. */
+  WORD_DESC *name;             /* The name of the function. */
+  COMMAND *command;            /* The parsed execution tree. */
+  char *source_file;           /* file in which function was defined, if any */
+} FUNCTION_DEF;
+
+/* A command that is `grouped' allows pipes and redirections to affect all
+   commands in the group. */
+typedef struct group_com {
+  int ignore;                  /* See description of CMD flags. */
+  COMMAND *command;
+} GROUP_COM;
+
+typedef struct subshell_com {
+  int flags;
+  COMMAND *command;
+} SUBSHELL_COM;
+
+extern COMMAND *global_command;
+
+/* Possible command errors */
+#define CMDERR_DEFAULT 0
+#define CMDERR_BADTYPE 1
+#define CMDERR_BADCONN 2
+#define CMDERR_BADJUMP 3
+
+#define CMDERR_LAST    3
+
+/* Forward declarations of functions declared in copy_cmd.c. */
+
+extern FUNCTION_DEF *copy_function_def_contents __P((FUNCTION_DEF *, FUNCTION_DEF *));
+extern FUNCTION_DEF *copy_function_def __P((FUNCTION_DEF *));
+
+extern WORD_DESC *copy_word __P((WORD_DESC *));
+extern WORD_LIST *copy_word_list __P((WORD_LIST *));
+extern REDIRECT *copy_redirect __P((REDIRECT *));
+extern REDIRECT *copy_redirects __P((REDIRECT *));
+extern COMMAND *copy_command __P((COMMAND *));
+
+#endif /* _COMMAND_H_ */
index 1bf65c16134b2583b8b0952be7c8ff0c7625f680..20e3e32312f97abba1f4fe448813c8296a6c1732 100644 (file)
@@ -649,9 +649,9 @@ P\bPA\bAR\bRA\bAM\bME\bET\bTE\bER\bRS\bS
               An array variable whose members are the line numbers  in  source
               files    corresponding    to    each    member    of   F\bFU\bUN\bNC\bCN\bNA\bAM\bME\bE.
               $\b${\b{B\bBA\bAS\bSH\bH_\b_L\bLI\bIN\bNE\bEN\bNO\bO[\b[_\b$_\bi]\b]}\b} is the line number in the source  file  where
-              $\b${\b{F\bFU\bUN\bNC\bCN\bNA\bAM\bME\bE[\b[_\b$_\bi  _\b+  _\b1]\b]}\b} was called.  The corresponding source file
-              name is $\b${\b{B\bBA\bAS\bSH\bH_\b_S\bSO\bOU\bUR\bRC\bCE\bE[\b[_\b$_\bi _\b+ _\b1]\b]}\b}.\b.  U\bUs\bse\be L\bLI\bIN\bNE\bEN\bNO\bO t\bto\bo o\bob\bbt\bta\bai\bin\bn  t\bth\bhe\be  c\bcu\bur\br-\b-
-              r\bre\ben\bnt\bl\bli\bin\bne\be n\bnu\bum\bmb\bbe\ber\br.\b.
+              $\b${\b{F\bFU\bUN\bNC\bCN\bNA\bAM\bME\bE[\b[_\b$_\bi_\bf_\bP]\b]}\b}  _\bw_\ba_\bs  _\bc_\ba_\bl_\bl_\be_\bd_\b.   _\bT_\bh_\be  _\bc_\bo_\br_\br_\be_\bs_\bp_\bo_\bn_\bd_\bi_\bn_\bg _\bs_\bo_\bu_\br_\bc_\be _\bf_\bi_\bl_\be
+              _\bn_\ba_\bm_\be _\bi_\bs $\b${\b{B\bBA\bAS\bSH\bH_\b_S\bSO\bOU\bUR\bRC\bCE\bE[\b[_\b$_\bi]\b]}\b}.\b.  U\bUs\bse\be L\bLI\bIN\bNE\bEN\bNO\bO t\bto\bo  o\bob\bbt\bta\bai\bin\bn  t\bth\bhe\be  c\bcu\bur\brr\bre\ben\bnt\bt
+              l\bli\bin\bne\be n\bnu\bum\bmb\bbe\ber\br.\b.
        B\bBA\bAS\bSH\bH_\b_R\bRE\bEM\bMA\bAT\bTC\bCH\bH
               An  array  variable  whose members are assigned by the =\b=~\b~ binary
               operator to the [\b[[\b[ conditional command.  The element with  index
@@ -1061,7 +1061,7 @@ P\bPA\bAR\bRA\bAM\bME\bET\bTE\bER\bRS\bS
               gous to the %\b%?\b?  job identifier (see J\bJO\bOB\bB C\bCO\bON\bNT\bTR\bRO\bOL\bL below).  If  set
               to  any  other  value, the supplied string must be a prefix of a
               stopped job's name; this provides functionality analogous to the
-              %\b% job identifier.
+              %\b%_\bs_\bt_\br_\bi_\bn_\bg job identifier.
 
        h\bhi\bis\bst\btc\bch\bha\bar\brs\bs
               The  two or three characters which control history expansion and
@@ -2203,12 +2203,12 @@ S\bSI\bIG\bGN\bNA\bAL\bLS\bS
        If  the  h\bhu\bup\bpo\bon\bne\bex\bxi\bit\bt  shell  option has been set with s\bsh\bho\bop\bpt\bt, b\bba\bas\bsh\bh sends a
        S\bSI\bIG\bGH\bHU\bUP\bP to all jobs when an interactive login shell exits.
 
-       If 0for which a trap has been set, the trap will not be executed  until
-       the  command  completes.  When b\bba\bas\bsh\bh is waiting for an asynchronous com-
-       mand via the w\bwa\bai\bit\bt builtin, the reception of a signal for which  a  trap
-       has  been set will cause the w\bwa\bai\bit\bt builtin to return immediately with an
-       exit status greater than 128, immediately after which the trap is  exe-
-       cuted.
+       If b\bba\bas\bsh\bh is waiting for a command to complete and receives a signal  for
+       which a trap has been set, the trap will not be executed until the com-
+       mand completes.  When b\bba\bas\bsh\bh is waiting for an asynchronous  command  via
+       the  w\bwa\bai\bit\bt  builtin, the reception of a signal for which a trap has been
+       set will cause the w\bwa\bai\bit\bt builtin to return immediately with an exit sta-
+       tus greater than 128, immediately after which the trap is executed.
 
 J\bJO\bOB\bB C\bCO\bON\bNT\bTR\bRO\bOL\bL
        _\bJ_\bo_\bb  _\bc_\bo_\bn_\bt_\br_\bo_\bl  refers  to  the ability to selectively stop (_\bs_\bu_\bs_\bp_\be_\bn_\bd) the
@@ -3513,14 +3513,19 @@ S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
                       n\bno\bos\bsp\bpa\bac\bce\be Tell   readline  not  to  append  a  space  (the
                               default) to words completed at the  end  of  the
                               line.
+                      p\bpl\blu\bus\bsd\bdi\bir\brs\bs
+                              After  any  matches  defined by the compspec are
+                              generated,   directory   name   completion    is
+                              attempted  and  any  matches  are  added  to the
+                              results of the other actions.
               -\b-A\bA _\ba_\bc_\bt_\bi_\bo_\bn
-                      The  _\ba_\bc_\bt_\bi_\bo_\bn  may  be  one of the following to generate a
+                      The _\ba_\bc_\bt_\bi_\bo_\bn may be one of the  following  to  generate  a
                       list of possible completions:
                       a\bal\bli\bia\bas\bs   Alias names.  May also be specified as -\b-a\ba.
                       a\bar\brr\bra\bay\byv\bva\bar\br
                               Array variable names.
                       b\bbi\bin\bnd\bdi\bin\bng\bg R\bRe\bea\bad\bdl\bli\bin\bne\be key binding names.
-                      b\bbu\bui\bil\blt\bti\bin\bn Names of shell builtin commands.   May  also  be
+                      b\bbu\bui\bil\blt\bti\bin\bn Names  of  shell  builtin commands.  May also be
                               specified as -\b-b\bb.
                       c\bco\bom\bmm\bma\ban\bnd\bd Command names.  May also be specified as -\b-c\bc.
                       d\bdi\bir\bre\bec\bct\bto\bor\bry\by
@@ -3528,7 +3533,7 @@ S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
                       d\bdi\bis\bsa\bab\bbl\ble\bed\bd
                               Names of disabled shell builtins.
                       e\ben\bna\bab\bbl\ble\bed\bd Names of enabled shell builtins.
-                      e\bex\bxp\bpo\bor\brt\bt  Names  of exported shell variables.  May also be
+                      e\bex\bxp\bpo\bor\brt\bt  Names of exported shell variables.  May also  be
                               specified as -\b-e\be.
                       f\bfi\bil\ble\be    File names.  May also be specified as -\b-f\bf.
                       f\bfu\bun\bnc\bct\bti\bio\bon\bn
@@ -3537,17 +3542,17 @@ S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
                       h\bhe\bel\blp\bpt\bto\bop\bpi\bic\bc
                               Help topics as accepted by the h\bhe\bel\blp\bp builtin.
                       h\bho\bos\bst\btn\bna\bam\bme\be
-                              Hostnames, as taken from the file  specified  by
+                              Hostnames,  as  taken from the file specified by
                               the H\bHO\bOS\bST\bTF\bFI\bIL\bLE\bE shell variable.
-                      j\bjo\bob\bb     Job  names,  if job control is active.  May also
+                      j\bjo\bob\bb     Job names, if job control is active.   May  also
                               be specified as -\b-j\bj.
-                      k\bke\bey\byw\bwo\bor\brd\bd Shell reserved words.  May also be specified  as
+                      k\bke\bey\byw\bwo\bor\brd\bd Shell  reserved words.  May also be specified as
                               -\b-k\bk.
                       r\bru\bun\bnn\bni\bin\bng\bg Names of running jobs, if job control is active.
                       s\bse\ber\brv\bvi\bic\bce\be Service names.  May also be specified as -\b-s\bs.
-                      s\bse\bet\bto\bop\bpt\bt  Valid arguments for the -\b-o\bo  option  to  the  s\bse\bet\bt
+                      s\bse\bet\bto\bop\bpt\bt  Valid  arguments  for  the  -\b-o\bo option to the s\bse\bet\bt
                               builtin.
-                      s\bsh\bho\bop\bpt\bt   Shell  option  names  as  accepted  by the s\bsh\bho\bop\bpt\bt
+                      s\bsh\bho\bop\bpt\bt   Shell option names  as  accepted  by  the  s\bsh\bho\bop\bpt\bt
                               builtin.
                       s\bsi\big\bgn\bna\bal\bl  Signal names.
                       s\bst\bto\bop\bpp\bpe\bed\bd Names of stopped jobs, if job control is active.
@@ -3556,135 +3561,135 @@ S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
                               Names of all shell variables.  May also be spec-
                               ified as -\b-v\bv.
               -\b-G\bG _\bg_\bl_\bo_\bb_\bp_\ba_\bt
-                      The filename expansion pattern _\bg_\bl_\bo_\bb_\bp_\ba_\bt  is  expanded  to
+                      The  filename  expansion  pattern _\bg_\bl_\bo_\bb_\bp_\ba_\bt is expanded to
                       generate the possible completions.
               -\b-W\bW _\bw_\bo_\br_\bd_\bl_\bi_\bs_\bt
-                      The  _\bw_\bo_\br_\bd_\bl_\bi_\bs_\bt  is  split using the characters in the I\bIF\bFS\bS
-                      special variable as delimiters, and each resultant  word
-                      is  expanded.   The possible completions are the members
-                      of the resultant list which match the  word  being  com-
+                      The _\bw_\bo_\br_\bd_\bl_\bi_\bs_\bt is split using the characters  in  the  I\bIF\bFS\bS
+                      special  variable as delimiters, and each resultant word
+                      is expanded.  The possible completions are  the  members
+                      of  the  resultant  list which match the word being com-
                       pleted.
               -\b-C\bC _\bc_\bo_\bm_\bm_\ba_\bn_\bd
-                      _\bc_\bo_\bm_\bm_\ba_\bn_\b is  executed in a subshell environment, and its
+                      _\bc_\bo_\bm_\bm_\ba_\bn_\bis executed in a subshell environment,  and  its
                       output is used as the possible completions.
               -\b-F\bF _\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn
-                      The shell function _\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn is executed in  the  current
-                      shell  environment.  When it finishes, the possible com-
-                      pletions are retrieved from the value of  the  C\bCO\bOM\bMP\bPR\bRE\bEP\bPL\bLY\bY
+                      The  shell  function _\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn is executed in the current
+                      shell environment.  When it finishes, the possible  com-
+                      pletions  are  retrieved from the value of the C\bCO\bOM\bMP\bPR\bRE\bEP\bPL\bLY\bY
                       array variable.
               -\b-X\bX _\bf_\bi_\bl_\bt_\be_\br_\bp_\ba_\bt
-                      _\bf_\bi_\bl_\bt_\be_\br_\bp_\ba_\b is  a pattern as used for filename expansion.
+                      _\bf_\bi_\bl_\bt_\be_\br_\bp_\ba_\bis a pattern as used for  filename  expansion.
                       It is applied to the list of possible completions gener-
-                      ated  by  the  preceding options and arguments, and each
-                      completion matching _\bf_\bi_\bl_\bt_\be_\br_\bp_\ba_\bt is removed from the  list.
-                      A  leading  !\b!  in _\bf_\bi_\bl_\bt_\be_\br_\bp_\ba_\bt negates the pattern; in this
-                      case, any completion not matching _\bf_\bi_\bl_\bt_\be_\br_\bp_\ba_\bt is  removed.
+                      ated by the preceding options and  arguments,  and  each
+                      completion  matching _\bf_\bi_\bl_\bt_\be_\br_\bp_\ba_\bt is removed from the list.
+                      A leading !\b! in _\bf_\bi_\bl_\bt_\be_\br_\bp_\ba_\bt negates the  pattern;  in  this
+                      case,  any completion not matching _\bf_\bi_\bl_\bt_\be_\br_\bp_\ba_\bt is removed.
               -\b-P\bP _\bp_\br_\be_\bf_\bi_\bx
-                      _\bp_\br_\be_\bf_\bi_\b is  added at the beginning of each possible com-
+                      _\bp_\br_\be_\bf_\bi_\bis added at the beginning of each  possible  com-
                       pletion after all other options have been applied.
               -\b-S\bS _\bs_\bu_\bf_\bf_\bi_\bx
                       _\bs_\bu_\bf_\bf_\bi_\bx is appended to each possible completion after all
                       other options have been applied.
 
-              The  return  value is true unless an invalid option is supplied,
-              an option other than -\b-p\bp or -\b-r\br is supplied without a  _\bn_\ba_\bm_\b argu-
-              ment,  an  attempt  is made to remove a completion specification
+              The return value is true unless an invalid option  is  supplied,
+              an  option  other than -\b-p\bp or -\b-r\br is supplied without a _\bn_\ba_\bm_\be argu-
+              ment, an attempt is made to remove  a  completion  specification
               for a _\bn_\ba_\bm_\be for which no specification exists, or an error occurs
               adding a completion specification.
 
        c\bco\bon\bnt\bti\bin\bnu\bue\be [_\bn]
               Resume the next iteration of the enclosing f\bfo\bor\br, w\bwh\bhi\bil\ble\be, u\bun\bnt\bti\bil\bl, or
-              s\bse\bel\ble\bec\bct\bloop.  If _\bn is specified, resume  at  the  _\bnth  enclosing
-              loop.   _\bn  must  be  >=  1.   If _\bn is greater than the number of
-              enclosing loops, the  last  enclosing  loop  (the  ``top-level''
+              s\bse\bel\ble\bec\bct\b loop.   If  _\bn  is specified, resume at the _\bnth enclosing
+              loop.  _\bn must be >= 1.  If _\bn  is  greater  than  the  number  of
+              enclosing  loops,  the  last  enclosing  loop (the ``top-level''
               loop) is resumed.  The return value is 0 unless the shell is not
               executing a loop when c\bco\bon\bnt\bti\bin\bnu\bue\be is executed.
 
        d\bde\bec\bcl\bla\bar\bre\be [-\b-a\baf\bfF\bFi\bir\brt\btx\bx] [-\b-p\bp] [_\bn_\ba_\bm_\be[=_\bv_\ba_\bl_\bu_\be] ...]
        t\bty\byp\bpe\bes\bse\bet\bt [-\b-a\baf\bfF\bFi\bir\brt\btx\bx] [-\b-p\bp] [_\bn_\ba_\bm_\be[=_\bv_\ba_\bl_\bu_\be] ...]
-              Declare variables and/or give them attributes.  If no _\bn_\ba_\bm_\bes  are
-              given  then display the values of variables.  The -\b-p\bp option will
-              display the attributes and values of  each  _\bn_\ba_\bm_\be.   When  -\b-p\b is
-              used,  additional  options  are ignored.  The -\b-F\bF option inhibits
-              the display of function definitions; only the function name  and
+              Declare  variables and/or give them attributes.  If no _\bn_\ba_\bm_\bes are
+              given then display the values of variables.  The -\b-p\bp option  will
+              display  the  attributes  and  values  of each _\bn_\ba_\bm_\be.  When -\b-p\bp is
+              used, additional options are ignored.  The  -\b-F\bF  option  inhibits
+              the  display of function definitions; only the function name and
               attributes are printed.  If the e\bex\bxt\btd\bde\beb\bbu\bug\bg shell option is enabled
-              using s\bsh\bho\bop\bpt\bt, the source file name  and  line  number  where  the
-              function  is  defined  are  displayed  as  well.   The -\b-F\bF option
-              implies -\b-f\bf.  The following options can be used to restrict  out-
-              put  to  variables with the specified attribute or to give vari-
+              using  s\bsh\bho\bop\bpt\bt,  the  source  file  name and line number where the
+              function is defined  are  displayed  as  well.   The  -\b-F\b option
+              implies  -\b-f\bf.  The following options can be used to restrict out-
+              put to variables with the specified attribute or to  give  vari-
               ables attributes:
               -\b-a\ba     Each _\bn_\ba_\bm_\be is an array variable (see A\bAr\brr\bra\bay\bys\bs above).
               -\b-f\bf     Use function names only.
               -\b-i\bi     The variable is treated as an integer; arithmetic evalua-
-                     tion  (see  A\bAR\bRI\bIT\bTH\bHM\bME\bET\bTI\bIC\bC E\bEV\bVA\bAL\bLU\bUA\bAT\bTI\bIO\bON\bN )\b) is performed when the
+                     tion (see A\bAR\bRI\bIT\bTH\bHM\bME\bET\bTI\bIC\bC E\bEV\bVA\bAL\bLU\bUA\bAT\bTI\bIO\bON\bN )\b) is performed  when  the
                      variable is assigned a value.
               -\b-r\br     Make _\bn_\ba_\bm_\bes readonly.  These names cannot then be assigned
                      values by subsequent assignment statements or unset.
-              -\b-t\bt     Give  each  _\bn_\ba_\bm_\be  the  _\bt_\br_\ba_\bc_\be attribute.  Traced functions
+              -\b-t\bt     Give each _\bn_\ba_\bm_\be the  _\bt_\br_\ba_\bc_\be  attribute.   Traced  functions
                      inherit the D\bDE\bEB\bBU\bUG\bG trap from the calling shell.  The trace
                      attribute has no special meaning for variables.
-              -\b-x\bx     Mark  _\bn_\ba_\bm_\bes  for  export  to  subsequent commands via the
+              -\b-x\bx     Mark _\bn_\ba_\bm_\bes for export  to  subsequent  commands  via  the
                      environment.
 
-              Using `+' instead of `-' turns off the attribute  instead,  with
-              the  exception that +\b+a\ba may not be used to destroy an array vari-
-              able.  When used in a function, makes each _\bn_\ba_\bm_\be local,  as  with
-              the  l\blo\boc\bca\bal\bl  command.   If a variable name is followed by =_\bv_\ba_\bl_\bu_\be,
-              the value of the variable is set to _\bv_\ba_\bl_\bu_\be.  The return value  is
+              Using  `+'  instead of `-' turns off the attribute instead, with
+              the exception that +\b+a\ba may not be used to destroy an array  vari-
+              able.   When  used in a function, makes each _\bn_\ba_\bm_\be local, as with
+              the l\blo\boc\bca\bal\bl command.  If a variable name is  followed  by  =_\bv_\ba_\bl_\bu_\be,
+              the  value of the variable is set to _\bv_\ba_\bl_\bu_\be.  The return value is
               0 unless an invalid option is encountered, an attempt is made to
-              define a function using ``-f foo=bar'', an attempt  is  made  to
-              assign  a  value  to  a readonly variable, an attempt is made to
-              assign a value to an array variable without using  the  compound
-              assignment  syntax (see A\bAr\brr\bra\bay\bys\bs above), one of the _\bn_\ba_\bm_\be_\bs is not a
-              valid shell variable name, an attempt is made to turn off  read-
-              only  status for a readonly variable, an attempt is made to turn
+              define  a  function  using ``-f foo=bar'', an attempt is made to
+              assign a value to a readonly variable, an  attempt  is  made  to
+              assign  a  value to an array variable without using the compound
+              assignment syntax (see A\bAr\brr\bra\bay\bys\bs above), one of the _\bn_\ba_\bm_\be_\bs is not  a
+              valid  shell variable name, an attempt is made to turn off read-
+              only status for a readonly variable, an attempt is made to  turn
               off array status for an array variable, or an attempt is made to
               display a non-existent function with -\b-f\bf.
 
        d\bdi\bir\brs\bs [\b[-\b-c\bcl\blp\bpv\bv]\b] [\b[+\b+_\bn]\b] [\b[-\b-_\bn]\b]
-              Without  options,  displays  the  list  of  currently remembered
-              directories.  The default display  is  on  a  single  line  with
-              directory  names  separated by spaces.  Directories are added to
-              the list with  the  p\bpu\bus\bsh\bhd\bd  command;  the  p\bpo\bop\bpd\bd  command  removes
+              Without options,  displays  the  list  of  currently  remembered
+              directories.   The  default  display  is  on  a single line with
+              directory names separated by spaces.  Directories are  added  to
+              the  list  with  the  p\bpu\bus\bsh\bhd\bd  command;  the  p\bpo\bop\bpd\bd command removes
               entries from the list.
               +\b+_\bn     Displays the _\bnth entry counting from the left of the list
                      shown by d\bdi\bir\brs\bs when invoked without options, starting with
                      zero.
-              -\b-_\bn     Displays  the  _\bnth  entry  counting from the right of the
+              -\b-_\bn     Displays the _\bnth entry counting from  the  right  of  the
                      list shown by d\bdi\bir\brs\bs when invoked without options, starting
                      with zero.
               -\b-c\bc     Clears  the  directory  stack  by  deleting  all  of  the
                      entries.
-              -\b-l\bl     Produces a longer listing;  the  default  listing  format
+              -\b-l\bl     Produces  a  longer  listing;  the default listing format
                      uses a tilde to denote the home directory.
               -\b-p\bp     Print the directory stack with one entry per line.
-              -\b-v\bv     Print  the  directory stack with one entry per line, pre-
+              -\b-v\bv     Print the directory stack with one entry per  line,  pre-
                      fixing each entry with its index in the stack.
 
-              The return value is 0 unless an invalid option is supplied or  _\bn
+              The  return value is 0 unless an invalid option is supplied or _\bn
               indexes beyond the end of the directory stack.
 
        d\bdi\bis\bso\bow\bwn\bn [-\b-a\bar\br] [-\b-h\bh] [_\bj_\bo_\bb_\bs_\bp_\be_\bc ...]
-              Without  options,  each  _\bj_\bo_\bb_\bs_\bp_\be_\bc  is  removed  from the table of
-              active jobs.  If the -\b-h\bh option is given,  each  _\bj_\bo_\bb_\bs_\bp_\be_\bc  is  not
+              Without options, each _\bj_\bo_\bb_\bs_\bp_\be_\bc  is  removed  from  the  table  of
+              active  jobs.   If  the  -\b-h\bh option is given, each _\bj_\bo_\bb_\bs_\bp_\be_\bc is not
               removed from the table, but is marked so that S\bSI\bIG\bGH\bHU\bUP\bP is not sent
-              to the job if the shell receives a S\bSI\bIG\bGH\bHU\bUP\bP.   If  no  _\bj_\bo_\bb_\bs_\bp_\be_\b is
-              present,  and  neither the -\b-a\ba nor the -\b-r\br option is supplied, the
-              _\bc_\bu_\br_\br_\be_\bn_\b_\bj_\bo_\bb is used.  If no _\bj_\bo_\bb_\bs_\bp_\be_\bc is supplied, the  -\b-a\b option
-              means  to  remove or mark all jobs; the -\b-r\br option without a _\bj_\bo_\bb_\b-
-              _\bs_\bp_\be_\bargument restricts operation to running jobs.   The  return
+              to  the  job  if  the shell receives a S\bSI\bIG\bGH\bHU\bUP\bP.  If no _\bj_\bo_\bb_\bs_\bp_\be_\bc is
+              present, and neither the -\b-a\ba nor the -\b-r\br option is  supplied,  the
+              _\bc_\bu_\br_\br_\be_\bn_\b _\bj_\bo_\bb  is used.  If no _\bj_\bo_\bb_\bs_\bp_\be_\bc is supplied, the -\b-a\ba option
+              means to remove or mark all jobs; the -\b-r\br option without  a  _\bj_\bo_\bb_\b-
+              _\bs_\bp_\be_\b argument  restricts operation to running jobs.  The return
               value is 0 unless a _\bj_\bo_\bb_\bs_\bp_\be_\bc does not specify a valid job.
 
        e\bec\bch\bho\bo [-\b-n\bne\beE\bE] [_\ba_\br_\bg ...]
-              Output  the  _\ba_\br_\bgs,  separated  by spaces, followed by a newline.
+              Output the _\ba_\br_\bgs, separated by spaces,  followed  by  a  newline.
               The return status is always 0.  If -\b-n\bn is specified, the trailing
-              newline  is  suppressed.  If the -\b-e\be option is given, interpreta-
-              tion of the following backslash-escaped characters  is  enabled.
-              The  -\b-E\bE option disables the interpretation of these escape char-
-              acters, even on systems where they are interpreted  by  default.
-              The  x\bxp\bpg\bg_\b_e\bec\bch\bho\bo  shell option may be used to dynamically determine
-              whether or not e\bec\bch\bho\bo expands these escape characters by  default.
-              e\bec\bch\bho\b does  not  interpret  -\b--\b- to mean the end of options.  e\bec\bch\bho\bo
+              newline is suppressed.  If the -\b-e\be option is  given,  interpreta-
+              tion  of  the following backslash-escaped characters is enabled.
+              The -\b-E\bE option disables the interpretation of these escape  char-
+              acters,  even  on systems where they are interpreted by default.
+              The x\bxp\bpg\bg_\b_e\bec\bch\bho\bo shell option may be used to  dynamically  determine
+              whether  or not e\bec\bch\bho\bo expands these escape characters by default.
+              e\bec\bch\bho\bdoes not interpret -\b--\b- to mean the  end  of  options.   e\bec\bch\bho\bo
               interprets the following escape sequences:
               \\b\a\ba     alert (bell)
               \\b\b\bb     backspace
@@ -3696,188 +3701,188 @@ S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
               \\b\t\bt     horizontal tab
               \\b\v\bv     vertical tab
               \\b\\\b\     backslash
-              \\b\0\b0_\bn_\bn_\bn  the eight-bit character whose value is  the  octal  value
+              \\b\0\b0_\bn_\bn_\bn  the  eight-bit  character  whose value is the octal value
                      _\bn_\bn_\bn (zero to three octal digits)
-              \\b\_\bn_\bn_\bn   the  eight-bit  character  whose value is the octal value
+              \\b\_\bn_\bn_\bn   the eight-bit character whose value is  the  octal  value
                      _\bn_\bn_\bn (one to three octal digits)
-              \\b\x\bx_\bH_\bH   the eight-bit character whose value  is  the  hexadecimal
+              \\b\x\bx_\bH_\bH   the  eight-bit  character  whose value is the hexadecimal
                      value _\bH_\bH (one or two hex digits)
 
        e\ben\bna\bab\bbl\ble\be [-\b-a\bad\bdn\bnp\bps\bs] [-\b-f\bf _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be] [_\bn_\ba_\bm_\be ...]
-              Enable  and disable builtin shell commands.  Disabling a builtin
+              Enable and disable builtin shell commands.  Disabling a  builtin
               allows a disk command which has the same name as a shell builtin
-              to  be  executed without specifying a full pathname, even though
-              the shell normally searches for builtins before  disk  commands.
-              If  -\b-n\bn  is  used,  each  _\bn_\ba_\bm_\be  is disabled; otherwise, _\bn_\ba_\bm_\be_\bs are
+              to be executed without specifying a full pathname,  even  though
+              the  shell  normally searches for builtins before disk commands.
+              If -\b-n\bn is used, each  _\bn_\ba_\bm_\be  is  disabled;  otherwise,  _\bn_\ba_\bm_\be_\b are
               enabled.  For example, to use the t\bte\bes\bst\bt binary found via the P\bPA\bAT\bTH\bH
-              instead  of  the  shell builtin version, run ``enable -n test''.
-              The -\b-f\bf option means to load the new builtin  command  _\bn_\ba_\bm_\b from
+              instead of the shell builtin version, run  ``enable  -n  test''.
+              The  -\b-f\bf  option  means to load the new builtin command _\bn_\ba_\bm_\be from
               shared object _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be, on systems that support dynamic loading.
-              The -\b-d\bd option will delete a builtin previously loaded  with  -\b-f\bf.
+              The  -\b-d\bd  option will delete a builtin previously loaded with -\b-f\bf.
               If no _\bn_\ba_\bm_\be arguments are given, or if the -\b-p\bp option is supplied,
               a list of shell builtins is printed.  With no other option argu-
-              ments,  the  list consists of all enabled shell builtins.  If -\b-n\bn
-              is supplied, only disabled builtins are printed.  If -\b-a\ba is  sup-
-              plied,  the  list printed includes all builtins, with an indica-
-              tion of whether or not each is enabled.  If -\b-s\bs is supplied,  the
-              output  is restricted to the POSIX _\bs_\bp_\be_\bc_\bi_\ba_\bl builtins.  The return
-              value is 0 unless a _\bn_\ba_\bm_\be is not a shell builtin or there  is  an
+              ments, the list consists of all enabled shell builtins.   If  -\b-n\bn
+              is  supplied, only disabled builtins are printed.  If -\b-a\ba is sup-
+              plied, the list printed includes all builtins, with  an  indica-
+              tion  of whether or not each is enabled.  If -\b-s\bs is supplied, the
+              output is restricted to the POSIX _\bs_\bp_\be_\bc_\bi_\ba_\bl builtins.  The  return
+              value  is  0 unless a _\bn_\ba_\bm_\be is not a shell builtin or there is an
               error loading a new builtin from a shared object.
 
        e\bev\bva\bal\bl [_\ba_\br_\bg ...]
-              The  _\ba_\br_\bgs  are read and concatenated together into a single com-
-              mand.  This command is then read and executed by the shell,  and
-              its  exit status is returned as the value of e\bev\bva\bal\bl.  If there are
+              The _\ba_\br_\bgs are read and concatenated together into a  single  com-
+              mand.   This command is then read and executed by the shell, and
+              its exit status is returned as the value of e\bev\bva\bal\bl.  If there  are
               no _\ba_\br_\bg_\bs, or only null arguments, e\bev\bva\bal\bl returns 0.
 
        e\bex\bxe\bec\bc [-\b-c\bcl\bl] [-\b-a\ba _\bn_\ba_\bm_\be] [_\bc_\bo_\bm_\bm_\ba_\bn_\bd [_\ba_\br_\bg_\bu_\bm_\be_\bn_\bt_\bs]]
-              If _\bc_\bo_\bm_\bm_\ba_\bn_\bd is specified, it replaces the shell.  No new  process
-              is  created.  The _\ba_\br_\bg_\bu_\bm_\be_\bn_\bt_\bs become the arguments to _\bc_\bo_\bm_\bm_\ba_\bn_\bd.  If
+              If  _\bc_\bo_\bm_\bm_\ba_\bn_\bd is specified, it replaces the shell.  No new process
+              is created.  The _\ba_\br_\bg_\bu_\bm_\be_\bn_\bt_\bs become the arguments to _\bc_\bo_\bm_\bm_\ba_\bn_\bd.   If
               the -\b-l\bl option is supplied, the shell places a dash at the begin-
               ning of the zeroth arg passed to _\bc_\bo_\bm_\bm_\ba_\bn_\bd.  This is what _\bl_\bo_\bg_\bi_\bn(1)
               does.  The -\b-c\bc option causes _\bc_\bo_\bm_\bm_\ba_\bn_\bd to be executed with an empty
-              environment.   If  -\b-a\ba  is supplied, the shell passes _\bn_\ba_\bm_\be as the
-              zeroth argument to the executed command.  If _\bc_\bo_\bm_\bm_\ba_\bn_\bd  cannot  be
-              executed  for some reason, a non-interactive shell exits, unless
-              the shell option e\bex\bxe\bec\bcf\bfa\bai\bil\bl is enabled, in which case  it  returns
-              failure.   An interactive shell returns failure if the file can-
-              not be executed.  If _\bc_\bo_\bm_\bm_\ba_\bn_\bd is not specified, any  redirections
-              take  effect  in  the current shell, and the return status is 0.
+              environment.  If -\b-a\ba is supplied, the shell passes  _\bn_\ba_\bm_\be  as  the
+              zeroth  argument  to the executed command.  If _\bc_\bo_\bm_\bm_\ba_\bn_\bd cannot be
+              executed for some reason, a non-interactive shell exits,  unless
+              the  shell  option e\bex\bxe\bec\bcf\bfa\bai\bil\bl is enabled, in which case it returns
+              failure.  An interactive shell returns failure if the file  can-
+              not  be executed.  If _\bc_\bo_\bm_\bm_\ba_\bn_\bd is not specified, any redirections
+              take effect in the current shell, and the return  status  is  0.
               If there is a redirection error, the return status is 1.
 
        e\bex\bxi\bit\bt [_\bn]
-              Cause the shell to exit with a status of _\bn.  If  _\bn  is  omitted,
+              Cause  the  shell  to exit with a status of _\bn.  If _\bn is omitted,
               the exit status is that of the last command executed.  A trap on
               E\bEX\bXI\bIT\bT is executed before the shell terminates.
 
        e\bex\bxp\bpo\bor\brt\bt [-\b-f\bfn\bn] [_\bn_\ba_\bm_\be[=_\bw_\bo_\br_\bd]] ...
        e\bex\bxp\bpo\bor\brt\bt -\b-p\bp
-              The supplied _\bn_\ba_\bm_\be_\bs are marked for automatic export to the  envi-
-              ronment  of subsequently executed commands.  If the -\b-f\bf option is
-              given, the _\bn_\ba_\bm_\be_\bs refer to functions.  If no _\bn_\ba_\bm_\be_\bs are given,  or
-              if  the  -\b-p\bp  option  is  supplied,  a list of all names that are
-              exported in this shell is printed.  The  -\b-n\bn  option  causes  the
-              export  property  to  be  removed from each _\bn_\ba_\bm_\be.  If a variable
-              name is followed by =_\bw_\bo_\br_\bd, the value of the variable is  set  to
-              _\bw_\bo_\br_\bd.   e\bex\bxp\bpo\bor\brt\bt  returns  an  exit  status of 0 unless an invalid
-              option is encountered, one of the _\bn_\ba_\bm_\be_\bs is  not  a  valid  shell
+              The  supplied _\bn_\ba_\bm_\be_\bs are marked for automatic export to the envi-
+              ronment of subsequently executed commands.  If the -\b-f\bf option  is
+              given,  the _\bn_\ba_\bm_\be_\bs refer to functions.  If no _\bn_\ba_\bm_\be_\bs are given, or
+              if the -\b-p\bp option is supplied, a  list  of  all  names  that  are
+              exported  in  this  shell  is printed.  The -\b-n\bn option causes the
+              export property to be removed from each  _\bn_\ba_\bm_\be.   If  a  variable
+              name  is  followed by =_\bw_\bo_\br_\bd, the value of the variable is set to
+              _\bw_\bo_\br_\bd.  e\bex\bxp\bpo\bor\brt\bt returns an exit status  of  0  unless  an  invalid
+              option  is  encountered,  one  of the _\bn_\ba_\bm_\be_\bs is not a valid shell
               variable name, or -\b-f\bf is supplied with a _\bn_\ba_\bm_\be that is not a func-
               tion.
 
        f\bfc\bc [-\b-e\be _\be_\bn_\ba_\bm_\be] [-\b-n\bnl\blr\br] [_\bf_\bi_\br_\bs_\bt] [_\bl_\ba_\bs_\bt]
        f\bfc\bc -\b-s\bs [_\bp_\ba_\bt=_\br_\be_\bp] [_\bc_\bm_\bd]
-              Fix Command.  In the first form, a range of commands from  _\bf_\bi_\br_\bs_\bt
-              to  _\bl_\ba_\bs_\bt  is selected from the history list.  _\bF_\bi_\br_\bs_\bt and _\bl_\ba_\bs_\bt may
-              be specified as a string (to locate the last  command  beginning
-              with  that  string)  or  as  a number (an index into the history
+              Fix  Command.  In the first form, a range of commands from _\bf_\bi_\br_\bs_\bt
+              to _\bl_\ba_\bs_\bt is selected from the history list.  _\bF_\bi_\br_\bs_\bt and  _\bl_\ba_\bs_\b may
+              be  specified  as a string (to locate the last command beginning
+              with that string) or as a number  (an  index  into  the  history
               list, where a negative number is used as an offset from the cur-
               rent command number).  If _\bl_\ba_\bs_\bt is not specified it is set to the
-              current command for listing (so that ``fc -l  -10''  prints  the
+              current  command  for  listing (so that ``fc -l -10'' prints the
               last 10 commands) and to _\bf_\bi_\br_\bs_\bt otherwise.  If _\bf_\bi_\br_\bs_\bt is not spec-
-              ified it is set to the previous command for editing and -16  for
+              ified  it is set to the previous command for editing and -16 for
               listing.
 
-              The  -\b-n\bn option suppresses the command numbers when listing.  The
-              -\b-r\boption reverses the order of the commands.  If the -\b-l\b option
-              is  given,  the  commands are listed on standard output.  Other-
-              wise, the editor given by _\be_\bn_\ba_\bm_\be is invoked on a file  containing
-              those  commands.  If _\be_\bn_\ba_\bm_\be is not given, the value of the F\bFC\bCE\bED\bDI\bIT\bT
-              variable is used, and the value of E\bED\bDI\bIT\bTO\bOR\bR if F\bFC\bCE\bED\bDI\bIT\bT is not  set.
-              If  neither  variable  is set, _\bv_\bi is used.  When editing is com-
+              The -\b-n\bn option suppresses the command numbers when listing.   The
+              -\b-r\b option reverses the order of the commands.  If the -\b-l\bl option
+              is given, the commands are listed on  standard  output.   Other-
+              wise,  the editor given by _\be_\bn_\ba_\bm_\be is invoked on a file containing
+              those commands.  If _\be_\bn_\ba_\bm_\be is not given, the value of the  F\bFC\bCE\bED\bDI\bIT\bT
+              variable  is used, and the value of E\bED\bDI\bIT\bTO\bOR\bR if F\bFC\bCE\bED\bDI\bIT\bT is not set.
+              If neither variable is set, _\bv_\bi is used.  When  editing  is  com-
               plete, the edited commands are echoed and executed.
 
-              In the second form, _\bc_\bo_\bm_\bm_\ba_\bn_\bd is re-executed after  each  instance
-              of  _\bp_\ba_\bt  is replaced by _\br_\be_\bp.  A useful alias to use with this is
-              ``r="fc -s"'', so that typing ``r cc''  runs  the  last  command
+              In  the  second form, _\bc_\bo_\bm_\bm_\ba_\bn_\bd is re-executed after each instance
+              of _\bp_\ba_\bt is replaced by _\br_\be_\bp.  A useful alias to use with  this  is
+              ``r="fc  -s"'',  so  that  typing ``r cc'' runs the last command
               beginning with ``cc'' and typing ``r'' re-executes the last com-
               mand.
 
-              If the first form is used, the  return  value  is  0  unless  an
-              invalid  option  is encountered or _\bf_\bi_\br_\bs_\bt or _\bl_\ba_\bs_\bt specify history
-              lines out of range.  If the -\b-e\be option is  supplied,  the  return
+              If  the  first  form  is  used,  the return value is 0 unless an
+              invalid option is encountered or _\bf_\bi_\br_\bs_\bt or _\bl_\ba_\bs_\bt  specify  history
+              lines  out  of  range.  If the -\b-e\be option is supplied, the return
               value is the value of the last command executed or failure if an
               error occurs with the temporary file of commands.  If the second
-              form  is  used, the return status is that of the command re-exe-
-              cuted, unless _\bc_\bm_\bd does not specify  a  valid  history  line,  in
+              form is used, the return status is that of the  command  re-exe-
+              cuted,  unless  _\bc_\bm_\bd  does  not  specify a valid history line, in
               which case f\bfc\bc returns failure.
 
        f\bfg\bg [_\bj_\bo_\bb_\bs_\bp_\be_\bc]
-              Resume  _\bj_\bo_\bb_\bs_\bp_\be_\bc  in the foreground, and make it the current job.
+              Resume _\bj_\bo_\bb_\bs_\bp_\be_\bc in the foreground, and make it the  current  job.
               If _\bj_\bo_\bb_\bs_\bp_\be_\bc is not present, the shell's notion of the _\bc_\bu_\br_\br_\be_\bn_\bt _\bj_\bo_\bb
-              is  used.   The  return value is that of the command placed into
-              the foreground, or failure if run when job control  is  disabled
+              is used.  The return value is that of the  command  placed  into
+              the  foreground,  or failure if run when job control is disabled
               or, when run with job control enabled, if _\bj_\bo_\bb_\bs_\bp_\be_\bc does not spec-
-              ify a valid job or _\bj_\bo_\bb_\bs_\bp_\be_\bc specifies  a  job  that  was  started
+              ify  a  valid  job  or  _\bj_\bo_\bb_\bs_\bp_\be_\bc specifies a job that was started
               without job control.
 
        g\bge\bet\bto\bop\bpt\bts\bs _\bo_\bp_\bt_\bs_\bt_\br_\bi_\bn_\bg _\bn_\ba_\bm_\be [_\ba_\br_\bg_\bs]
-              g\bge\bet\bto\bop\bpt\bts\b is used by shell procedures to parse positional parame-
-              ters.  _\bo_\bp_\bt_\bs_\bt_\br_\bi_\bn_\bg contains the option  characters  to  be  recog-
-              nized;  if  a  character  is  followed by a colon, the option is
-              expected to have an argument, which should be separated from  it
-              by  white space.  The colon and question mark characters may not
-              be used as option characters.  Each time it is invoked,  g\bge\bet\bto\bop\bpt\bts\bs
-              places  the next option in the shell variable _\bn_\ba_\bm_\be, initializing
+              g\bge\bet\bto\bop\bpt\bts\bis used by shell procedures to parse positional  parame-
+              ters.   _\bo_\bp_\bt_\bs_\bt_\br_\bi_\bn_\bg  contains  the  option characters to be recog-
+              nized; if a character is followed by  a  colon,  the  option  is
+              expected  to have an argument, which should be separated from it
+              by white space.  The colon and question mark characters may  not
+              be  used as option characters.  Each time it is invoked, g\bge\bet\bto\bop\bpt\bts\bs
+              places the next option in the shell variable _\bn_\ba_\bm_\be,  initializing
               _\bn_\ba_\bm_\be if it does not exist, and the index of the next argument to
               be processed into the variable O\bOP\bPT\bTI\bIN\bND\bD.  O\bOP\bPT\bTI\bIN\bND\bD is initialized to
-              1 each time the shell or a shell script  is  invoked.   When  an
-              option  requires  an argument, g\bge\bet\bto\bop\bpt\bts\bs places that argument into
-              the variable O\bOP\bPT\bTA\bAR\bRG\bG.  The shell does not reset O\bOP\bPT\bTI\bIN\bND\b automati-
-              cally;  it  must  be  manually  reset  between multiple calls to
+              1  each  time  the  shell or a shell script is invoked.  When an
+              option requires an argument, g\bge\bet\bto\bop\bpt\bts\bs places that  argument  into
+              the  variable O\bOP\bPT\bTA\bAR\bRG\bG.  The shell does not reset O\bOP\bPT\bTI\bIN\bND\bD automati-
+              cally; it must be  manually  reset  between  multiple  calls  to
               g\bge\bet\bto\bop\bpt\bts\bs within the same shell invocation if a new set of parame-
               ters is to be used.
 
-              When  the  end  of  options is encountered, g\bge\bet\bto\bop\bpt\bts\bs exits with a
-              return value greater than zero.  O\bOP\bPT\bTI\bIN\bND\bD is set to the  index  of
+              When the end of options is encountered,  g\bge\bet\bto\bop\bpt\bts\bs  exits  with  a
+              return  value  greater than zero.  O\bOP\bPT\bTI\bIN\bND\bD is set to the index of
               the first non-option argument, and n\bna\bam\bme\be is set to ?.
 
-              g\bge\bet\bto\bop\bpt\bts\b normally  parses the positional parameters, but if more
+              g\bge\bet\bto\bop\bpt\bts\bnormally parses the positional parameters, but  if  more
               arguments are given in _\ba_\br_\bg_\bs, g\bge\bet\bto\bop\bpt\bts\bs parses those instead.
 
-              g\bge\bet\bto\bop\bpt\bts\bcan report errors in two ways.  If the  first  character
-              of  _\bo_\bp_\bt_\bs_\bt_\br_\bi_\bn_\bg  is  a  colon, _\bs_\bi_\bl_\be_\bn_\bt error reporting is used.  In
-              normal operation diagnostic messages are  printed  when  invalid
-              options  or  missing  option  arguments are encountered.  If the
-              variable O\bOP\bPT\bTE\bER\bRR\bR is set to 0, no  error  messages  will  be  dis-
+              g\bge\bet\bto\bop\bpt\bts\b can  report errors in two ways.  If the first character
+              of _\bo_\bp_\bt_\bs_\bt_\br_\bi_\bn_\bg is a colon, _\bs_\bi_\bl_\be_\bn_\bt error  reporting  is  used.   In
+              normal  operation  diagnostic  messages are printed when invalid
+              options or missing option arguments  are  encountered.   If  the
+              variable  O\bOP\bPT\bTE\bER\bRR\bR  is  set  to  0, no error messages will be dis-
               played, even if the first character of _\bo_\bp_\bt_\bs_\bt_\br_\bi_\bn_\bg is not a colon.
 
               If an invalid option is seen, g\bge\bet\bto\bop\bpt\bts\bs places ? into _\bn_\ba_\bm_\be and, if
-              not  silent,  prints  an  error  message  and unsets O\bOP\bPT\bTA\bAR\bRG\bG.  If
-              g\bge\bet\bto\bop\bpt\bts\bis silent, the  option  character  found  is  placed  in
+              not silent, prints an  error  message  and  unsets  O\bOP\bPT\bTA\bAR\bRG\bG.   If
+              g\bge\bet\bto\bop\bpt\bts\b is  silent,  the  option  character  found is placed in
               O\bOP\bPT\bTA\bAR\bRG\bG and no diagnostic message is printed.
 
-              If  a required argument is not found, and g\bge\bet\bto\bop\bpt\bts\bs is not silent,
-              a question mark (?\b?) is placed in _\bn_\ba_\bm_\be, O\bOP\bPT\bTA\bAR\bRG\bG is  unset,  and  a
-              diagnostic  message  is  printed.   If g\bge\bet\bto\bop\bpt\bts\bs is silent, then a
-              colon (:\b:) is placed in _\bn_\ba_\bm_\be and O\bOP\bPT\bTA\bAR\bRG\bG  is  set  to  the  option
+              If a required argument is not found, and g\bge\bet\bto\bop\bpt\bts\bs is not  silent,
+              a  question  mark  (?\b?) is placed in _\bn_\ba_\bm_\be, O\bOP\bPT\bTA\bAR\bRG\bG is unset, and a
+              diagnostic message is printed.  If g\bge\bet\bto\bop\bpt\bts\bs  is  silent,  then  a
+              colon  (:\b:)  is  placed  in  _\bn_\ba_\bm_\be and O\bOP\bPT\bTA\bAR\bRG\bG is set to the option
               character found.
 
-              g\bge\bet\bto\bop\bpt\bts\b returns true if an option, specified or unspecified, is
+              g\bge\bet\bto\bop\bpt\bts\breturns true if an option, specified or unspecified,  is
               found.  It returns false if the end of options is encountered or
               an error occurs.
 
        h\bha\bas\bsh\bh [-\b-l\blr\br] [-\b-p\bp _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be] [-\b-d\bdt\bt] [_\bn_\ba_\bm_\be]
-              For  each  _\bn_\ba_\bm_\be, the full file name of the command is determined
+              For each _\bn_\ba_\bm_\be, the full file name of the command  is  determined
               by searching the directories in $\b$P\bPA\bAT\bTH\bH and remembered.  If the -\b-p\bp
               option is supplied, no path search is performed, and _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be is
               used as the full file name of the command.  The -\b-r\br option causes
-              the  shell  to  forget  all remembered locations.  The -\b-d\bd option
+              the shell to forget all remembered  locations.   The  -\b-d\b option
               causes the shell to forget the remembered location of each _\bn_\ba_\bm_\be.
-              If  the  -\b-t\bt  option is supplied, the full pathname to which each
-              _\bn_\ba_\bm_\bcorresponds is printed.  If  multiple  _\bn_\ba_\bm_\be  arguments  are
-              supplied  with  -\b-t\bt,  the  _\bn_\ba_\bm_\be is printed before the hashed full
+              If the -\b-t\bt option is supplied, the full pathname  to  which  each
+              _\bn_\ba_\bm_\b corresponds  is  printed.   If multiple _\bn_\ba_\bm_\be arguments are
+              supplied with -\b-t\bt, the _\bn_\ba_\bm_\be is printed  before  the  hashed  full
               pathname.  The -\b-l\bl option causes output to be displayed in a for-
-              mat  that may be reused as input.  If no arguments are given, or
+              mat that may be reused as input.  If no arguments are given,  or
               if only -\b-l\bl is supplied, information about remembered commands is
-              printed.   The  return status is true unless a _\bn_\ba_\bm_\be is not found
+              printed.  The return status is true unless a _\bn_\ba_\bm_\be is  not  found
               or an invalid option is supplied.
 
        h\bhe\bel\blp\bp [-\b-s\bs] [_\bp_\ba_\bt_\bt_\be_\br_\bn]
-              Display helpful information about builtin commands.  If  _\bp_\ba_\bt_\bt_\be_\br_\bn
-              is  specified, h\bhe\bel\blp\bp gives detailed help on all commands matching
-              _\bp_\ba_\bt_\bt_\be_\br_\bn; otherwise help for all the builtins and  shell  control
-              structures  is printed.  The -\b-s\bs option restricts the information
-              displayed to a short usage synopsis.  The  return  status  is  0
+              Display  helpful information about builtin commands.  If _\bp_\ba_\bt_\bt_\be_\br_\bn
+              is specified, h\bhe\bel\blp\bp gives detailed help on all commands  matching
+              _\bp_\ba_\bt_\bt_\be_\br_\bn;  otherwise  help for all the builtins and shell control
+              structures is printed.  The -\b-s\bs option restricts the  information
+              displayed  to  a  short  usage synopsis.  The return status is 0
               unless no command matches _\bp_\ba_\bt_\bt_\be_\br_\bn.
 
        h\bhi\bis\bst\bto\bor\bry\by [\b[_\bn]\b]
@@ -3888,41 +3893,41 @@ S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
        h\bhi\bis\bst\bto\bor\bry\by -\b-s\bs _\ba_\br_\bg [_\ba_\br_\bg _\b._\b._\b.]
               With no options, display the command history list with line num-
               bers.  Lines listed with a *\b* have been modified.  An argument of
-              _\b lists only the last _\bn lines.  If the shell variable H\bHI\bIS\bST\bTT\bTI\bIM\bME\bE-\b-
-              F\bFO\bOR\bRM\bMA\bAT\bis set and not null, it is used as a  format  string  for
-              _\bs_\bt_\br_\bf_\bt_\bi_\bm_\be(3)  to display the time stamp associated with each dis-
-              played history entry.  No intervening blank is  printed  between
-              the  formatted  time stamp and the history line.  If _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be is
-              supplied, it is used as the name of the history  file;  if  not,
-              the  value  of H\bHI\bIS\bST\bTF\bFI\bIL\bLE\bE is used.  Options, if supplied, have the
+              _\blists only the last _\bn lines.  If the shell variable  H\bHI\bIS\bST\bTT\bTI\bIM\bME\bE-\b-
+              F\bFO\bOR\bRM\bMA\bAT\b is  set  and not null, it is used as a format string for
+              _\bs_\bt_\br_\bf_\bt_\bi_\bm_\be(3) to display the time stamp associated with each  dis-
+              played  history  entry.  No intervening blank is printed between
+              the formatted time stamp and the history line.  If  _\bf_\bi_\bl_\be_\bn_\ba_\bm_\b is
+              supplied,  it  is  used as the name of the history file; if not,
+              the value of H\bHI\bIS\bST\bTF\bFI\bIL\bLE\bE is used.  Options, if supplied,  have  the
               following meanings:
               -\b-c\bc     Clear the history list by deleting all the entries.
               -\b-d\bd _\bo_\bf_\bf_\bs_\be_\bt
                      Delete the history entry at position _\bo_\bf_\bf_\bs_\be_\bt.
-              -\b-a\ba     Append the ``new'' history lines (history  lines  entered
-                     since  the  beginning of the current b\bba\bas\bsh\bh session) to the
+              -\b-a\ba     Append  the  ``new'' history lines (history lines entered
+                     since the beginning of the current b\bba\bas\bsh\bh session)  to  the
                      history file.
-              -\b-n\bn     Read the history lines not already read from the  history
-                     file  into  the  current  history  list.  These are lines
-                     appended to the history file since the beginning  of  the
+              -\b-n\bn     Read  the history lines not already read from the history
+                     file into the current  history  list.   These  are  lines
+                     appended  to  the history file since the beginning of the
                      current b\bba\bas\bsh\bh session.
               -\b-r\br     Read the contents of the history file and use them as the
                      current history.
-              -\b-w\bw     Write the current history to the history file,  overwrit-
+              -\b-w\bw     Write  the current history to the history file, overwrit-
                      ing the history file's contents.
-              -\b-p\bp     Perform  history  substitution  on the following _\ba_\br_\bg_\bs and
-                     display the result on  the  standard  output.   Does  not
-                     store  the results in the history list.  Each _\ba_\br_\bg must be
+              -\b-p\bp     Perform history substitution on the  following  _\ba_\br_\bg_\b and
+                     display  the  result  on  the  standard output.  Does not
+                     store the results in the history list.  Each _\ba_\br_\bg must  be
                      quoted to disable normal history expansion.
-              -\b-s\bs     Store the _\ba_\br_\bg_\bs in the history list  as  a  single  entry.
-                     The  last  command  in the history list is removed before
+              -\b-s\bs     Store  the  _\ba_\br_\bg_\bs  in  the history list as a single entry.
+                     The last command in the history list  is  removed  before
                      the _\ba_\br_\bg_\bs are added.
 
               If the H\bHI\bIS\bST\bTT\bTI\bIM\bME\bEF\bFO\bOR\bRM\bMA\bAT\bT is set, the time stamp information associ-
-              ated  with  each  history  entry is written to the history file.
-              The return value is 0 unless an invalid option  is  encountered,
-              an  error  occurs  while reading or writing the history file, an
-              invalid _\bo_\bf_\bf_\bs_\be_\bt is supplied as an argument to -\b-d\bd, or the  history
+              ated with each history entry is written  to  the  history  file.
+              The  return  value is 0 unless an invalid option is encountered,
+              an error occurs while reading or writing the  history  file,  an
+              invalid  _\bo_\bf_\bf_\bs_\be_\bt is supplied as an argument to -\b-d\bd, or the history
               expansion supplied as an argument to -\b-p\bp fails.
 
        j\bjo\bob\bbs\bs [-\b-l\bln\bnp\bpr\brs\bs] [ _\bj_\bo_\bb_\bs_\bp_\be_\bc ... ]
@@ -3930,144 +3935,144 @@ S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
               The first form lists the active jobs.  The options have the fol-
               lowing meanings:
               -\b-l\bl     List process IDs in addition to the normal information.
-              -\b-p\bp     List only the process  ID  of  the  job's  process  group
+              -\b-p\bp     List  only  the  process  ID  of  the job's process group
                      leader.
-              -\b-n\bn     Display  information  only  about  jobs that have changed
-                     status since the user was last notified of their  status.
+              -\b-n\bn     Display information only about  jobs  that  have  changed
+                     status  since the user was last notified of their status.
               -\b-r\br     Restrict output to running jobs.
               -\b-s\bs     Restrict output to stopped jobs.
 
-              If  _\bj_\bo_\bb_\bs_\bp_\be_\bc  is given, output is restricted to information about
-              that job.  The return status is 0 unless an  invalid  option  is
+              If _\bj_\bo_\bb_\bs_\bp_\be_\bc is given, output is restricted to  information  about
+              that  job.   The  return status is 0 unless an invalid option is
               encountered or an invalid _\bj_\bo_\bb_\bs_\bp_\be_\bc is supplied.
 
               If the -\b-x\bx option is supplied, j\bjo\bob\bbs\bs replaces any _\bj_\bo_\bb_\bs_\bp_\be_\bc found in
-              _\bc_\bo_\bm_\bm_\ba_\bn_\bor _\ba_\br_\bg_\bs with the corresponding  process  group  ID,  and
+              _\bc_\bo_\bm_\bm_\ba_\bn_\b or  _\ba_\br_\bg_\bs  with  the corresponding process group ID, and
               executes _\bc_\bo_\bm_\bm_\ba_\bn_\bd passing it _\ba_\br_\bg_\bs, returning its exit status.
 
        k\bki\bil\bll\bl [-\b-s\bs _\bs_\bi_\bg_\bs_\bp_\be_\bc | -\b-n\bn _\bs_\bi_\bg_\bn_\bu_\bm | -\b-_\bs_\bi_\bg_\bs_\bp_\be_\bc] [_\bp_\bi_\bd | _\bj_\bo_\bb_\bs_\bp_\be_\bc] ...
        k\bki\bil\bll\bl -\b-l\bl [_\bs_\bi_\bg_\bs_\bp_\be_\bc | _\be_\bx_\bi_\bt_\b__\bs_\bt_\ba_\bt_\bu_\bs]
-              Send  the  signal  named  by  _\bs_\bi_\bg_\bs_\bp_\be_\bc or _\bs_\bi_\bg_\bn_\bu_\bm to the processes
-              named by _\bp_\bi_\bd or _\bj_\bo_\bb_\bs_\bp_\be_\bc.  _\bs_\bi_\bg_\bs_\bp_\be_\bc is either  a  case-insensitive
-              signal  name such as S\bSI\bIG\bGK\bKI\bIL\bLL\bL (with or without the S\bSI\bIG\bG prefix) or
-              a signal number; _\bs_\bi_\bg_\bn_\bu_\bm is a signal number.  If _\bs_\bi_\bg_\bs_\bp_\be_\bc  is  not
-              present,  then  S\bSI\bIG\bGT\bTE\bER\bRM\bM is assumed.  An argument of -\b-l\bl lists the
-              signal names.  If any arguments are supplied when -\b-l\bl  is  given,
-              the  names  of  the  signals  corresponding to the arguments are
+              Send the signal named by _\bs_\bi_\bg_\bs_\bp_\be_\bc  or  _\bs_\bi_\bg_\bn_\bu_\bm  to  the  processes
+              named  by  _\bp_\bi_\bd or _\bj_\bo_\bb_\bs_\bp_\be_\bc.  _\bs_\bi_\bg_\bs_\bp_\be_\bc is either a case-insensitive
+              signal name such as S\bSI\bIG\bGK\bKI\bIL\bLL\bL (with or without the S\bSI\bIG\bG prefix)  or
+              a  signal  number; _\bs_\bi_\bg_\bn_\bu_\bm is a signal number.  If _\bs_\bi_\bg_\bs_\bp_\be_\bc is not
+              present, then S\bSI\bIG\bGT\bTE\bER\bRM\bM is assumed.  An argument of -\b-l\bl  lists  the
+              signal  names.   If any arguments are supplied when -\b-l\bl is given,
+              the names of the signals  corresponding  to  the  arguments  are
               listed, and the return status is 0.  The _\be_\bx_\bi_\bt_\b__\bs_\bt_\ba_\bt_\bu_\bs argument to
-              -\b-l\b is  a  number  specifying either a signal number or the exit
-              status of a process terminated by a signal.  k\bki\bil\bll\bl  returns  true
-              if  at  least  one  signal was successfully sent, or false if an
+              -\b-l\bis a number specifying either a signal  number  or  the  exit
+              status  of  a process terminated by a signal.  k\bki\bil\bll\bl returns true
+              if at least one signal was successfully sent,  or  false  if  an
               error occurs or an invalid option is encountered.
 
        l\ble\bet\bt _\ba_\br_\bg [_\ba_\br_\bg ...]
               Each _\ba_\br_\bg is an arithmetic expression to be evaluated (see A\bAR\bRI\bIT\bTH\bH-\b-
-              M\bME\bET\bTI\bIC\b E\bEV\bVA\bAL\bLU\bUA\bAT\bTI\bIO\bON\bN).  If the last _\ba_\br_\bg evaluates to 0, l\ble\bet\bt returns
+              M\bME\bET\bTI\bIC\bE\bEV\bVA\bAL\bLU\bUA\bAT\bTI\bIO\bON\bN).  If the last _\ba_\br_\bg evaluates to 0, l\ble\bet\b returns
               1; 0 is returned otherwise.
 
        l\blo\boc\bca\bal\bl [_\bo_\bp_\bt_\bi_\bo_\bn] [_\bn_\ba_\bm_\be[=_\bv_\ba_\bl_\bu_\be] ...]
-              For each argument, a local variable named _\bn_\ba_\bm_\be is  created,  and
-              assigned  _\bv_\ba_\bl_\bu_\be.   The _\bo_\bp_\bt_\bi_\bo_\bn can be any of the options accepted
+              For  each  argument, a local variable named _\bn_\ba_\bm_\be is created, and
+              assigned _\bv_\ba_\bl_\bu_\be.  The _\bo_\bp_\bt_\bi_\bo_\bn can be any of the  options  accepted
               by d\bde\bec\bcl\bla\bar\bre\be.  When l\blo\boc\bca\bal\bl is used within a function, it causes the
-              variable  _\bn_\ba_\bm_\be  to have a visible scope restricted to that func-
+              variable _\bn_\ba_\bm_\be to have a visible scope restricted to  that  func-
               tion and its children.  With no operands, l\blo\boc\bca\bal\bl writes a list of
-              local  variables  to the standard output.  It is an error to use
+              local variables to the standard output.  It is an error  to  use
               l\blo\boc\bca\bal\bl when not within a function.  The return status is 0 unless
-              l\blo\boc\bca\bal\b is  used outside a function, an invalid _\bn_\ba_\bm_\be is supplied,
+              l\blo\boc\bca\bal\bis used outside a function, an invalid _\bn_\ba_\bm_\be  is  supplied,
               or _\bn_\ba_\bm_\be is a readonly variable.
 
        l\blo\bog\bgo\bou\but\bt Exit a login shell.
 
        p\bpo\bop\bpd\bd [-n\bn] [+_\bn] [-_\bn]
-              Removes entries from the directory stack.   With  no  arguments,
-              removes  the  top directory from the stack, and performs a c\bcd\bd to
+              Removes  entries  from  the directory stack.  With no arguments,
+              removes the top directory from the stack, and performs a  c\bcd\b to
               the new top directory.  Arguments, if supplied, have the follow-
               ing meanings:
-              +\b+_\bn     Removes  the _\bnth entry counting from the left of the list
-                     shown by d\bdi\bir\brs\bs, starting with zero.  For  example:  ``popd
+              +\b+_\bn     Removes the _\bnth entry counting from the left of the  list
+                     shown  by  d\bdi\bir\brs\bs, starting with zero.  For example: ``popd
                      +0'' removes the first directory, ``popd +1'' the second.
               -\b-_\bn     Removes the _\bnth entry counting from the right of the list
-                     shown  by  d\bdi\bir\brs\bs, starting with zero.  For example: ``popd
-                     -0'' removes the last directory, ``popd -1'' the next  to
+                     shown by d\bdi\bir\brs\bs, starting with zero.  For  example:  ``popd
+                     -0''  removes the last directory, ``popd -1'' the next to
                      last.
-              -\b-n\bn     Suppresses  the  normal change of directory when removing
-                     directories from the stack, so that  only  the  stack  is
+              -\b-n\bn     Suppresses the normal change of directory  when  removing
+                     directories  from  the  stack,  so that only the stack is
                      manipulated.
 
-              If  the p\bpo\bop\bpd\bd command is successful, a d\bdi\bir\brs\bs is performed as well,
-              and the return status is 0.  p\bpo\bop\bpd\bd returns false  if  an  invalid
+              If the p\bpo\bop\bpd\bd command is successful, a d\bdi\bir\brs\bs is performed as  well,
+              and  the  return  status is 0.  p\bpo\bop\bpd\bd returns false if an invalid
               option is encountered, the directory stack is empty, a non-exis-
               tent directory stack entry is specified, or the directory change
               fails.
 
        p\bpr\bri\bin\bnt\btf\bf _\bf_\bo_\br_\bm_\ba_\bt [_\ba_\br_\bg_\bu_\bm_\be_\bn_\bt_\bs]
-              Write  the  formatted _\ba_\br_\bg_\bu_\bm_\be_\bn_\bt_\bs to the standard output under the
-              control of the _\bf_\bo_\br_\bm_\ba_\bt.  The _\bf_\bo_\br_\bm_\ba_\bt is a character  string  which
-              contains  three  types  of  objects: plain characters, which are
-              simply copied to standard output,  character  escape  sequences,
-              which  are converted and copied to the standard output, and for-
-              mat specifications, each of which causes printing  of  the  next
+              Write the formatted _\ba_\br_\bg_\bu_\bm_\be_\bn_\bt_\bs to the standard output  under  the
+              control  of  the _\bf_\bo_\br_\bm_\ba_\bt.  The _\bf_\bo_\br_\bm_\ba_\bt is a character string which
+              contains three types of objects:  plain  characters,  which  are
+              simply  copied  to  standard output, character escape sequences,
+              which are converted and copied to the standard output, and  for-
+              mat  specifications,  each  of which causes printing of the next
               successive _\ba_\br_\bg_\bu_\bm_\be_\bn_\bt.  In addition to the standard _\bp_\br_\bi_\bn_\bt_\bf(1) for-
-              mats, %\b%b\bb causes p\bpr\bri\bin\bnt\btf\bf to expand backslash escape  sequences  in
-              the  corresponding  _\ba_\br_\bg_\bu_\bm_\be_\bn_\bt  (except that \\b\c\bc terminates output,
+              mats,  %\b%b\bb  causes p\bpr\bri\bin\bnt\btf\bf to expand backslash escape sequences in
+              the corresponding _\ba_\br_\bg_\bu_\bm_\be_\bn_\bt (except that  \\b\c\bc  terminates  output,
               backslashes in \\b\'\b', \\b\"\b", and \\b\?\b? are not removed, and octal escapes
-              beginning  with \\b\0\b0 may contain up to four digits), and %\b%q\bq causes
+              beginning with \\b\0\b0 may contain up to four digits), and %\b%q\b causes
               p\bpr\bri\bin\bnt\btf\bf to output the corresponding _\ba_\br_\bg_\bu_\bm_\be_\bn_\bt in a format that can
               be reused as shell input.
 
-              The  _\bf_\bo_\br_\bm_\ba_\bt  is  reused as necessary to consume all of the _\ba_\br_\bg_\bu_\b-
+              The _\bf_\bo_\br_\bm_\ba_\bt is reused as necessary to consume all  of  the  _\ba_\br_\bg_\bu_\b-
               _\bm_\be_\bn_\bt_\bs.  If the _\bf_\bo_\br_\bm_\ba_\bt requires more _\ba_\br_\bg_\bu_\bm_\be_\bn_\bt_\bs than are supplied,
-              the  extra  format  specifications  behave as if a zero value or
-              null string, as appropriate,  had  been  supplied.   The  return
+              the extra format specifications behave as if  a  zero  value  or
+              null  string,  as  appropriate,  had  been supplied.  The return
               value is zero on success, non-zero on failure.
 
        p\bpu\bus\bsh\bhd\bd [-\b-n\bn] [_\bd_\bi_\br]
        p\bpu\bus\bsh\bhd\bd [-\b-n\bn] [+_\bn] [-_\bn]
-              Adds  a  directory to the top of the directory stack, or rotates
-              the stack, making the new top of the stack the  current  working
+              Adds a directory to the top of the directory stack,  or  rotates
+              the  stack,  making the new top of the stack the current working
               directory.  With no arguments, exchanges the top two directories
-              and returns 0, unless the directory stack is empty.   Arguments,
+              and  returns 0, unless the directory stack is empty.  Arguments,
               if supplied, have the following meanings:
-              +\b+_\bn     Rotates  the  stack  so  that the _\bnth directory (counting
-                     from the left of the list shown by  d\bdi\bir\brs\bs,  starting  with
+              +\b+_\bn     Rotates the stack so that  the  _\bnth  directory  (counting
+                     from  the  left  of the list shown by d\bdi\bir\brs\bs, starting with
                      zero) is at the top.
-              -\b-_\bn     Rotates  the  stack  so  that the _\bnth directory (counting
-                     from the right of the list shown by d\bdi\bir\brs\bs,  starting  with
+              -\b-_\bn     Rotates the stack so that  the  _\bnth  directory  (counting
+                     from  the  right of the list shown by d\bdi\bir\brs\bs, starting with
                      zero) is at the top.
-              -\b-n\bn     Suppresses  the  normal  change  of directory when adding
-                     directories to the stack,  so  that  only  the  stack  is
+              -\b-n\bn     Suppresses the normal change  of  directory  when  adding
+                     directories  to  the  stack,  so  that  only the stack is
                      manipulated.
               _\bd_\bi_\br    Adds _\bd_\bi_\br to the directory stack at the top, making it the
                      new current working directory.
 
               If the p\bpu\bus\bsh\bhd\bd command is successful, a d\bdi\bir\brs\bs is performed as well.
-              If  the first form is used, p\bpu\bus\bsh\bhd\bd returns 0 unless the cd to _\bd_\bi_\br
-              fails.  With the second form, p\bpu\bus\bsh\bhd\bd returns 0 unless the  direc-
-              tory  stack  is empty, a non-existent directory stack element is
-              specified, or the directory change to the specified new  current
+              If the first form is used, p\bpu\bus\bsh\bhd\bd returns 0 unless the cd to  _\bd_\bi_\br
+              fails.   With the second form, p\bpu\bus\bsh\bhd\bd returns 0 unless the direc-
+              tory stack is empty, a non-existent directory stack  element  is
+              specified,  or the directory change to the specified new current
               directory fails.
 
        p\bpw\bwd\bd [-\b-L\bLP\bP]
-              Print  the  absolute  pathname of the current working directory.
+              Print the absolute pathname of the  current  working  directory.
               The pathname printed contains no symbolic links if the -\b-P\bP option
               is supplied or the -\b-o\bo p\bph\bhy\bys\bsi\bic\bca\bal\bl option to the s\bse\bet\bt builtin command
-              is enabled.  If the -\b-L\bL option is used, the pathname printed  may
-              contain  symbolic links.  The return status is 0 unless an error
-              occurs while reading the name of the  current  directory  or  an
+              is  enabled.  If the -\b-L\bL option is used, the pathname printed may
+              contain symbolic links.  The return status is 0 unless an  error
+              occurs  while  reading  the  name of the current directory or an
               invalid option is supplied.
 
        r\bre\bea\bad\bd [-\b-e\ber\brs\bs] [-\b-u\bu _\bf_\bd] [-\b-t\bt _\bt_\bi_\bm_\be_\bo_\bu_\bt] [-\b-a\ba _\ba_\bn_\ba_\bm_\be] [-\b-p\bp _\bp_\br_\bo_\bm_\bp_\bt] [-\b-n\bn _\bn_\bc_\bh_\ba_\br_\bs] [-\b-d\bd
        _\bd_\be_\bl_\bi_\bm] [_\bn_\ba_\bm_\be ...]
-              One  line  is  read  from  the  standard input, or from the file
-              descriptor _\bf_\bd supplied as an argument to the -\b-u\bu option, and  the
+              One line is read from the  standard  input,  or  from  the  file
+              descriptor  _\bf_\bd supplied as an argument to the -\b-u\bu option, and the
               first word is assigned to the first _\bn_\ba_\bm_\be, the second word to the
-              second _\bn_\ba_\bm_\be, and so on, with leftover words and their  interven-
-              ing  separators  assigned  to the last _\bn_\ba_\bm_\be.  If there are fewer
+              second  _\bn_\ba_\bm_\be, and so on, with leftover words and their interven-
+              ing separators assigned to the last _\bn_\ba_\bm_\be.  If  there  are  fewer
               words read from the input stream than names, the remaining names
-              are  assigned  empty  values.  The characters in I\bIF\bFS\bS are used to
-              split the line into words.  The backslash character (\\b\)  may  be
-              used  to  remove any special meaning for the next character read
-              and for line continuation.  Options, if supplied, have the  fol-
+              are assigned empty values.  The characters in I\bIF\bFS\bS  are  used  to
+              split  the  line into words.  The backslash character (\\b\) may be
+              used to remove any special meaning for the next  character  read
+              and  for line continuation.  Options, if supplied, have the fol-
               lowing meanings:
               -\b-a\ba _\ba_\bn_\ba_\bm_\be
                      The words are assigned to sequential indices of the array
@@ -4075,98 +4080,98 @@ S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
                      new  values  are  assigned.   Other  _\bn_\ba_\bm_\be  arguments  are
                      ignored.
               -\b-d\bd _\bd_\be_\bl_\bi_\bm
-                     The first character of _\bd_\be_\bl_\bi_\bm is  used  to  terminate  the
+                     The  first  character  of  _\bd_\be_\bl_\bi_\bm is used to terminate the
                      input line, rather than newline.
               -\b-e\be     If the standard input is coming from a terminal, r\bre\bea\bad\bdl\bli\bin\bne\be
                      (see R\bRE\bEA\bAD\bDL\bLI\bIN\bNE\bE above) is used to obtain the line.
               -\b-n\bn _\bn_\bc_\bh_\ba_\br_\bs
-                     r\bre\bea\bad\breturns after reading _\bn_\bc_\bh_\ba_\br_\bs characters rather  than
+                     r\bre\bea\bad\b returns after reading _\bn_\bc_\bh_\ba_\br_\bs characters rather than
                      waiting for a complete line of input.
               -\b-p\bp _\bp_\br_\bo_\bm_\bp_\bt
                      Display _\bp_\br_\bo_\bm_\bp_\bt on standard error, without a trailing new-
                      line, before attempting to read any input.  The prompt is
                      displayed only if input is coming from a terminal.
               -\b-r\br     Backslash does not act as an escape character.  The back-
-                     slash is considered to be part of the line.  In  particu-
-                     lar,  a  backslash-newline pair may not be used as a line
+                     slash  is considered to be part of the line.  In particu-
+                     lar, a backslash-newline pair may not be used as  a  line
                      continuation.
               -\b-s\bs     Silent mode.  If input is coming from a terminal, charac-
                      ters are not echoed.
               -\b-t\bt _\bt_\bi_\bm_\be_\bo_\bu_\bt
-                     Cause  r\bre\bea\bad\bd  to time out and return failure if a complete
-                     line of input is not read within _\bt_\bi_\bm_\be_\bo_\bu_\bt  seconds.   This
-                     option  has  no  effect if r\bre\bea\bad\bd is not reading input from
+                     Cause r\bre\bea\bad\bd to time out and return failure if  a  complete
+                     line  of  input is not read within _\bt_\bi_\bm_\be_\bo_\bu_\bt seconds.  This
+                     option has no effect if r\bre\bea\bad\bd is not  reading  input  from
                      the terminal or a pipe.
               -\b-u\bu _\bf_\bd  Read input from file descriptor _\bf_\bd.
 
               If no _\bn_\ba_\bm_\be_\bs are supplied, the line read is assigned to the vari-
-              able  R\bRE\bEP\bPL\bLY\bY.   The  return  code  is zero, unless end-of-file is
-              encountered, r\bre\bea\bad\bd times out, or an invalid  file  descriptor  is
+              able R\bRE\bEP\bPL\bLY\bY.  The return code  is  zero,  unless  end-of-file  is
+              encountered,  r\bre\bea\bad\bd  times  out, or an invalid file descriptor is
               supplied as the argument to -\b-u\bu.
 
        r\bre\bea\bad\bdo\bon\bnl\bly\by [-\b-a\bap\bpf\bf] [_\bn_\ba_\bm_\be[=_\bw_\bo_\br_\bd] ...]
-              The  given  _\bn_\ba_\bm_\be_\bs are marked readonly; the values of these _\bn_\ba_\bm_\be_\bs
-              may not be changed by subsequent assignment.  If the  -\b-f\b option
-              is  supplied,  the  functions  corresponding to the _\bn_\ba_\bm_\be_\bs are so
+              The given _\bn_\ba_\bm_\be_\bs are marked readonly; the values of  these  _\bn_\ba_\bm_\be_\bs
+              may  not  be changed by subsequent assignment.  If the -\b-f\bf option
+              is supplied, the functions corresponding to  the  _\bn_\ba_\bm_\be_\bs  are  so
               marked.  The -\b-a\ba option restricts the variables to arrays.  If no
-              _\bn_\ba_\bm_\b arguments  are  given,  or if the -\b-p\bp option is supplied, a
-              list of all readonly names is printed.   The  -\b-p\bp  option  causes
-              output  to be displayed in a format that may be reused as input.
-              If a variable name is followed by =_\bw_\bo_\br_\bd, the value of the  vari-
-              able  is  set to _\bw_\bo_\br_\bd.  The return status is 0 unless an invalid
-              option is encountered, one of the _\bn_\ba_\bm_\be_\bs is  not  a  valid  shell
-              variable name, or -\b-f\bf is supplied with a _\bn_\ba_\bm_\be that is not a func-
-              tion.
+              _\bn_\ba_\bm_\barguments are given, or if the -\b-p\bp  option  is  supplied,  a
+              list  of  all  readonly  names is printed.  The -\b-p\bp option causes
+              output to be displayed in a format that may be reused as  input.
+              If  a variable name is followed by =_\bw_\bo_\br_\bd, the value of the vari-
+              able is set to _\bw_\bo_\br_\bd.  The return status is 0 unless  an  invalid
+              option  is  encountered,  one  of the _\bn_\ba_\bm_\be_\bs is not a valid shell
+              variable name, or -\b-f\bf is supplied with  a  _\bn_\ba_\bm_\be  that  is  not  a
+              function.
 
        r\bre\bet\btu\bur\brn\bn [_\bn]
-              Causes a function to exit with the return value specified by  _\bn.
-              If  _\bn  is omitted, the return status is that of the last command
-              executed in the function body.  If used outside a function,  but
-              during  execution  of  a  script  by the .\b.  (s\bso\bou\bur\brc\bce\be) command, it
+              Causes  a function to exit with the return value specified by _\bn.
+              If _\bn is omitted, the return status is that of the  last  command
+              executed  in the function body.  If used outside a function, but
+              during execution of a script by  the  .\b.   (s\bso\bou\bur\brc\bce\be)  command,  it
               causes the shell to stop executing that script and return either
-              _\b or  the  exit  status of the last command executed within the
-              script as the exit status of the  script.   If  used  outside  a
-              function  and  not during execution of a script by .\b., the return
+              _\bor the exit status of the last  command  executed  within  the
+              script  as  the  exit  status  of the script.  If used outside a
+              function and not during execution of a script by .\b.,  the  return
               status is false.  Any command associated with the R\bRE\bET\bTU\bUR\bRN\bN trap is
-              executed  before execution resumes after the function or script.
+              executed before execution resumes after the function or  script.
 
        s\bse\bet\bt [-\b--\b-a\bab\bbe\bef\bfh\bhk\bkm\bmn\bnp\bpt\btu\buv\bvx\bxB\bBC\bCH\bHP\bP] [-\b-o\bo _\bo_\bp_\bt_\bi_\bo_\bn] [_\ba_\br_\bg ...]
-              Without options, the name and value of each shell  variable  are
-              displayed  in  a format that can be reused as input.  The output
-              is sorted according to the current  locale.   When  options  are
-              specified,  they  set  or unset shell attributes.  Any arguments
-              remaining after the options are processed are treated as  values
+              Without  options,  the name and value of each shell variable are
+              displayed in a format that can be reused as input.   The  output
+              is  sorted  according  to  the current locale.  When options are
+              specified, they set or unset shell  attributes.   Any  arguments
+              remaining  after the options are processed are treated as values
               for the positional parameters and are assigned, in order, to $\b$1\b1,
-              $\b$2\b2, .\b..\b..\b.  $\b$_\bn.  Options, if specified, have  the  following  mean-
+              $\b$2\b2,  .\b..\b..\b.   $\b$_\bn.   Options, if specified, have the following mean-
               ings:
-              -\b-a\ba      Automatically  mark  variables  and  functions which are
-                      modified or created for export  to  the  environment  of
+              -\b-a\ba      Automatically mark variables  and  functions  which  are
+                      modified  or  created  for  export to the environment of
                       subsequent commands.
-              -\b-b\bb      Report  the status of terminated background jobs immedi-
+              -\b-b\bb      Report the status of terminated background jobs  immedi-
                       ately, rather than before the next primary prompt.  This
                       is effective only when job control is enabled.
-              -\b-e\be      Exit  immediately if a _\bs_\bi_\bm_\bp_\bl_\be _\bc_\bo_\bm_\bm_\ba_\bn_\bd (see S\bSH\bHE\bEL\bLL\bL G\bGR\bRA\bAM\bMM\bMA\bAR\bR
+              -\b-e\be      Exit immediately if a _\bs_\bi_\bm_\bp_\bl_\be _\bc_\bo_\bm_\bm_\ba_\bn_\bd (see S\bSH\bHE\bEL\bLL\b G\bGR\bRA\bAM\bMM\bMA\bAR\bR
                       above) exits with a non-zero status.  The shell does not
-                      exit  if  the  command that fails is part of the command
-                      list immediately following a  w\bwh\bhi\bil\ble\be  or  u\bun\bnt\bti\bil\b keyword,
-                      part  of the test in an _\bi_\bf statement, part of a &\b&&\b& or |\b||\b|
+                      exit if the command that fails is part  of  the  command
+                      list  immediately  following  a  w\bwh\bhi\bil\ble\be or u\bun\bnt\bti\bil\bl keyword,
+                      part of the test in an _\bi_\bf statement, part of a &\b&&\b& or  |\b||\b|
                       list, or if the command's return value is being inverted
-                      via  !\b!.   A  trap on E\bER\bRR\bR, if set, is executed before the
+                      via !\b!.  A trap on E\bER\bRR\bR, if set, is  executed  before  the
                       shell exits.
               -\b-f\bf      Disable pathname expansion.
-              -\b-h\bh      Remember the location of commands as they are looked  up
+              -\b-h\bh      Remember  the location of commands as they are looked up
                       for execution.  This is enabled by default.
-              -\b-k\bk      All  arguments  in the form of assignment statements are
-                      placed in the environment for a command, not just  those
+              -\b-k\bk      All arguments in the form of assignment  statements  are
+                      placed  in the environment for a command, not just those
                       that precede the command name.
-              -\b-m\bm      Monitor  mode.   Job control is enabled.  This option is
-                      on by default for interactive  shells  on  systems  that
-                      support  it  (see  J\bJO\bOB\bB  C\bCO\bON\bNT\bTR\bRO\bOL\bL above).  Background pro-
-                      cesses run in a separate process group and a  line  con-
-                      taining  their exit status is printed upon their comple-
+              -\b-m\bm      Monitor mode.  Job control is enabled.  This  option  is
+                      on  by  default  for  interactive shells on systems that
+                      support it (see J\bJO\bOB\bB  C\bCO\bON\bNT\bTR\bRO\bOL\bL  above).   Background  pro-
+                      cesses  run  in a separate process group and a line con-
+                      taining their exit status is printed upon their  comple-
                       tion.
               -\b-n\bn      Read commands but do not execute them.  This may be used
-                      to  check  a  shell  script  for syntax errors.  This is
+                      to check a shell script  for  syntax  errors.   This  is
                       ignored by interactive shells.
               -\b-o\bo _\bo_\bp_\bt_\bi_\bo_\bn_\b-_\bn_\ba_\bm_\be
                       The _\bo_\bp_\bt_\bi_\bo_\bn_\b-_\bn_\ba_\bm_\be can be one of the following:
@@ -4174,7 +4179,7 @@ S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
                               Same as -\b-a\ba.
                       b\bbr\bra\bac\bce\bee\bex\bxp\bpa\ban\bnd\bd
                               Same as -\b-B\bB.
-                      e\bem\bma\bac\bcs\bs   Use an emacs-style command line  editing  inter-
+                      e\bem\bma\bac\bcs\bs   Use  an  emacs-style command line editing inter-
                               face.  This is enabled by default when the shell
                               is interactive, unless the shell is started with
                               the -\b--\b-n\bno\boe\bed\bdi\bit\bti\bin\bng\bg option.
@@ -4190,8 +4195,8 @@ S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
                               H\bHI\bIS\bST\bTO\bOR\bRY\bY.  This option is on by default in inter-
                               active shells.
                       i\big\bgn\bno\bor\bre\bee\beo\bof\bf
-                              The   effect   is   as   if  the  shell  command
-                              ``IGNOREEOF=10'' had been  executed  (see  S\bSh\bhe\bel\bll\bl
+                              The  effect  is  as   if   the   shell   command
+                              ``IGNOREEOF=10''  had  been  executed (see S\bSh\bhe\bel\bll\bl
                               V\bVa\bar\bri\bia\bab\bbl\ble\bes\bs above).
                       k\bke\bey\byw\bwo\bor\brd\bd Same as -\b-k\bk.
                       m\bmo\bon\bni\bit\bto\bor\br Same as -\b-m\bm.
@@ -4205,12 +4210,12 @@ S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
                       p\bph\bhy\bys\bsi\bic\bca\bal\bl
                               Same as -\b-P\bP.
                       p\bpi\bip\bpe\bef\bfa\bai\bil\bl
-                              If  set,  the  return value of a pipeline is the
-                              value of the last (rightmost)  command  to  exit
-                              with  a non-zero status, or zero if all commands
-                              in the pipeline exit successfully.  This  option
+                              If set, the return value of a  pipeline  is  the
+                              value  of  the  last (rightmost) command to exit
+                              with a non-zero status, or zero if all  commands
+                              in  the pipeline exit successfully.  This option
                               is disabled by default.
-                      p\bpo\bos\bsi\bix\bx   Change  the  behavior  of b\bba\bas\bsh\bh where the default
+                      p\bpo\bos\bsi\bix\bx   Change the behavior of b\bba\bas\bsh\bh  where  the  default
                               operation differs from the POSIX 1003.2 standard
                               to match the standard (_\b`_\bp_\bo_\bs_\bi_\bx _\bm_\bo_\bd_\be).
                       p\bpr\bri\biv\bvi\bil\ble\beg\bge\bed\bd
@@ -4219,224 +4224,224 @@ S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
                       v\bvi\bi      Use a vi-style command line editing interface.
                       x\bxt\btr\bra\bac\bce\be  Same as -\b-x\bx.
                       If -\b-o\bo is supplied with no _\bo_\bp_\bt_\bi_\bo_\bn_\b-_\bn_\ba_\bm_\be, the values of the
-                      current options are printed.  If +\b+o\bo is supplied with  no
-                      _\bo_\bp_\bt_\bi_\bo_\bn_\b-_\bn_\ba_\bm_\be,  a  series  of s\bse\bet\bt commands to recreate the
-                      current option settings is  displayed  on  the  standard
+                      current  options are printed.  If +\b+o\bo is supplied with no
+                      _\bo_\bp_\bt_\bi_\bo_\bn_\b-_\bn_\ba_\bm_\be, a series of s\bse\bet\bt commands  to  recreate  the
+                      current  option  settings  is  displayed on the standard
                       output.
-              -\b-p\bp      Turn  on  _\bp_\br_\bi_\bv_\bi_\bl_\be_\bg_\be_\bd  mode.   In this mode, the $\b$E\bEN\bNV\bV and
-                      $\b$B\bBA\bAS\bSH\bH_\b_E\bEN\bNV\bfiles are not processed, shell  functions  are
-                      not  inherited  from  the environment, and the S\bSH\bHE\bEL\bLL\bLO\bOP\bPT\bTS\bS
-                      variable, if it appears in the environment, is  ignored.
-                      If  the shell is started with the effective user (group)
-                      id not equal to the real user (group)  id,  and  the  -\b-p\bp
-                      option  is not supplied, these actions are taken and the
+              -\b-p\bp      Turn on _\bp_\br_\bi_\bv_\bi_\bl_\be_\bg_\be_\bd mode.  In this  mode,  the  $\b$E\bEN\bNV\b and
+                      $\b$B\bBA\bAS\bSH\bH_\b_E\bEN\bNV\b files  are not processed, shell functions are
+                      not inherited from the environment,  and  the  S\bSH\bHE\bEL\bLL\bLO\bOP\bPT\bTS\bS
+                      variable,  if it appears in the environment, is ignored.
+                      If the shell is started with the effective user  (group)
+                      id  not  equal  to  the real user (group) id, and the -\b-p\bp
+                      option is not supplied, these actions are taken and  the
                       effective user id is set to the real user id.  If the -\b-p\bp
-                      option  is supplied at startup, the effective user id is
+                      option is supplied at startup, the effective user id  is
                       not reset.  Turning this option off causes the effective
-                      user  and group ids to be set to the real user and group
+                      user and group ids to be set to the real user and  group
                       ids.
               -\b-t\bt      Exit after reading and executing one command.
               -\b-u\bu      Treat unset variables as an error when performing param-
-                      eter  expansion.   If expansion is attempted on an unset
+                      eter expansion.  If expansion is attempted on  an  unset
                       variable, the shell prints an error message, and, if not
                       interactive, exits with a non-zero status.
               -\b-v\bv      Print shell input lines as they are read.
-              -\b-x\bx      After  expanding  each _\bs_\bi_\bm_\bp_\bl_\be _\bc_\bo_\bm_\bm_\ba_\bn_\bd, f\bfo\bor\br command, c\bca\bas\bse\be
+              -\b-x\bx      After expanding each _\bs_\bi_\bm_\bp_\bl_\be _\bc_\bo_\bm_\bm_\ba_\bn_\bd, f\bfo\bor\br  command,  c\bca\bas\bse\be
                       command, s\bse\bel\ble\bec\bct\bt command, or arithmetic f\bfo\bor\br command, dis-
-                      play  the expanded value of P\bPS\bS4\b4, followed by the command
+                      play the expanded value of P\bPS\bS4\b4, followed by the  command
                       and its expanded arguments or associated word list.
-              -\b-B\bB      The shell performs brace expansion (see B\bBr\bra\bac\bce\b E\bEx\bxp\bpa\ban\bns\bsi\bio\bon\bn
+              -\b-B\bB      The  shell performs brace expansion (see B\bBr\bra\bac\bce\be E\bEx\bxp\bpa\ban\bns\bsi\bio\bon\bn
                       above).  This is on by default.
-              -\b-C\bC      If  set,  b\bba\bas\bsh\bh  does not overwrite an existing file with
-                      the >\b>, >\b>&\b&, and <\b<>\b> redirection operators.   This  may  be
+              -\b-C\bC      If set, b\bba\bas\bsh\bh does not overwrite an  existing  file  with
+                      the  >\b>,  >\b>&\b&,  and <\b<>\b> redirection operators.  This may be
                       overridden when creating output files by using the redi-
                       rection operator >\b>|\b| instead of >\b>.
               -\b-E\bE      If set, any trap on E\bER\bRR\bR is inherited by shell functions,
-                      command  substitutions,  and commands executed in a sub-
-                      shell environment.  The E\bER\bRR\bR trap is normally not  inher-
+                      command substitutions, and commands executed in  a  sub-
+                      shell  environment.  The E\bER\bRR\bR trap is normally not inher-
                       ited in such cases.
               -\b-H\bH      Enable !\b!  style history substitution.  This option is on
                       by default when the shell is interactive.
-              -\b-P\bP      If set, the shell does not follow  symbolic  links  when
-                      executing  commands  such  as c\bcd\bd that change the current
+              -\b-P\bP      If  set,  the  shell does not follow symbolic links when
+                      executing commands such as c\bcd\bd that  change  the  current
                       working  directory.   It  uses  the  physical  directory
                       structure instead.  By default, b\bba\bas\bsh\bh follows the logical
-                      chain of  directories  when  performing  commands  which
+                      chain  of  directories  when  performing  commands which
                       change the current directory.
-              -\b-T\bT      If  set,  any  trap on D\bDE\bEB\bBU\bUG\bG is inherited by shell func-
+              -\b-T\bT      If set, any trap on D\bDE\bEB\bBU\bUG\bG is inherited  by  shell  func-
                       tions, command substitutions, and commands executed in a
-                      subshell  environment.   The  D\bDE\bEB\bBU\bUG\bG trap is normally not
+                      subshell environment.  The D\bDE\bEB\bBU\bUG\bG trap  is  normally  not
                       inherited in such cases.
-              -\b--\b-      If no arguments follow this option, then the  positional
+              -\b--\b-      If  no arguments follow this option, then the positional
                       parameters are unset.  Otherwise, the positional parame-
-                      ters are set to the _\ba_\br_\bgs, even if  some  of  them  begin
+                      ters  are  set  to  the _\ba_\br_\bgs, even if some of them begin
                       with a -\b-.
-              -\b-       Signal  the  end of options, cause all remaining _\ba_\br_\bgs to
+              -\b-       Signal the end of options, cause all remaining  _\ba_\br_\bgs  to
                       be assigned to the positional parameters.  The -\b-x\bx and -\b-v\bv
                       options are turned off.  If there are no _\ba_\br_\bgs, the posi-
                       tional parameters remain unchanged.
 
-              The options are off by default unless otherwise noted.  Using  +
-              rather  than  -  causes  these  options  to  be turned off.  The
-              options can also be specified as arguments to an  invocation  of
-              the  shell.  The current set of options may be found in $\b$-\b-.  The
+              The  options are off by default unless otherwise noted.  Using +
+              rather than - causes  these  options  to  be  turned  off.   The
+              options  can  also be specified as arguments to an invocation of
+              the shell.  The current set of options may be found in $\b$-\b-.   The
               return status is always true unless an invalid option is encoun-
               tered.
 
        s\bsh\bhi\bif\bft\bt [_\bn]
-              The  positional  parameters  from _\bn+1 ... are renamed to $\b$1\b1 .\b..\b..\b..\b.
-              Parameters represented by the numbers  $\b$#\b#  down  to  $\b$#\b#-_\bn+1  are
-              unset.   _\bn  must  be a non-negative number less than or equal to
-              $\b$#\b#.  If _\bn is 0, no parameters are changed.  If _\bn is  not  given,
-              it  is assumed to be 1.  If _\bn is greater than $\b$#\b#, the positional
-              parameters are not changed.  The return status is  greater  than
+              The positional parameters from _\bn+1 ... are renamed  to  $\b$1\b .\b..\b..\b..\b.
+              Parameters  represented  by  the  numbers  $\b$#\b# down to $\b$#\b#-_\bn+1 are
+              unset.  _\bn must be a non-negative number less than  or  equal  to
+              $\b$#\b#.   If  _\bn is 0, no parameters are changed.  If _\bn is not given,
+              it is assumed to be 1.  If _\bn is greater than $\b$#\b#, the  positional
+              parameters  are  not changed.  The return status is greater than
               zero if _\bn is greater than $\b$#\b# or less than zero; otherwise 0.
 
        s\bsh\bho\bop\bpt\bt [-\b-p\bpq\bqs\bsu\bu] [-\b-o\bo] [_\bo_\bp_\bt_\bn_\ba_\bm_\be ...]
               Toggle the values of variables controlling optional shell behav-
               ior.  With no options, or with the -\b-p\bp option, a list of all set-
               table options is displayed, with an indication of whether or not
-              each is set.  The -\b-p\bp option causes output to be displayed  in  a
-              form  that  may be reused as input.  Other options have the fol-
-              lowing meanings:
+              each  is  set.  The -\b-p\bp option causes output to be displayed in a
+              form that may be  reused  as  input.   Other  options  have  the
+              following meanings:
               -\b-s\bs     Enable (set) each _\bo_\bp_\bt_\bn_\ba_\bm_\be.
               -\b-u\bu     Disable (unset) each _\bo_\bp_\bt_\bn_\ba_\bm_\be.
-              -\b-q\bq     Suppresses normal output (quiet mode); the return  status
+              -\b-q\bq     Suppresses  normal output (quiet mode); the return status
                      indicates whether the _\bo_\bp_\bt_\bn_\ba_\bm_\be is set or unset.  If multi-
-                     ple _\bo_\bp_\bt_\bn_\ba_\bm_\be arguments are given with -\b-q\bq, the return  sta-
-                     tus  is zero if all _\bo_\bp_\bt_\bn_\ba_\bm_\be_\bs are enabled; non-zero other-
+                     ple  _\bo_\bp_\bt_\bn_\ba_\bm_\be arguments are given with -\b-q\bq, the return sta-
+                     tus is zero if all _\bo_\bp_\bt_\bn_\ba_\bm_\be_\bs are enabled; non-zero  other-
                      wise.
-              -\b-o\bo     Restricts the values of _\bo_\bp_\bt_\bn_\ba_\bm_\be to be those  defined  for
+              -\b-o\bo     Restricts  the  values of _\bo_\bp_\bt_\bn_\ba_\bm_\be to be those defined for
                      the -\b-o\bo option to the s\bse\bet\bt builtin.
 
-              If  either  -\b-s\bs or -\b-u\bu is used with no _\bo_\bp_\bt_\bn_\ba_\bm_\be arguments, the dis-
+              If either -\b-s\bs or -\b-u\bu is used with no _\bo_\bp_\bt_\bn_\ba_\bm_\be arguments,  the  dis-
               play is limited to those options which are set or unset, respec-
-              tively.   Unless otherwise noted, the s\bsh\bho\bop\bpt\bt options are disabled
+              tively.  Unless otherwise noted, the s\bsh\bho\bop\bpt\bt options are  disabled
               (unset) by default.
 
-              The return status when listing options is zero if  all  _\bo_\bp_\bt_\bn_\ba_\bm_\be_\bs
-              are  enabled,  non-zero  otherwise.   When  setting or unsetting
-              options, the return status is zero unless an _\bo_\bp_\bt_\bn_\ba_\bm_\be  is  not  a
+              The  return  status when listing options is zero if all _\bo_\bp_\bt_\bn_\ba_\bm_\be_\bs
+              are enabled, non-zero  otherwise.   When  setting  or  unsetting
+              options,  the  return  status is zero unless an _\bo_\bp_\bt_\bn_\ba_\bm_\be is not a
               valid shell option.
 
               The list of s\bsh\bho\bop\bpt\bt options is:
 
               c\bcd\bda\bab\bbl\ble\be_\b_v\bva\bar\brs\bs
-                      If  set,  an  argument to the c\bcd\bd builtin command that is
-                      not a directory is assumed to be the name of a  variable
+                      If set, an argument to the c\bcd\bd builtin  command  that  is
+                      not  a directory is assumed to be the name of a variable
                       whose value is the directory to change to.
               c\bcd\bds\bsp\bpe\bel\bll\bl If set, minor errors in the spelling of a directory com-
-                      ponent in a c\bcd\bd command will be  corrected.   The  errors
+                      ponent  in  a  c\bcd\bd command will be corrected.  The errors
                       checked for are transposed characters, a missing charac-
-                      ter, and one character too many.   If  a  correction  is
-                      found,  the corrected file name is printed, and the com-
-                      mand proceeds.  This option is only used by  interactive
+                      ter,  and  one  character  too many.  If a correction is
+                      found, the corrected file name is printed, and the  com-
+                      mand  proceeds.  This option is only used by interactive
                       shells.
               c\bch\bhe\bec\bck\bkh\bha\bas\bsh\bh
                       If set, b\bba\bas\bsh\bh checks that a command found in the hash ta-
-                      ble exists before trying to execute  it.   If  a  hashed
-                      command  no  longer exists, a normal path search is per-
+                      ble  exists  before  trying  to execute it.  If a hashed
+                      command no longer exists, a normal path search  is  per-
                       formed.
               c\bch\bhe\bec\bck\bkw\bwi\bin\bns\bsi\biz\bze\be
-                      If set, b\bba\bas\bsh\bh checks the window size after  each  command
-                      and,  if  necessary,  updates  the  values  of L\bLI\bIN\bNE\bES\bS and
+                      If  set,  b\bba\bas\bsh\bh checks the window size after each command
+                      and, if necessary,  updates  the  values  of  L\bLI\bIN\bNE\bES\b and
                       C\bCO\bOL\bLU\bUM\bMN\bNS\bS.
-              c\bcm\bmd\bdh\bhi\bis\bst\bt If set, b\bba\bas\bsh\bh attempts to save all lines of  a  multiple-
-                      line  command  in  the  same history entry.  This allows
+              c\bcm\bmd\bdh\bhi\bis\bst\bt If  set,  b\bba\bas\bsh\bh attempts to save all lines of a multiple-
+                      line command in the same  history  entry.   This  allows
                       easy re-editing of multi-line commands.
-              d\bdo\bot\btg\bgl\blo\bob\bb If set, b\bba\bas\bsh\bh includes filenames beginning with a `.'  in
+              d\bdo\bot\btg\bgl\blo\bob\bb If  set, b\bba\bas\bsh\bh includes filenames beginning with a `.' in
                       the results of pathname expansion.
               e\bex\bxe\bec\bcf\bfa\bai\bil\bl
                       If set, a non-interactive shell will not exit if it can-
-                      not execute the file specified as  an  argument  to  the
-                      e\bex\bxe\bec\b builtin  command.   An  interactive shell does not
+                      not  execute  the  file  specified as an argument to the
+                      e\bex\bxe\bec\bbuiltin command.  An  interactive  shell  does  not
                       exit if e\bex\bxe\bec\bc fails.
               e\bex\bxp\bpa\ban\bnd\bd_\b_a\bal\bli\bia\bas\bse\bes\bs
-                      If set, aliases are expanded as  described  above  under
+                      If  set,  aliases  are expanded as described above under
                       A\bAL\bLI\bIA\bAS\bSE\bES\bS.  This option is enabled by default for interac-
                       tive shells.
               e\bex\bxt\btd\bde\beb\bbu\bug\bg
-                      If set,  behavior  intended  for  use  by  debuggers  is
+                      If  set,  behavior  intended  for  use  by  debuggers is
                       enabled:
                       1\b1.\b.     The -\b-F\bF option to the d\bde\bec\bcl\bla\bar\bre\be builtin displays the
                              source file name and line number corresponding to
                              each function name supplied as an argument.
-                      2\b2.\b.     If  the  command  run by the D\bDE\bEB\bBU\bUG\bG trap returns a
-                             non-zero value, the next command is  skipped  and
+                      2\b2.\b.     If the command run by the D\bDE\bEB\bBU\bUG\bG  trap  returns  a
+                             non-zero  value,  the next command is skipped and
                              not executed.
-                      3\b3.\b.     If  the  command  run by the D\bDE\bEB\bBU\bUG\bG trap returns a
-                             value of 2, and the shell is executing in a  sub-
-                             routine  (a shell function or a shell script exe-
-                             cuted by the .\b. or s\bso\bou\bur\brc\bce\be  builtins),  a  call  to
+                      3\b3.\b.     If the command run by the D\bDE\bEB\bBU\bUG\bG  trap  returns  a
+                             value  of 2, and the shell is executing in a sub-
+                             routine (a shell function or a shell script  exe-
+                             cuted  by  the  .\b.  or s\bso\bou\bur\brc\bce\be builtins), a call to
                              r\bre\bet\btu\bur\brn\bn is simulated.
               e\bex\bxt\btg\bgl\blo\bob\bb If set, the extended pattern matching features described
                       above under P\bPa\bat\bth\bhn\bna\bam\bme\be E\bEx\bxp\bpa\ban\bns\bsi\bio\bon\bn are enabled.
               e\bex\bxt\btq\bqu\buo\bot\bte\be
-                      If set, $\b$'_\bs_\bt_\br_\bi_\bn_\bg' and  $\b$"_\bs_\bt_\br_\bi_\bn_\bg"  quoting  is  performed
-                      within   $\b${\b{_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br}\b}   expansions  enclosed  in  double
+                      If  set,  $\b$'_\bs_\bt_\br_\bi_\bn_\bg'  and  $\b$"_\bs_\bt_\br_\bi_\bn_\bg" quoting is performed
+                      within  $\b${\b{_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br}\b}  expansions  enclosed   in   double
                       quotes.  This option is enabled by default.
               f\bfa\bai\bil\blg\bgl\blo\bob\bb
-                      If set, patterns which fail to  match  filenames  during
+                      If  set,  patterns  which fail to match filenames during
                       pathname expansion result in an expansion error.
               f\bfo\bor\brc\bce\be_\b_f\bfi\big\bgn\bno\bor\bre\be
-                      If  set,  the  suffixes  specified  by the F\bFI\bIG\bGN\bNO\bOR\bRE\bE shell
-                      variable cause words to be ignored when performing  word
+                      If set, the suffixes  specified  by  the  F\bFI\bIG\bGN\bNO\bOR\bRE\b shell
+                      variable  cause words to be ignored when performing word
                       completion even if the ignored words are the only possi-
                       ble  completions.   See  S\bSH\bHE\bEL\bLL\bL  V\bVA\bAR\bRI\bIA\bAB\bBL\bLE\bES\bS  above  for  a
-                      description  of  F\bFI\bIG\bGN\bNO\bOR\bRE\bE.   This  option  is  enabled by
+                      description of  F\bFI\bIG\bGN\bNO\bOR\bRE\bE.   This  option  is  enabled  by
                       default.
               g\bgn\bnu\bu_\b_e\ber\brr\brf\bfm\bmt\bt
                       If set, shell error messages are written in the standard
                       GNU error message format.
               h\bhi\bis\bst\bta\bap\bpp\bpe\ben\bnd\bd
-                      If  set,  the history list is appended to the file named
-                      by the value of the H\bHI\bIS\bST\bTF\bFI\bIL\bLE\bE  variable  when  the  shell
+                      If set, the history list is appended to the  file  named
+                      by  the  value  of  the H\bHI\bIS\bST\bTF\bFI\bIL\bLE\bE variable when the shell
                       exits, rather than overwriting the file.
               h\bhi\bis\bst\btr\bre\bee\bed\bdi\bit\bt
-                      If  set, and r\bre\bea\bad\bdl\bli\bin\bne\be is being used, a user is given the
+                      If set, and r\bre\bea\bad\bdl\bli\bin\bne\be is being used, a user is given  the
                       opportunity to re-edit a failed history substitution.
               h\bhi\bis\bst\btv\bve\ber\bri\bif\bfy\by
-                      If set, and r\bre\bea\bad\bdl\bli\bin\bne\be is being used, the results of  his-
-                      tory  substitution  are  not  immediately  passed to the
-                      shell parser.  Instead, the  resulting  line  is  loaded
+                      If  set, and r\bre\bea\bad\bdl\bli\bin\bne\be is being used, the results of his-
+                      tory substitution are  not  immediately  passed  to  the
+                      shell  parser.   Instead,  the  resulting line is loaded
                       into the r\bre\bea\bad\bdl\bli\bin\bne\be editing buffer, allowing further modi-
                       fication.
               h\bho\bos\bst\btc\bco\bom\bmp\bpl\ble\bet\bte\be
                       If set, and r\bre\bea\bad\bdl\bli\bin\bne\be is being used, b\bba\bas\bsh\bh will attempt to
-                      perform  hostname  completion when a word containing a @\b@
-                      is  being  completed  (see  C\bCo\bom\bmp\bpl\ble\bet\bti\bin\bng\bg  under   R\bRE\bEA\bAD\bDL\bLI\bIN\bNE\bE
+                      perform hostname completion when a word containing  a  @\b@
+                      is   being  completed  (see  C\bCo\bom\bmp\bpl\ble\bet\bti\bin\bng\bg  under  R\bRE\bEA\bAD\bDL\bLI\bIN\bNE\bE
                       above).  This is enabled by default.
               h\bhu\bup\bpo\bon\bne\bex\bxi\bit\bt
                       If set, b\bba\bas\bsh\bh will send S\bSI\bIG\bGH\bHU\bUP\bP to all jobs when an inter-
                       active login shell exits.
               i\bin\bnt\bte\ber\bra\bac\bct\bti\biv\bve\be_\b_c\bco\bom\bmm\bme\ben\bnt\bts\bs
                       If set, allow a word beginning with #\b# to cause that word
-                      and  all remaining characters on that line to be ignored
-                      in an interactive  shell  (see  C\bCO\bOM\bMM\bME\bEN\bNT\bTS\bS  above).   This
+                      and all remaining characters on that line to be  ignored
+                      in  an  interactive  shell  (see  C\bCO\bOM\bMM\bME\bEN\bNT\bTS\bS above).  This
                       option is enabled by default.
-              l\bli\bit\bth\bhi\bis\bst\bt If  set,  and  the c\bcm\bmd\bdh\bhi\bis\bst\bt option is enabled, multi-line
+              l\bli\bit\bth\bhi\bis\bst\bt If set, and the c\bcm\bmd\bdh\bhi\bis\bst\bt option  is  enabled,  multi-line
                       commands are saved to the history with embedded newlines
                       rather than using semicolon separators where possible.
               l\blo\bog\bgi\bin\bn_\b_s\bsh\bhe\bel\bll\bl
-                      The  shell  sets this option if it is started as a login
-                      shell (see I\bIN\bNV\bVO\bOC\bCA\bAT\bTI\bIO\bON\bN above).   The  value  may  not  be
+                      The shell sets this option if it is started as  a  login
+                      shell  (see  I\bIN\bNV\bVO\bOC\bCA\bAT\bTI\bIO\bON\bN  above).   The  value may not be
                       changed.
               m\bma\bai\bil\blw\bwa\bar\brn\bn
-                      If  set,  and  a file that b\bba\bas\bsh\bh is checking for mail has
-                      been accessed since the last time it  was  checked,  the
-                      message  ``The  mail in _\bm_\ba_\bi_\bl_\bf_\bi_\bl_\be has been read'' is dis-
+                      If set, and a file that b\bba\bas\bsh\bh is checking  for  mail  has
+                      been  accessed  since  the last time it was checked, the
+                      message ``The mail in _\bm_\ba_\bi_\bl_\bf_\bi_\bl_\be has been read''  is  dis-
                       played.
               n\bno\bo_\b_e\bem\bmp\bpt\bty\by_\b_c\bcm\bmd\bd_\b_c\bco\bom\bmp\bpl\ble\bet\bti\bio\bon\bn
-                      If set, and  r\bre\bea\bad\bdl\bli\bin\bne\be  is  being  used,  b\bba\bas\bsh\bh  will  not
+                      If  set,  and  r\bre\bea\bad\bdl\bli\bin\bne\be  is  being  used,  b\bba\bas\bsh\bh will not
                       attempt to search the P\bPA\bAT\bTH\bH for possible completions when
                       completion is attempted on an empty line.
               n\bno\boc\bca\bas\bse\beg\bgl\blo\bob\bb
-                      If set, b\bba\bas\bsh\bh matches  filenames  in  a  case-insensitive
+                      If  set,  b\bba\bas\bsh\bh  matches  filenames in a case-insensitive
                       fashion when performing pathname expansion (see P\bPa\bat\bth\bhn\bna\bam\bme\be
                       E\bEx\bxp\bpa\ban\bns\bsi\bio\bon\bn above).
               n\bnu\bul\bll\blg\bgl\blo\bob\bb
-                      If set, b\bba\bas\bsh\bh allows patterns which match no  files  (see
-                      P\bPa\bat\bth\bhn\bna\bam\bme\b E\bEx\bxp\bpa\ban\bns\bsi\bio\bon\bn  above)  to expand to a null string,
+                      If  set,  b\bba\bas\bsh\bh allows patterns which match no files (see
+                      P\bPa\bat\bth\bhn\bna\bam\bme\bE\bEx\bxp\bpa\ban\bns\bsi\bio\bon\bn above) to expand to  a  null  string,
                       rather than themselves.
               p\bpr\bro\bog\bgc\bco\bom\bmp\bp
                       If set, the programmable completion facilities (see P\bPr\bro\bo-\b-
@@ -4444,44 +4449,44 @@ S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
                       enabled by default.
               p\bpr\bro\bom\bmp\bpt\btv\bva\bar\brs\bs
                       If set, prompt strings undergo parameter expansion, com-
-                      mand   substitution,  arithmetic  expansion,  and  quote
-                      removal after being expanded as described  in  P\bPR\bRO\bOM\bMP\bPT\bTI\bIN\bNG\bG
+                      mand  substitution,  arithmetic  expansion,  and   quote
+                      removal  after  being expanded as described in P\bPR\bRO\bOM\bMP\bPT\bTI\bIN\bNG\bG
                       above.  This option is enabled by default.
               r\bre\bes\bst\btr\bri\bic\bct\bte\bed\bd_\b_s\bsh\bhe\bel\bll\bl
-                      The   shell  sets  this  option  if  it  is  started  in
+                      The  shell  sets  this  option  if  it  is  started   in
                       restricted mode (see R\bRE\bES\bST\bTR\bRI\bIC\bCT\bTE\bED\bD S\bSH\bHE\bEL\bLL\bL below).  The value
-                      may  not be changed.  This is not reset when the startup
-                      files are executed, allowing the startup files  to  dis-
+                      may not be changed.  This is not reset when the  startup
+                      files  are  executed, allowing the startup files to dis-
                       cover whether or not a shell is restricted.
               s\bsh\bhi\bif\bft\bt_\b_v\bve\ber\brb\bbo\bos\bse\be
-                      If  set,  the s\bsh\bhi\bif\bft\bt builtin prints an error message when
+                      If set, the s\bsh\bhi\bif\bft\bt builtin prints an error  message  when
                       the shift count exceeds the number of positional parame-
                       ters.
               s\bso\bou\bur\brc\bce\bep\bpa\bat\bth\bh
                       If set, the s\bso\bou\bur\brc\bce\be (.\b.) builtin uses the value of P\bPA\bAT\bTH\bH to
-                      find the directory containing the file  supplied  as  an
+                      find  the  directory  containing the file supplied as an
                       argument.  This option is enabled by default.
               x\bxp\bpg\bg_\b_e\bec\bch\bho\bo
-                      If   set,  the  e\bec\bch\bho\bo  builtin  expands  backslash-escape
+                      If  set,  the  e\bec\bch\bho\bo  builtin  expands   backslash-escape
                       sequences by default.
        s\bsu\bus\bsp\bpe\ben\bnd\bd [-\b-f\bf]
-              Suspend the execution of this shell until it receives a  S\bSI\bIG\bGC\bCO\bON\bNT\bT
-              signal.   The  -\b-f\bf option says not to complain if this is a login
-              shell; just suspend anyway.  The return status is 0  unless  the
+              Suspend  the execution of this shell until it receives a S\bSI\bIG\bGC\bCO\bON\bNT\bT
+              signal.  The -\b-f\bf option says not to complain if this is  a  login
+              shell;  just  suspend anyway.  The return status is 0 unless the
               shell is a login shell and -\b-f\bf is not supplied, or if job control
               is not enabled.
        t\bte\bes\bst\bt _\be_\bx_\bp_\br
        [\b[ _\be_\bx_\bp_\br ]\b]
-              Return a status of 0 or 1 depending on  the  evaluation  of  the
-              conditional  expression _\be_\bx_\bp_\br.  Each operator and operand must be
-              a separate argument.  Expressions are composed of the  primaries
+              Return  a  status  of  0 or 1 depending on the evaluation of the
+              conditional expression _\be_\bx_\bp_\br.  Each operator and operand must  be
+              a  separate argument.  Expressions are composed of the primaries
               described above under C\bCO\bON\bND\bDI\bIT\bTI\bIO\bON\bNA\bAL\bL E\bEX\bXP\bPR\bRE\bES\bSS\bSI\bIO\bON\bNS\bS.
 
-              Expressions  may  be  combined  using  the  following operators,
+              Expressions may  be  combined  using  the  following  operators,
               listed in decreasing order of precedence.
               !\b! _\be_\bx_\bp_\br True if _\be_\bx_\bp_\br is false.
               (\b( _\be_\bx_\bp_\br )\b)
-                     Returns the value of _\be_\bx_\bp_\br.  This may be used to  override
+                     Returns  the value of _\be_\bx_\bp_\br.  This may be used to override
                      the normal precedence of operators.
               _\be_\bx_\bp_\br_\b1 -a\ba _\be_\bx_\bp_\br_\b2
                      True if both _\be_\bx_\bp_\br_\b1 and _\be_\bx_\bp_\br_\b2 are true.
@@ -4498,109 +4503,109 @@ S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
                      null.
               2 arguments
                      If the first argument is !\b!, the expression is true if and
-                     only if the second argument is null.  If the first  argu-
-                     ment  is  one  of  the unary conditional operators listed
-                     above under C\bCO\bON\bND\bDI\bIT\bTI\bIO\bON\bNA\bAL\bL E\bEX\bXP\bPR\bRE\bES\bSS\bSI\bIO\bON\bNS\bS,  the  expression  is
+                     only  if the second argument is null.  If the first argu-
+                     ment is one of the  unary  conditional  operators  listed
+                     above  under  C\bCO\bON\bND\bDI\bIT\bTI\bIO\bON\bNA\bAL\bL  E\bEX\bXP\bPR\bRE\bES\bSS\bSI\bIO\bON\bNS\bS, the expression is
                      true if the unary test is true.  If the first argument is
                      not a valid unary conditional operator, the expression is
                      false.
               3 arguments
-                     If  the  second argument is one of the binary conditional
+                     If the second argument is one of the  binary  conditional
                      operators listed above under C\bCO\bON\bND\bDI\bIT\bTI\bIO\bON\bNA\bAL\bL E\bEX\bXP\bPR\bRE\bES\bSS\bSI\bIO\bON\bNS\bS, the
                      result of the expression is the result of the binary test
-                     using the first and third arguments as operands.  If  the
-                     first  argument  is  !\b!,  the value is the negation of the
-                     two-argument test using the second and  third  arguments.
+                     using  the first and third arguments as operands.  If the
+                     first argument is !\b!, the value is  the  negation  of  the
+                     two-argument  test  using the second and third arguments.
                      If the first argument is exactly (\b( and the third argument
-                     is exactly )\b), the result is the one-argument test of  the
-                     second  argument.   Otherwise,  the  expression is false.
-                     The -\b-a\ba and -\b-o\bo operators are considered  binary  operators
+                     is  exactly )\b), the result is the one-argument test of the
+                     second argument.  Otherwise,  the  expression  is  false.
+                     The  -\b-a\ba  and -\b-o\bo operators are considered binary operators
                      in this case.
               4 arguments
                      If the first argument is !\b!, the result is the negation of
-                     the three-argument expression composed of  the  remaining
+                     the  three-argument  expression composed of the remaining
                      arguments.  Otherwise, the expression is parsed and eval-
-                     uated according to  precedence  using  the  rules  listed
+                     uated  according  to  precedence  using  the rules listed
                      above.
               5 or more arguments
-                     The  expression  is  parsed  and  evaluated  according to
+                     The expression  is  parsed  and  evaluated  according  to
                      precedence using the rules listed above.
 
-       t\bti\bim\bme\bes\bs  Print the accumulated user and system times for  the  shell  and
+       t\bti\bim\bme\bes\bs  Print  the  accumulated  user and system times for the shell and
               for processes run from the shell.  The return status is 0.
 
        t\btr\bra\bap\bp [-\b-l\blp\bp] [[_\ba_\br_\bg] _\bs_\bi_\bg_\bs_\bp_\be_\bc ...]
-              The  command  _\ba_\br_\bg  is  to  be  read  and executed when the shell
-              receives signal(s) _\bs_\bi_\bg_\bs_\bp_\be_\bc.  If _\ba_\br_\bg is absent (and  there  is  a
-              single  _\bs_\bi_\bg_\bs_\bp_\be_\bc)  or  -\b-,  each  specified signal is reset to its
-              original disposition (the value it  had  upon  entrance  to  the
-              shell).   If _\ba_\br_\bg is the null string the signal specified by each
-              _\bs_\bi_\bg_\bs_\bp_\be_\bis ignored by the shell and by the commands it  invokes.
-              If  _\ba_\br_\bg  is  not present and -\b-p\bp has been supplied, then the trap
-              commands associated with each  _\bs_\bi_\bg_\bs_\bp_\be_\bc  are  displayed.   If  no
-              arguments  are  supplied or if only -\b-p\bp is given, t\btr\bra\bap\bp prints the
-              list of commands associated with each  signal.   The  -\b-l\b option
-              causes  the shell to print a list of signal names and their cor-
-              responding numbers.   Each  _\bs_\bi_\bg_\bs_\bp_\be_\bc  is  either  a  signal  name
-              defined  in  <_\bs_\bi_\bg_\bn_\ba_\bl_\b._\bh>,  or  a signal number.  Signal names are
-              case insensitive and the SIG prefix is optional.  If  a  _\bs_\bi_\bg_\bs_\bp_\be_\bc
-              is  E\bEX\bXI\bIT\bT (0) the command _\ba_\br_\bg is executed on exit from the shell.
-              If a _\bs_\bi_\bg_\bs_\bp_\be_\bc is D\bDE\bEB\bBU\bUG\bG, the command _\ba_\br_\bg is executed before  every
+              The command _\ba_\br_\bg is to  be  read  and  executed  when  the  shell
+              receives  signal(s)  _\bs_\bi_\bg_\bs_\bp_\be_\bc.   If _\ba_\br_\bg is absent (and there is a
+              single _\bs_\bi_\bg_\bs_\bp_\be_\bc) or -\b-, each specified  signal  is  reset  to  its
+              original  disposition  (the  value  it  had upon entrance to the
+              shell).  If _\ba_\br_\bg is the null string the signal specified by  each
+              _\bs_\bi_\bg_\bs_\bp_\be_\b is ignored by the shell and by the commands it invokes.
+              If _\ba_\br_\bg is not present and -\b-p\bp has been supplied,  then  the  trap
+              commands  associated  with  each  _\bs_\bi_\bg_\bs_\bp_\be_\bc  are displayed.  If no
+              arguments are supplied or if only -\b-p\bp is given, t\btr\bra\bap\bp  prints  the
+              list  of  commands  associated  with each signal.  The -\b-l\bl option
+              causes the shell to print a list of signal names and their  cor-
+              responding  numbers.   Each  _\bs_\bi_\bg_\bs_\bp_\be_\bc  is  either  a  signal name
+              defined in <_\bs_\bi_\bg_\bn_\ba_\bl_\b._\bh>, or a signal  number.   Signal  names  are
+              case  insensitive  and the SIG prefix is optional.  If a _\bs_\bi_\bg_\bs_\bp_\be_\bc
+              is E\bEX\bXI\bIT\bT (0) the command _\ba_\br_\bg is executed on exit from the  shell.
+              If  a _\bs_\bi_\bg_\bs_\bp_\be_\bc is D\bDE\bEB\bBU\bUG\bG, the command _\ba_\br_\bg is executed before every
               _\bs_\bi_\bm_\bp_\bl_\be _\bc_\bo_\bm_\bm_\ba_\bn_\bd, _\bf_\bo_\br command, _\bc_\ba_\bs_\be command, _\bs_\be_\bl_\be_\bc_\bt command, every
               arithmetic _\bf_\bo_\br command, and before the first command executes in
-              a  shell  function  (see  S\bSH\bHE\bEL\bLL\bL  G\bGR\bRA\bAM\bMM\bMA\bAR\bR  above).   Refer to the
-              description of the e\bex\bxt\btd\bde\beb\bbu\bug\bg option  to  the  s\bsh\bho\bop\bpt\bt  builtin  for
-              details  of  its effect on the D\bDE\bEB\bBU\bUG\bG trap.  If a _\bs_\bi_\bg_\bs_\bp_\be_\bc is E\bER\bRR\bR,
-              the command _\ba_\br_\bg is executed whenever  a  simple  command  has  a
-              non-zero  exit status, subject to the following conditions.  The
-              E\bER\bRR\btrap is not executed if the failed command is  part  of  the
-              command  list  immediately  following  a w\bwh\bhi\bil\ble\be or u\bun\bnt\bti\bil\bl keyword,
+              a shell function  (see  S\bSH\bHE\bEL\bLL\bL  G\bGR\bRA\bAM\bMM\bMA\bAR\bR  above).   Refer  to  the
+              description  of  the  e\bex\bxt\btd\bde\beb\bbu\bug\bg  option  to the s\bsh\bho\bop\bpt\bt builtin for
+              details of its effect on the D\bDE\bEB\bBU\bUG\bG trap.  If a _\bs_\bi_\bg_\bs_\bp_\be_\bc  is  E\bER\bRR\bR,
+              the  command  _\ba_\br_\bg  is  executed  whenever a simple command has a
+              non-zero exit status, subject to the following conditions.   The
+              E\bER\bRR\b trap  is  not executed if the failed command is part of the
+              command list immediately following a  w\bwh\bhi\bil\ble\be  or  u\bun\bnt\bti\bil\b keyword,
               part of the test in an _\bi_\bf statement, part of a &\b&&\b& or |\b||\b| list, or
-              if  the  command's  return value is being inverted via !\b!.  These
-              are the same conditions obeyed by  the  e\ber\brr\bre\bex\bxi\bit\bt  option.   If  a
+              if the command's return value is being inverted  via  !\b!.   These
+              are  the  same  conditions  obeyed  by the e\ber\brr\bre\bex\bxi\bit\bt option.  If a
               _\bs_\bi_\bg_\bs_\bp_\be_\bc is R\bRE\bET\bTU\bUR\bRN\bN, the command _\ba_\br_\bg is executed each time a shell
               function or a script executed with the .\b. or s\bso\bou\bur\brc\bce\be builtins fin-
               ishes executing.  Signals ignored upon entry to the shell cannot
-              be trapped or reset.  Trapped signals are reset to their  origi-
-              nal  values  in  a child process when it is created.  The return
-              status is false  if  any  _\bs_\bi_\bg_\bs_\bp_\be_\bc  is  invalid;  otherwise  t\btr\bra\bap\bp
+              be  trapped or reset.  Trapped signals are reset to their origi-
+              nal values in a child process when it is  created.   The  return
+              status  is  false  if  any  _\bs_\bi_\bg_\bs_\bp_\be_\bc  is  invalid; otherwise t\btr\bra\bap\bp
               returns true.
 
        t\bty\byp\bpe\be [-\b-a\baf\bft\btp\bpP\bP] _\bn_\ba_\bm_\be [_\bn_\ba_\bm_\be ...]
-              With  no options, indicate how each _\bn_\ba_\bm_\be would be interpreted if
+              With no options, indicate how each _\bn_\ba_\bm_\be would be interpreted  if
               used as a command name.  If the -\b-t\bt option is used, t\bty\byp\bpe\be prints a
-              string  which  is  one  of _\ba_\bl_\bi_\ba_\bs, _\bk_\be_\by_\bw_\bo_\br_\bd, _\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn, _\bb_\bu_\bi_\bl_\bt_\bi_\bn, or
-              _\bf_\bi_\bl_\bif  _\bn_\ba_\bm_\be  is  an  alias,  shell  reserved  word,  function,
-              builtin,  or disk file, respectively.  If the _\bn_\ba_\bm_\be is not found,
-              then nothing  is  printed,  and  an  exit  status  of  false  is
-              returned.   If  the  -\b-p\bp  option is used, t\bty\byp\bpe\be either returns the
+              string which is one of _\ba_\bl_\bi_\ba_\bs,  _\bk_\be_\by_\bw_\bo_\br_\bd,  _\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn,  _\bb_\bu_\bi_\bl_\bt_\bi_\bn,  or
+              _\bf_\bi_\bl_\b if  _\bn_\ba_\bm_\be  is  an  alias,  shell  reserved  word, function,
+              builtin, or disk file, respectively.  If the _\bn_\ba_\bm_\be is not  found,
+              then  nothing  is  printed,  and  an  exit  status  of  false is
+              returned.  If the -\b-p\bp option is used,  t\bty\byp\bpe\be  either  returns  the
               name of the disk file that would be executed if _\bn_\ba_\bm_\be were speci-
               fied as a command name, or nothing if ``type -t name'' would not
-              return _\bf_\bi_\bl_\be.  The -\b-P\bP option forces a P\bPA\bAT\bTH\bH search for each  _\bn_\ba_\bm_\be,
+              return  _\bf_\bi_\bl_\be.  The -\b-P\bP option forces a P\bPA\bAT\bTH\bH search for each _\bn_\ba_\bm_\be,
               even if ``type -t name'' would not return _\bf_\bi_\bl_\be.  If a command is
-              hashed, -\b-p\bp and -\b-P\bP print the hashed value,  not  necessarily  the
+              hashed,  -\b-p\bp  and  -\b-P\bP print the hashed value, not necessarily the
               file that appears first in P\bPA\bAT\bTH\bH.  If the -\b-a\ba option is used, t\bty\byp\bpe\be
-              prints all of the places that contain an executable named  _\bn_\ba_\bm_\be.
-              This  includes  aliases  and  functions,  if  and only if the -\b-p\bp
-              option is not also used.  The table of hashed  commands  is  not
-              consulted  when  using -\b-a\ba.  The -\b-f\bf option suppresses shell func-
-              tion lookup, as with the c\bco\bom\bmm\bma\ban\bnd\bd builtin.  t\bty\byp\bpe\be returns true  if
+              prints  all of the places that contain an executable named _\bn_\ba_\bm_\be.
+              This includes aliases and functions,  if  and  only  if  the  -\b-p\bp
+              option  is  not  also used.  The table of hashed commands is not
+              consulted when using -\b-a\ba.  The -\b-f\bf option suppresses  shell  func-
+              tion  lookup, as with the c\bco\bom\bmm\bma\ban\bnd\bd builtin.  t\bty\byp\bpe\be returns true if
               any of the arguments are found, false if none are found.
 
        u\bul\bli\bim\bmi\bit\bt [-\b-S\bSH\bHa\bac\bcd\bdf\bfl\blm\bmn\bnp\bps\bst\btu\buv\bv [_\bl_\bi_\bm_\bi_\bt]]
-              Provides  control  over the resources available to the shell and
-              to processes started by it, on systems that allow such  control.
+              Provides control over the resources available to the  shell  and
+              to  processes started by it, on systems that allow such control.
               The -\b-H\bH and -\b-S\bS options specify that the hard or soft limit is set
-              for the given resource.  A hard limit cannot be  increased  once
-              it  is set; a soft limit may be increased up to the value of the
-              hard limit.  If neither -\b-H\bH nor -\b-S\bS is specified,  both  the  soft
-              and  hard limits are set.  The value of _\bl_\bi_\bm_\bi_\bt can be a number in
+              for  the  given resource.  A hard limit cannot be increased once
+              it is set; a soft limit may be increased up to the value of  the
+              hard  limit.   If  neither -\b-H\bH nor -\b-S\bS is specified, both the soft
+              and hard limits are set.  The value of _\bl_\bi_\bm_\bi_\bt can be a number  in
               the unit specified for the resource or one of the special values
-              h\bha\bar\brd\bd,  s\bso\bof\bft\bt,  or  u\bun\bnl\bli\bim\bmi\bit\bte\bed\bd,  which  stand  for the current hard
-              limit, the current soft limit, and no limit,  respectively.   If
-              _\bl_\bi_\bm_\bi_\b is  omitted,  the  current value of the soft limit of the
-              resource is printed, unless the -\b-H\bH option is given.   When  more
-              than  one  resource  is  specified,  the limit name and unit are
+              h\bha\bar\brd\bd, s\bso\bof\bft\bt, or u\bun\bnl\bli\bim\bmi\bit\bte\bed\bd,  which  stand  for  the  current  hard
+              limit,  the  current soft limit, and no limit, respectively.  If
+              _\bl_\bi_\bm_\bi_\bis omitted, the current value of the  soft  limit  of  the
+              resource  is  printed, unless the -\b-H\bH option is given.  When more
+              than one resource is specified, the  limit  name  and  unit  are
               printed before the value.  Other options are interpreted as fol-
               lows:
               -\b-a\ba     All current limits are reported
@@ -4614,63 +4619,63 @@ S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
               -\b-p\bp     The pipe size in 512-byte blocks (this may not be set)
               -\b-s\bs     The maximum stack size
               -\b-t\bt     The maximum amount of cpu time in seconds
-              -\b-u\bu     The maximum number of processes  available  to  a  single
+              -\b-u\bu     The  maximum  number  of  processes available to a single
                      user
-              -\b-v\bv     The  maximum  amount  of  virtual memory available to the
+              -\b-v\bv     The maximum amount of virtual  memory  available  to  the
                      shell
 
               If _\bl_\bi_\bm_\bi_\bt is given, it is the new value of the specified resource
               (the -\b-a\ba option is display only).  If no option is given, then -\b-f\bf
-              is assumed.  Values are in 1024-byte increments, except for  -\b-t\bt,
-              which  is  in seconds, -\b-p\bp, which is in units of 512-byte blocks,
-              and -\b-n\bn and -\b-u\bu, which are unscaled values.  The return status  is
-              0  unless an invalid option or argument is supplied, or an error
+              is  assumed.  Values are in 1024-byte increments, except for -\b-t\bt,
+              which is in seconds, -\b-p\bp, which is in units of  512-byte  blocks,
+              and  -\b-n\bn and -\b-u\bu, which are unscaled values.  The return status is
+              0 unless an invalid option or argument is supplied, or an  error
               occurs while setting a new limit.
 
        u\bum\bma\bas\bsk\bk [-\b-p\bp] [-\b-S\bS] [_\bm_\bo_\bd_\be]
               The user file-creation mask is set to _\bm_\bo_\bd_\be.  If _\bm_\bo_\bd_\be begins with
-              a  digit,  it is interpreted as an octal number; otherwise it is
-              interpreted as a symbolic mode mask similar to that accepted  by
-              _\bc_\bh_\bm_\bo_\bd(1).   If _\bm_\bo_\bd_\be is omitted, the current value of the mask is
-              printed.  The -\b-S\bS option causes the mask to be  printed  in  sym-
-              bolic  form;  the  default output is an octal number.  If the -\b-p\bp
+              a digit, it is interpreted as an octal number; otherwise  it  is
+              interpreted  as a symbolic mode mask similar to that accepted by
+              _\bc_\bh_\bm_\bo_\bd(1).  If _\bm_\bo_\bd_\be is omitted, the current value of the mask  is
+              printed.   The  -\b-S\bS  option causes the mask to be printed in sym-
+              bolic form; the default output is an octal number.   If  the  -\b-p\bp
               option is supplied, and _\bm_\bo_\bd_\be is omitted, the output is in a form
               that may be reused as input.  The return status is 0 if the mode
-              was successfully changed or if no _\bm_\bo_\bd_\be  argument  was  supplied,
+              was  successfully  changed  or if no _\bm_\bo_\bd_\be argument was supplied,
               and false otherwise.
 
        u\bun\bna\bal\bli\bia\bas\bs [-a\ba] [_\bn_\ba_\bm_\be ...]
-              Remove  each  _\bn_\ba_\bm_\be  from  the list of defined aliases.  If -\b-a\ba is
-              supplied, all alias definitions are removed.  The  return  value
+              Remove each _\bn_\ba_\bm_\be from the list of defined  aliases.   If  -\b-a\b is
+              supplied,  all  alias definitions are removed.  The return value
               is true unless a supplied _\bn_\ba_\bm_\be is not a defined alias.
 
        u\bun\bns\bse\bet\bt [-f\bfv\bv] [_\bn_\ba_\bm_\be ...]
-              For  each  _\bn_\ba_\bm_\be,  remove the corresponding variable or function.
+              For each _\bn_\ba_\bm_\be, remove the corresponding  variable  or  function.
               If no options are supplied, or the -\b-v\bv option is given, each _\bn_\ba_\bm_\be
-              refers  to  a  shell  variable.   Read-only variables may not be
+              refers to a shell variable.   Read-only  variables  may  not  be
               unset.  If -\b-f\bf is specifed, each _\bn_\ba_\bm_\be refers to a shell function,
-              and  the function definition is removed.  Each unset variable or
-              function is removed from the environment  passed  to  subsequent
+              and the function definition is removed.  Each unset variable  or
+              function  is  removed  from the environment passed to subsequent
               commands.  If any of R\bRA\bAN\bND\bDO\bOM\bM, S\bSE\bEC\bCO\bON\bND\bDS\bS, L\bLI\bIN\bNE\bEN\bNO\bO, H\bHI\bIS\bST\bTC\bCM\bMD\bD, F\bFU\bUN\bNC\bCN\bNA\bAM\bME\bE,
-              G\bGR\bRO\bOU\bUP\bPS\bS, or D\bDI\bIR\bRS\bST\bTA\bAC\bCK\bK are unset, they lose their  special  proper-
-              ties,  even  if they are subsequently reset.  The exit status is
+              G\bGR\bRO\bOU\bUP\bPS\bS,  or  D\bDI\bIR\bRS\bST\bTA\bAC\bCK\bK are unset, they lose their special proper-
+              ties, even if they are subsequently reset.  The exit  status  is
               true unless a _\bn_\ba_\bm_\be is readonly.
 
        w\bwa\bai\bit\bt [_\bn]
-              Wait for the specified process and return its  termination  sta-
-              tus.   _\bn  may  be  a process ID or a job specification; if a job
-              spec is given, all processes in that job's pipeline  are  waited
-              for.   If  _\bn  is not given, all currently active child processes
+              Wait  for  the specified process and return its termination sta-
+              tus.  _\bn may be a process ID or a job  specification;  if  a  job
+              spec  is  given, all processes in that job's pipeline are waited
+              for.  If _\bn is not given, all currently  active  child  processes
               are waited for, and the return status is zero.  If _\bn specifies a
-              non-existent  process  or job, the return status is 127.  Other-
-              wise, the return status is the exit status of the  last  process
+              non-existent process or job, the return status is  127.   Other-
+              wise,  the  return status is the exit status of the last process
               or job waited for.
 
 R\bRE\bES\bST\bTR\bRI\bIC\bCT\bTE\bED\bD S\bSH\bHE\bEL\bLL\bL
        If b\bba\bas\bsh\bh is started with the name r\brb\bba\bas\bsh\bh, or the -\b-r\br option is supplied at
-       invocation, the shell becomes restricted.  A restricted shell  is  used
-       to  set  up an environment more controlled than the standard shell.  It
-       behaves identically to b\bba\bas\bsh\bh with the exception that the  following  are
+       invocation,  the  shell becomes restricted.  A restricted shell is used
+       to set up an environment more controlled than the standard  shell.   It
+       behaves  identically  to b\bba\bas\bsh\bh with the exception that the following are
        disallowed or not performed:
 
        +\bo      changing directories with c\bcd\bd
@@ -4679,28 +4684,28 @@ R\bRE\bES\bST\bTR\bRI\bIC\bCT\bTE\bED\bD S\bSH\bHE\bEL\bLL\bL
 
        +\bo      specifying command names containing /\b/
 
-       +\bo      specifying a file name containing a /\b/ as an argument  to  the  .\b.
+       +\bo      specifying  a  file  name containing a /\b/ as an argument to the .\b.
               builtin command
 
-       +\bo      Specifying  a  filename containing a slash as an argument to the
+       +\bo      Specifying a filename containing a slash as an argument  to  the
               -\b-p\bp option to the h\bha\bas\bsh\bh builtin command
 
-       +\bo      importing function definitions from  the  shell  environment  at
+       +\bo      importing  function  definitions  from  the shell environment at
               startup
 
-       +\bo      parsing  the  value  of  S\bSH\bHE\bEL\bLL\bLO\bOP\bPT\bTS\bS from the shell environment at
+       +\bo      parsing the value of S\bSH\bHE\bEL\bLL\bLO\bOP\bPT\bTS\bS from  the  shell  environment  at
               startup
 
-       +\bo      redirecting output using the >, >|, <>, >&, &>, and >>  redirec-
+       +\bo      redirecting  output using the >, >|, <>, >&, &>, and >> redirec-
               tion operators
 
        +\bo      using the e\bex\bxe\bec\bc builtin command to replace the shell with another
               command
 
-       +\bo      adding or deleting builtin commands with the -\b-f\bf and  -\b-d\b options
+       +\bo      adding  or  deleting builtin commands with the -\b-f\bf and -\b-d\bd options
               to the e\ben\bna\bab\bbl\ble\be builtin command
 
-       +\bo      Using  the  e\ben\bna\bab\bbl\ble\be  builtin  command  to  enable  disabled shell
+       +\bo      Using the  e\ben\bna\bab\bbl\ble\be  builtin  command  to  enable  disabled  shell
               builtins
 
        +\bo      specifying the -\b-p\bp option to the c\bco\bom\bmm\bma\ban\bnd\bd builtin command
@@ -4710,14 +4715,14 @@ R\bRE\bES\bST\bTR\bRI\bIC\bCT\bTE\bED\bD S\bSH\bHE\bEL\bLL\bL
        These restrictions are enforced after any startup files are read.
 
        When a command that is found to be a shell script is executed (see C\bCO\bOM\bM-\b-
-       M\bMA\bAN\bND\b E\bEX\bXE\bEC\bCU\bUT\bTI\bIO\bON\bN  above),  r\brb\bba\bas\bsh\bh turns off any restrictions in the shell
+       M\bMA\bAN\bND\bE\bEX\bXE\bEC\bCU\bUT\bTI\bIO\bON\bN above), r\brb\bba\bas\bsh\bh turns off any restrictions  in  the  shell
        spawned to execute the script.
 
 S\bSE\bEE\bE A\bAL\bLS\bSO\bO
        _\bB_\ba_\bs_\bh _\bR_\be_\bf_\be_\br_\be_\bn_\bc_\be _\bM_\ba_\bn_\bu_\ba_\bl, Brian Fox and Chet Ramey
        _\bT_\bh_\be _\bG_\bn_\bu _\bR_\be_\ba_\bd_\bl_\bi_\bn_\be _\bL_\bi_\bb_\br_\ba_\br_\by, Brian Fox and Chet Ramey
        _\bT_\bh_\be _\bG_\bn_\bu _\bH_\bi_\bs_\bt_\bo_\br_\by _\bL_\bi_\bb_\br_\ba_\br_\by, Brian Fox and Chet Ramey
-       _\bP_\bo_\br_\bt_\ba_\bb_\bl_\b_\bO_\bp_\be_\br_\ba_\bt_\bi_\bn_\bg _\bS_\by_\bs_\bt_\be_\bm _\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be _\b(_\bP_\bO_\bS_\bI_\bX_\b) _\bP_\ba_\br_\bt _\b2_\b:  _\bS_\bh_\be_\bl_\bl  _\ba_\bn_\b _\bU_\bt_\bi_\bl_\bi_\b-
+       _\bP_\bo_\br_\bt_\ba_\bb_\bl_\b _\bO_\bp_\be_\br_\ba_\bt_\bi_\bn_\bg  _\bS_\by_\bs_\bt_\be_\bm  _\bI_\bn_\bt_\be_\br_\bf_\ba_\bc_\be _\b(_\bP_\bO_\bS_\bI_\bX_\b) _\bP_\ba_\br_\bt _\b2_\b: _\bS_\bh_\be_\bl_\bl _\ba_\bn_\bd _\bU_\bt_\bi_\bl_\bi_\b-
        _\bt_\bi_\be_\bs, IEEE
        _\bs_\bh(1), _\bk_\bs_\bh(1), _\bc_\bs_\bh(1)
        _\be_\bm_\ba_\bc_\bs(1), _\bv_\bi(1)
@@ -4733,7 +4738,7 @@ F\bFI\bIL\bLE\bES\bS
        _\b~_\b/_\b._\bb_\ba_\bs_\bh_\br_\bc
               The individual per-interactive-shell startup file
        _\b~_\b/_\b._\bb_\ba_\bs_\bh_\b__\bl_\bo_\bg_\bo_\bu_\bt
-              The individual login shell cleanup file, executed when  a  login
+              The  individual  login shell cleanup file, executed when a login
               shell exits
        _\b~_\b/_\b._\bi_\bn_\bp_\bu_\bt_\br_\bc
               Individual _\br_\be_\ba_\bd_\bl_\bi_\bn_\be initialization file
@@ -4747,14 +4752,14 @@ A\bAU\bUT\bTH\bHO\bOR\bRS\bS
 
 B\bBU\bUG\bG R\bRE\bEP\bPO\bOR\bRT\bTS\bS
        If you find a bug in b\bba\bas\bsh\bh,\b, you should report it.  But first, you should
-       make sure that it really is a bug, and that it appears  in  the  latest
-       version   of  b\bba\bas\bsh\bh.   The  latest  version  is  always  available  from
+       make  sure  that  it really is a bug, and that it appears in the latest
+       version  of  b\bba\bas\bsh\bh.   The  latest  version  is  always  available   from
        _\bf_\bt_\bp_\b:_\b/_\b/_\bf_\bt_\bp_\b._\bg_\bn_\bu_\b._\bo_\br_\bg_\b/_\bp_\bu_\bb_\b/_\bb_\ba_\bs_\bh_\b/.
 
-       Once you have determined that a bug actually exists,  use  the  _\bb_\ba_\bs_\bh_\bb_\bu_\bg
-       command  to submit a bug report.  If you have a fix, you are encouraged
-       to mail that as well!  Suggestions and `philosophical' bug reports  may
-       be  mailed  to  _\bb_\bu_\bg_\b-_\bb_\ba_\bs_\bh_\b@_\bg_\bn_\bu_\b._\bo_\br_\bg  or  posted  to  the  Usenet newsgroup
+       Once  you  have  determined that a bug actually exists, use the _\bb_\ba_\bs_\bh_\bb_\bu_\bg
+       command to submit a bug report.  If you have a fix, you are  encouraged
+       to  mail that as well!  Suggestions and `philosophical' bug reports may
+       be mailed  to  _\bb_\bu_\bg_\b-_\bb_\ba_\bs_\bh_\b@_\bg_\bn_\bu_\b._\bo_\br_\bg  or  posted  to  the  Usenet  newsgroup
        g\bgn\bnu\bu.\b.b\bba\bas\bsh\bh.\b.b\bbu\bug\bg.
 
        ALL bug reports should include:
@@ -4765,7 +4770,7 @@ B\bBU\bUG\bG R\bRE\bEP\bPO\bOR\bRT\bTS\bS
        A description of the bug behaviour
        A short script or `recipe' which exercises the bug
 
-       _\bb_\ba_\bs_\bh_\bb_\bu_\binserts the first three items automatically into  the  template
+       _\bb_\ba_\bs_\bh_\bb_\bu_\b inserts  the first three items automatically into the template
        it provides for filing a bug report.
 
        Comments and bug reports concerning this manual page should be directed
@@ -4782,19 +4787,19 @@ B\bBU\bUG\bGS\bS
        Shell builtin commands and functions are not stoppable/restartable.
 
        Compound commands and command sequences of the form `a ; b ; c' are not
-       handled gracefully when process suspension is attempted.  When  a  pro-
+       handled  gracefully  when process suspension is attempted.  When a pro-
        cess is stopped, the shell immediately executes the next command in the
        sequence.  It suffices to place the sequence of commands between paren-
        theses to force it into a subshell, which may be stopped as a unit.
 
-       Commands  inside  of  $\b$(\b(...)\b)  command substitution are not parsed until
-       substitution is attempted.  This will delay error reporting until  some
+       Commands inside of $\b$(\b(...)\b) command substitution  are  not  parsed  until
+       substitution  is attempted.  This will delay error reporting until some
        time after the command is entered.  For example, unmatched parentheses,
-       even inside shell comments, will result in  error  messages  while  the
+       even  inside  shell  comments,  will result in error messages while the
        construct is being read.
 
        Array variables may not (yet) be exported.
 
 
 
-GNU Bash-3.0                     2004 June 26                          BASH(1)
+GNU Bash-3.0                      2004 Sep 17                          BASH(1)
index 348343c936fb28b9c620047c875e2fb08a15a562..cbd986df68ff571263df3bf88580c5537b1cd64b 100644 (file)
@@ -115,7 +115,7 @@ when invoking an interactive shell.
 .TP
 .B \-D
 A list of all double-quoted strings preceded by \fB$\fP
-is printed on the standard ouput.
+is printed on the standard output.
 These are the strings that
 are subject to language translation when the current locale
 is not \fBC\fP or \fBPOSIX\fP.
@@ -1963,9 +1963,7 @@ job identifier (see
 .B JOB CONTROL
 below).  If set to any other value, the supplied string must
 be a prefix of a stopped job's name; this provides functionality
-analogous to the
-.B %
-job identifier.
+analogous to the \fB%\fP\fIstring\fP job identifier.
 .TP
 .B histchars
 The two or three characters which control history expansion
@@ -5287,7 +5285,7 @@ of an \fIinputrc\fP file.
 .TP
 .B dump\-macros
 Print all of the readline key sequences bound to macros and the
-strings they ouput.  If a numeric argument is supplied,
+strings they output.  If a numeric argument is supplied,
 the output is formatted in such a way that it can be made part
 of an \fIinputrc\fP file.
 .TP
index 5fb9b630d4d6790ec48c2015025d799a051de873..cf7a9d030788e3c350e3d61638509f855c1750fe 100644 (file)
@@ -6,12 +6,12 @@
 .\"    Case Western Reserve University
 .\"    chet@po.CWRU.Edu
 .\"
-.\"    Last Change: Fri Aug 27 12:14:46 EDT 2004
+.\"    Last Change: Fri Sep 17 22:44:17 EDT 2004
 .\"
 .\" bash_builtins, strip all but Built-Ins section
 .if \n(zZ=1 .ig zZ
 .if \n(zY=1 .ig zY
-.TH BASH 1 "2004 June 26" "GNU Bash-3.0"
+.TH BASH 1 "2004 Sep 17" "GNU Bash-3.0"
 .\"
 .\" There's some problem with having a `@'
 .\" in a tagged paragraph with the BSD man macros.
@@ -115,7 +115,7 @@ when invoking an interactive shell.
 .TP
 .B \-D
 A list of all double-quoted strings preceded by \fB$\fP
-is printed on the standard ouput.
+is printed on the standard output.
 These are the strings that
 are subject to language translation when the current locale
 is not \fBC\fP or \fBPOSIX\fP.
@@ -1228,8 +1228,8 @@ The command argument to the \fB\-c\fP invocation option.
 An array variable whose members are the line numbers in source files
 corresponding to each member of \fBFUNCNAME\fP.
 \fB${BASH_LINENO[\fP\fI$i\fP\fB]}\fP is the line number in the source
-file where \fB${FUNCNAME[\fP\fI$i + 1\fP\fB]}\fP was called.
-The corresponding source file name is \fB${BASH_SOURCE[\fP\fI$i + 1\fP\fB]}\fB.
+file where \fB${FUNCNAME[\fP\fI$ifP\fB]}\fP was called.
+The corresponding source file name is \fB${BASH_SOURCE[\fP\fI$i\fP\fB]}\fB.
 Use \fBLINENO\fP to obtain the current line number.
 .TP
 .B BASH_REMATCH
@@ -1963,9 +1963,7 @@ job identifier (see
 .B JOB CONTROL
 below).  If set to any other value, the supplied string must
 be a prefix of a stopped job's name; this provides functionality
-analogous to the
-.B %
-job identifier.
+analogous to the \fB%\fP\fIstring\fP job identifier.
 .TP
 .B histchars
 The two or three characters which control history expansion
index 706270dfa464865dda59cec537daf8e5f48edd9c..c2e579ce5001b59b751a574b94bcce9ee50f69de 100644 (file)
@@ -2,7 +2,7 @@
 <TITLE>BASH(1) Manual Page</TITLE>
 </HEAD>
 <BODY><TABLE WIDTH=100%>
-<TH ALIGN=LEFT>BASH(1)<TH ALIGN=CENTER>2004 June 26<TH ALIGN=RIGHT>BASH(1)
+<TH ALIGN=LEFT>BASH(1)<TH ALIGN=CENTER>2004 Sep 17<TH ALIGN=RIGHT>BASH(1)
 </TABLE>
 <BR><A HREF="#index">Index</A>
 <HR>
@@ -1603,8 +1603,8 @@ The command argument to the <B>-c</B> invocation option.
 An array variable whose members are the line numbers in source files
 corresponding to each member of <B>FUNCNAME</B>.
 <B>${BASH_LINENO[</B><I>$i</I><B>]}</B> is the line number in the source
-file where <B>${FUNCNAME[</B><I>$i + 1</I><B>]}</B> was called.
-The corresponding source file name is <B>${BASH_SOURCE[</B><I>$i + 1</I><B>]}.
+file where <B>${FUNCNAME[</B><I>$ifP</I><B>]}</B> was called.
+The corresponding source file name is <B>${BASH_SOURCE[</B><I>$i</I><B>]}.
 Use LINENO</B> to obtain the current line number.
 <DT><B>BASH_REMATCH</B>
 
@@ -5096,7 +5096,7 @@ sends a
 to all jobs when an interactive login shell exits.
 <P>
 
-If Bbash is waiting for a command to complete and receives a signal
+If <B>bash</B> is waiting for a command to complete and receives a signal
 for which a trap has been set, the trap will not be executed until
 the command completes. 
 When <B>bash</B> is waiting for an asynchronous command via the <B>wait</B>
@@ -8023,6 +8023,12 @@ suppressing trailing spaces).  Intended to be used with shell functions.
 <DD>
 Tell readline not to append a space (the default) to words completed at
 the end of the line.
+<DT><B>plusdirs</B>
+
+<DD>
+After any matches defined by the compspec are generated, 
+directory name completion is attempted and any
+matches are added to the results of the other actions.
 </DL></DL>
 
 <DT><B>-A</B> <I>action</I><DD>
@@ -11367,6 +11373,6 @@ Array variables may not (yet) be exported.
 </DL>
 <HR>
 This document was created by man2html from bash.1.<BR>
-Time: 30 August 2004 08:27:20 EDT
+Time: 21 September 2004 11:57:09 EDT
 </BODY>
 </HTML>
index 33df4405ec274e27578450d21733556ca961552a..2e8788d9b818fa659567b2408dad7d731669ce0f 100644 (file)
@@ -1,6 +1,6 @@
 %!PS-Adobe-3.0
 %%Creator: groff version 1.18.1
-%%CreationDate: Mon Aug 30 08:27:13 2004
+%%CreationDate: Tue Sep 21 11:57:02 2004
 %%DocumentNeededResources: font Times-Roman
 %%+ font Times-Bold
 %%+ font Times-Italic
@@ -321,7 +321,7 @@ E F2(po)2.5 E F0(\(portable object\) \214le format.)2.5 E F2
 144 686.4 Q .3 -.15(ve \()-.25 H(see).15 E F4(INV)2.5 E(OCA)-.405 E
 (TION)-.855 E F0(belo)2.25 E(w\).)-.25 E F2(\255\255login)108 703.2 Q F0
 (Equi)144 715.2 Q -.25(va)-.25 G(lent to).25 E F2<ad6c>2.5 E F0(.)A
-(GNU Bash-3.0)72 768 Q(2004 June 26)147.345 E(1)202.335 E 0 Cg EP
+(GNU Bash-3.0)72 768 Q(2004 Sep 17)149.01 E(1)204 E 0 Cg EP
 %%Page: 2 2
 %%BeginPageSetup
 BP
@@ -443,7 +443,7 @@ F(ariable)-.25 E F3 -.27(BA)108 679.2 S(SH_ENV).27 E F0 1.01(in the en)
 108 727.2 S 2.5(tt).2 G(he v)-2.5 E(alue of the)-.25 E F3 -.666(PA)2.5 G
 (TH)-.189 E F0 -.25(va)2.25 G
 (riable is not used to search for the \214le name.).25 E(GNU Bash-3.0)72
-768 Q(2004 June 26)147.345 E(2)202.335 E 0 Cg EP
+768 Q(2004 Sep 17)149.01 E(2)204 E 0 Cg EP
 %%Page: 3 3
 %%BeginPageSetup
 BP
@@ -568,7 +568,7 @@ F1(Pipelines)87 679.2 Q F0(A)108 691.2 Q F2(pipeline)2.919 E F0 .419
 F F1(|)2.92 E F0 5.42(.T)C .42(he format for a pipeline)-5.42 F(is:)108
 703.2 Q([)144 720 Q F1(time)A F0([)2.5 E F1<ad70>A F0(]] [ ! ])A F2
 (command)2.5 E F0([)2.5 E F1(|)2.5 E F2(command2)2.5 E F0(... ])2.5 E
-(GNU Bash-3.0)72 768 Q(2004 June 26)147.345 E(3)202.335 E 0 Cg EP
+(GNU Bash-3.0)72 768 Q(2004 Sep 17)149.01 E(3)204 E 0 Cg EP
 %%Page: 4 4
 %%BeginPageSetup
 BP
@@ -688,8 +688,8 @@ A({)108 573.6 Q F1(list)2.5 E F0 2.5(;})C F1(list)3.89 E F0 .402
 F(SIONS)144 727.2 Q F5(.)A F0 -.8(Wo)5.633 G 1.133
 (rd splitting and pathname e).8 F 1.133
 (xpansion are not performed on the w)-.15 F 1.133(ords between the)-.1 F
-F3([[)3.632 E F0(GNU Bash-3.0)72 768 Q(2004 June 26)147.345 E(4)202.335
-E 0 Cg EP
+F3([[)3.632 E F0(GNU Bash-3.0)72 768 Q(2004 Sep 17)149.01 E(4)204 E 0 Cg
+EP
 %%Page: 5 5
 %%BeginPageSetup
 BP
@@ -828,8 +828,8 @@ F F2(name)144 727.2 Q F0 .759(to be set to null.)3.439 F .759
 (The line read is sa)5.759 F -.15(ve)-.2 G 3.26(di).15 G 3.26(nt)-3.26 G
 .76(he v)-3.26 F(ariable)-.25 E F1(REPL)3.26 E(Y)-.92 E F0 5.76(.T)C(he)
 -5.76 E F2(list)3.35 E F0 .76(is e)3.94 F -.15(xe)-.15 G .76
-(cuted after).15 F(GNU Bash-3.0)72 768 Q(2004 June 26)147.345 E(5)
-202.335 E 0 Cg EP
+(cuted after).15 F(GNU Bash-3.0)72 768 Q(2004 Sep 17)149.01 E(5)204 E 0
+Cg EP
 %%Page: 6 6
 %%BeginPageSetup
 BP
@@ -964,7 +964,7 @@ E(xpansion.)-.15 E(There are three quoting mechanisms: the)108 708 Q F2
 G(he)-2.974 E F2 .474(escape c)2.974 F(har)-.15 E(acter)-.15 E F0 5.474
 (.I).73 G 2.974(tp)-5.474 G(reserv)-2.974 E .474(es the literal v)-.15 F
 .474(alue of the ne)-.25 F .474(xt character that)-.15 F(GNU Bash-3.0)72
-768 Q(2004 June 26)147.345 E(6)202.335 E 0 Cg EP
+768 Q(2004 Sep 17)149.01 E(6)204 E 0 Cg EP
 %%Page: 7 7
 %%BeginPageSetup
 BP
@@ -1081,7 +1081,7 @@ d by one or more digits, other than the single digit 0.)3.935 F(Posi-)
 5.706 E .445(tional parameters are assigned from the shell')108 729.6 R
 2.944(sa)-.55 G -.18(rg)-2.944 G .444(uments when it is in).18 F -.2(vo)
 -.4 G -.1(ke).2 G .444(d, and may be reassigned using).1 F(GNU Bash-3.0)
-72 768 Q(2004 June 26)147.345 E(7)202.335 E 0 Cg EP
+72 768 Q(2004 Sep 17)149.01 E(7)204 E 0 Cg EP
 %%Page: 8 8
 %%BeginPageSetup
 BP
@@ -1197,8 +1197,8 @@ F F1 -.3(BA)144 655.2 S(SH_ARGV).3 E F0(.)A F1 -.3(BA)108 667.2 S
 691.2 Q -.15(xe)-.15 G(cuting at the time of the trap.).15 E F1 -.3(BA)
 108 703.2 S(SH_EXECUTION_STRING).3 E F0(The command ar)144 715.2 Q
 (gument to the)-.18 E F1<ad63>2.5 E F0(in)2.5 E -.2(vo)-.4 G
-(cation option.).2 E(GNU Bash-3.0)72 768 Q(2004 June 26)147.345 E(8)
-202.335 E 0 Cg EP
+(cation option.).2 E(GNU Bash-3.0)72 768 Q(2004 Sep 17)149.01 E(8)204 E
+0 Cg EP
 %%Page: 9 9
 %%BeginPageSetup
 BP
@@ -1210,16 +1210,15 @@ BP
 F1(FUNCN)5.444 E(AME)-.2 E F0(.)A F1(${B)7.944 E(ASH_LINENO[)-.3 E/F2 10
 /Times-Italic@0 SF($i)A F1(]})A F0 2.944
 (is the line number in the source \214le where)5.444 F F1(${FUNCN)144
-120 Q(AME[)-.2 E F2 8.951($i + 1)B F1(]})A F0 -.1(wa)11.451 G 11.451(sc)
-.1 G 11.451(alled. The)-11.451 F 8.951
-(corresponding source \214le name is)11.451 F F1(${B)144 132 Q
-(ASH_SOURCE[)-.3 E F2($i + 1)A F1 2.5(]}. Use)B
-(LINENO to obtain the curr)2.5 E(ent line number)-.18 E(.)-1 E -.3(BA)
-108 144 S(SH_REMA).3 E(TCH)-.95 E F0 .005(An array v)144 156 R .005
-(ariable whose members are assigned by the)-.25 F F1(=~)2.506 E F0 .006
-(binary operator to the)2.506 F F1([[)2.506 E F0 .006(conditional com-)
-2.506 F 2.507(mand. The)144 168 R .007(element with inde)2.507 F 2.507
-(x0i)-.15 G 2.507(st)-2.507 G .007
+120 Q(AME[)-.2 E F2($ifP)A F1(]})A F2 12.109(was called.)14.609 F 12.109
+(The corr)17.109 F 12.109(esponding sour)-.37 F 12.108
+(ce \214le name is)-.37 F F1(${B)144 132 Q(ASH_SOURCE[)-.3 E F2($i)A F1
+2.5(]}. Use)B(LINENO to obtain the curr)2.5 E(ent line number)-.18 E(.)
+-1 E -.3(BA)108 144 S(SH_REMA).3 E(TCH)-.95 E F0 .005(An array v)144 156
+R .005(ariable whose members are assigned by the)-.25 F F1(=~)2.506 E F0
+.006(binary operator to the)2.506 F F1([[)2.506 E F0 .006
+(conditional com-)2.506 F 2.507(mand. The)144 168 R .007
+(element with inde)2.507 F 2.507(x0i)-.15 G 2.507(st)-2.507 G .007
 (he portion of the string matching the entire re)-2.507 F .006(gular e)
 -.15 F(xpression.)-.15 E .997(The element with inde)144 180 R(x)-.15 E
 F2(n)3.497 E F0 .997(is the portion of the string matching the)3.497 F
@@ -1298,7 +1297,7 @@ F(in)144 577.2 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(db).1 G 2.5(yt)-2.5 G
 1.094(Directories appear in the stack in the order the)144 723.6 R 3.594
 (ya)-.15 G 1.095(re displayed by the)-3.594 F F1(dirs)3.595 E F0 -.2(bu)
 3.595 G 3.595(iltin. Assigning).2 F(to)3.595 E(GNU Bash-3.0)72 768 Q
-(2004 June 26)147.345 E(9)202.335 E 0 Cg EP
+(2004 Sep 17)149.01 E(9)204 E 0 Cg EP
 %%Page: 10 10
 %%BeginPageSetup
 BP
@@ -1387,7 +1386,7 @@ s the operating system on which)144 633.6 R F1(bash)2.829 E F0 .329
 (ground pipeline \(which may contain only a single command\).)-.15 E F1
 (PPID)108 703.2 Q F0(The process ID of the shell')12.67 E 2.5(sp)-.55 G
 2.5(arent. This)-2.5 F -.25(va)2.5 G(riable is readonly).25 E(.)-.65 E
-(GNU Bash-3.0)72 768 Q(2004 June 26)147.345 E(10)197.335 E 0 Cg EP
+(GNU Bash-3.0)72 768 Q(2004 Sep 17)149.01 E(10)199 E 0 Cg EP
 %%Page: 11 11
 %%BeginPageSetup
 BP
@@ -1488,7 +1487,7 @@ me e)-3.118 F(xpan-)-.15 E 3.131(sion. If)144 710.4 R 3.132<618c>3.131 G
 (xpansion pattern also matches one of the patterns in)-.15 F F2
 (GLOBIGNORE)144 722.4 Q F3(,)A F0(it is remo)2.25 E -.15(ve)-.15 G 2.5
 (df).15 G(rom the list of matches.)-2.5 E(GNU Bash-3.0)72 768 Q
-(2004 June 26)147.345 E(11)197.335 E 0 Cg EP
+(2004 Sep 17)149.01 E(11)199 E 0 Cg EP
 %%Page: 12 12
 %%BeginPageSetup
 BP
@@ -1610,7 +1609,7 @@ F3(EOF)2.5 E F0(signi\214es the end of input to the shell.)2.25 E F1
 3.936 G(adline).18 E F0 1.436(startup \214le, o)3.936 F -.15(ve)-.15 G
 1.436(rriding the def).15 F 1.436(ault of)-.1 F F2(~/.inputr)5.602 E(c)
 -.37 E F0(\(see)5.602 E F3(READLINE)3.936 E F0(belo)144 708 Q(w\).)-.25
-E(GNU Bash-3.0)72 768 Q(2004 June 26)147.345 E(12)197.335 E 0 Cg EP
+E(GNU Bash-3.0)72 768 Q(2004 Sep 17)149.01 E(12)199 E 0 Cg EP
 %%Page: 13 13
 %%BeginPageSetup
 BP
@@ -1713,7 +1712,7 @@ E F0(enables)2.5 E F4(posix mode)2.5 E F0 2.5(,a)C 2.5(si)-2.5 G 2.5(ft)
 (alue of this parameter is used as the prompt for the)-.25 F F1(select)
 3.615 E F0 1.116(command \(see)3.616 F F2 1.116(SHELL GRAM-)3.616 F(MAR)
 144 720 Q F0(abo)2.25 E -.15(ve)-.15 G(\).).15 E(GNU Bash-3.0)72 768 Q
-(2004 June 26)147.345 E(13)197.335 E 0 Cg EP
+(2004 Sep 17)149.01 E(13)199 E 0 Cg EP
 %%Page: 14 14
 %%BeginPageSetup
 BP
@@ -1831,7 +1830,7 @@ char)144 694.8 R(-)-.2 E 1.293(acter of a w)144 706.8 R 1.293
 (skipped for the remaining w)144 718.8 R .38(ords on the line.)-.1 F
 .379(It does not necessarily cause the shell parser to treat)5.379 F
 (the rest of the line as a comment.)144 730.8 Q(GNU Bash-3.0)72 768 Q
-(2004 June 26)147.345 E(14)197.335 E 0 Cg EP
+(2004 Sep 17)149.01 E(14)199 E 0 Cg EP
 %%Page: 15 15
 %%BeginPageSetup
 BP
@@ -1978,7 +1977,7 @@ resulting string, e)108 696 R .659(xpanding left to)-.15 F(right.)108
 708 Q .719(Brace e)108 724.8 R .719(xpansions may be nested.)-.15 F .719
 (The results of each e)5.719 F .719
 (xpanded string are not sorted; left to right order is)-.15 F
-(GNU Bash-3.0)72 768 Q(2004 June 26)147.345 E(15)197.335 E 0 Cg EP
+(GNU Bash-3.0)72 768 Q(2004 Sep 17)149.01 E(15)199 E 0 Cg EP
 %%Page: 16 16
 %%BeginPageSetup
 BP
@@ -2104,8 +2103,8 @@ F1($)A F0 4.106('c)C 1.606(haracter introduces parameter e)-4.106 F
 693.6 R F1(})A F0 3.69('n)C 1.19(ot escaped by a backslash or within a)
 -3.69 F .053(quoted string, and not within an embedded arithmetic e)108
 705.6 R .052(xpansion, command substitution, or paramter e)-.15 F(xpan-)
--.15 E(sion.)108 717.6 Q(GNU Bash-3.0)72 768 Q(2004 June 26)147.345 E
-(16)197.335 E 0 Cg EP
+-.15 E(sion.)108 717.6 Q(GNU Bash-3.0)72 768 Q(2004 Sep 17)149.01 E(16)
+199 E 0 Cg EP
 %%Page: 17 17
 %%BeginPageSetup
 BP
@@ -2229,8 +2228,8 @@ E -.25(va)144 700.8 S 1.749
 E F1(par)5.498 E(ameter)-.15 E F0 1.748(is an array name sub-)4.978 F
 (scripted by)144 712.8 Q F2(*)2.5 E F0(or)2.5 E F2(@)2.5 E F0 2.5(,t)C
 (he v)-2.5 E(alue substituted is the number of elements in the array)
--.25 E(.)-.65 E(GNU Bash-3.0)72 768 Q(2004 June 26)147.345 E(17)197.335
-E 0 Cg EP
+-.25 E(.)-.65 E(GNU Bash-3.0)72 768 Q(2004 Sep 17)149.01 E(17)199 E 0 Cg
+EP
 %%Page: 18 18
 %%BeginPageSetup
 BP
@@ -2344,8 +2343,8 @@ F F1(command).833 E F0 3.887(\)f)1.666 G 1.386
 (quotes with backslashes.)108 662.4 Q .422
 (If the substitution appears within double quotes, w)108 679.2 R .422
 (ord splitting and pathname e)-.1 F .422(xpansion are not performed)-.15
-F(on the results.)108 691.2 Q(GNU Bash-3.0)72 768 Q(2004 June 26)147.345
-E(18)197.335 E 0 Cg EP
+F(on the results.)108 691.2 Q(GNU Bash-3.0)72 768 Q(2004 Sep 17)149.01 E
+(18)199 E 0 Cg EP
 %%Page: 19 19
 %%BeginPageSetup
 BP
@@ -2487,8 +2486,8 @@ so matches one of the patterns in)4.265 F F3(GLOBIGNORE)4.515 E F0(is)
 (shell option, so all other \214le names be)108 724.8 R .614
 (ginning with a)-.15 F F1 -.63(``)3.114 G -.55(.').63 G(')-.08 E F0 .614
 (will match.)5.614 F 2.214 -.8(To g)5.614 H .614(et the old beha).8 F
-.614(vior of ignoring)-.2 F(GNU Bash-3.0)72 768 Q(2004 June 26)147.345 E
-(19)197.335 E 0 Cg EP
+.614(vior of ignoring)-.2 F(GNU Bash-3.0)72 768 Q(2004 Sep 17)149.01 E
+(19)199 E 0 Cg EP
 %%Page: 20 20
 %%BeginPageSetup
 BP
@@ -2596,7 +2595,7 @@ ted, and the \214rst character of the redirec-)-.25 F .365
 (tion operator is)108 728.4 R F1(<)2.865 E F0 2.865(,t)C .366
 (he redirection refers to the standard input \(\214le descriptor 0\).)
 -2.865 F .366(If the \214rst character of the)5.366 F(GNU Bash-3.0)72
-768 Q(2004 June 26)147.345 E(20)197.335 E 0 Cg EP
+768 Q(2004 Sep 17)149.01 E(20)199 E 0 Cg EP
 %%Page: 21 21
 %%BeginPageSetup
 BP
@@ -2691,8 +2690,8 @@ F0 .547(and the)3.047 F F1(noclob)3.047 E(ber)-.1 E F0 .547
 2.974(,o).24 G 2.974(rt)-2.974 G .474
 (he standard output \(\214le descriptor 1\) if)-2.974 F F2(n)3.333 E F0
 .473(is not speci\214ed.)3.213 F(If)5.473 E(the \214le does not e)108
-717.6 Q(xist it is created.)-.15 E(GNU Bash-3.0)72 768 Q(2004 June 26)
-147.345 E(21)197.335 E 0 Cg EP
+717.6 Q(xist it is created.)-.15 E(GNU Bash-3.0)72 768 Q(2004 Sep 17)
+149.01 E(21)199 E 0 Cg EP
 %%Page: 22 22
 %%BeginPageSetup
 BP
@@ -2775,8 +2774,8 @@ utput, a redirection error)4.627 F 2.597(occurs. As)108 676.8 R 2.597
 2.596 F .096(xpand to one or more digits, the standard out-)-.15 F
 (put and standard error are redirected as described pre)108 688.8 Q
 (viously)-.25 E(.)-.65 E F2(Mo)87 705.6 Q(ving File Descriptors)-.1 E F0
-(The redirection operator)108 717.6 Q(GNU Bash-3.0)72 768 Q
-(2004 June 26)147.345 E(22)197.335 E 0 Cg EP
+(The redirection operator)108 717.6 Q(GNU Bash-3.0)72 768 Q(2004 Sep 17)
+149.01 E(22)199 E 0 Cg EP
 %%Page: 23 23
 %%BeginPageSetup
 BP
@@ -2910,7 +2909,7 @@ E 1.961(TIN COM-)-.828 F(MANDS)108 727.2 Q F0(belo)2.343 E .092
 (w\) is not inherited unless the function has been gi)-.25 F -.15(ve)
 -.25 G 2.592(nt).15 G(he)-2.592 E F2(trace)2.592 E F0(attrib)2.592 E
 .092(ute \(see the description of)-.2 F(GNU Bash-3.0)72 768 Q
-(2004 June 26)147.345 E(23)197.335 E 0 Cg EP
+(2004 Sep 17)149.01 E(23)199 E 0 Cg EP
 %%Page: 24 24
 %%BeginPageSetup
 BP
@@ -3015,7 +3014,7 @@ F F2(declar)3.89 E 3.89(e-)-.18 G(i)-3.89 E F0(is)3.89 E .344
 .343(hell v)-2.843 F .343(ariable need not ha)-.25 F .643 -.15(ve i)-.2
 H .343(ts inte).15 F .343(ger attrib)-.15 F .343(ute turned on)-.2 F
 (to be used in an e)108 729.6 Q(xpression.)-.15 E(GNU Bash-3.0)72 768 Q
-(2004 June 26)147.345 E(24)197.335 E 0 Cg EP
+(2004 Sep 17)149.01 E(24)199 E 0 Cg EP
 %%Page: 25 25
 %%BeginPageSetup
 BP
@@ -3126,8 +3125,8 @@ F 1.144(See the list of options under the description of the)6.143 F F3
 -.35(Tr)144 674.4 S(ue if the length of).35 E F1(string)2.5 E F0
 (is zero.)2.5 E F1(string)108 686.4 Q F3<ad6e>108 698.4 Q F1(string)2.5
 E F0 -.35(Tr)144 710.4 S(ue if the length of).35 E F1(string)2.84 E F0
-(is non-zero.)2.72 E(GNU Bash-3.0)72 768 Q(2004 June 26)147.345 E(25)
-197.335 E 0 Cg EP
+(is non-zero.)2.72 E(GNU Bash-3.0)72 768 Q(2004 Sep 17)149.01 E(25)199 E
+0 Cg EP
 %%Page: 26 26
 %%BeginPageSetup
 BP
@@ -3235,7 +3234,7 @@ re slashes, the shell e)108 700.8 R -.15(xe)-.15 G 1.089(cutes the).15 F
 (n, and the remain-).15 F(ing ar)108 724.8 Q
 (guments to the command are set to the ar)-.18 E(guments gi)-.18 E -.15
 (ve)-.25 G(n, if an).15 E -.65(y.)-.15 G(GNU Bash-3.0)72 768 Q
-(2004 June 26)147.345 E(26)197.335 E 0 Cg EP
+(2004 Sep 17)149.01 E(26)199 E 0 Cg EP
 %%Page: 27 27
 %%BeginPageSetup
 BP
@@ -3339,7 +3338,7 @@ G 2.858(cation. Builtin).2 F .359(commands that are in)2.859 F -.2(vo)
 (.O)C .198(therwise, the in)-5.198 F -.2(vo)-.4 G -.1(ke).2 G 2.698(dc)
 .1 G .197(ommand inherits the \214le descriptors of the calling shell)
 -2.698 F(as modi\214ed by redirections.)108 724.8 Q(GNU Bash-3.0)72 768
-Q(2004 June 26)147.345 E(27)197.335 E 0 Cg EP
+Q(2004 Sep 17)149.01 E(27)199 E 0 Cg EP
 %%Page: 28 28
 %%BeginPageSetup
 BP
@@ -3462,17 +3461,19 @@ G .93(rom the)-3.43 F 1.357(jobs table with the)108 621.6 R F3(diso)
 (shell option has been set with)2.666 F F3(shopt)2.666 E F0(,)A F3(bash)
 2.666 E F0 .166(sends a)2.666 F F4(SIGHUP)2.666 E F0 .166
 (to all jobs when an interacti)2.416 F -.15(ve)-.25 G(login shell e)108
-662.4 Q(xits.)-.15 E .077
-(If 0for which a trap has been set, the trap will not be e)108 679.2 R
--.15(xe)-.15 G .076(cuted until the command completes.).15 F(When)5.076
-E F3(bash)2.576 E F0(is)2.576 E -.1(wa)108 691.2 S .826
-(iting for an asynchronous command via the).1 F F3(wait)3.326 E F0 -.2
-(bu)3.326 G .826(iltin, the reception of a signal for which a trap has)
-.2 F .37(been set will cause the)108 703.2 R F3(wait)2.87 E F0 -.2(bu)
-2.87 G .369(iltin to return immediately with an e).2 F .369
-(xit status greater than 128, immediately)-.15 F
-(after which the trap is e)108 715.2 Q -.15(xe)-.15 G(cuted.).15 E
-(GNU Bash-3.0)72 768 Q(2004 June 26)147.345 E(28)197.335 E 0 Cg EP
+662.4 Q(xits.)-.15 E(If)108 679.2 Q F3(bash)3.047 E F0 .547(is w)3.047 F
+.546(aiting for a command to complete and recei)-.1 F -.15(ve)-.25 G
+3.046(sas).15 G .546(ignal for which a trap has been set, the trap)
+-3.046 F .662(will not be e)108 691.2 R -.15(xe)-.15 G .662
+(cuted until the command completes.).15 F(When)5.663 E F3(bash)3.163 E
+F0 .663(is w)3.163 F .663(aiting for an asynchronous command)-.1 F .99
+(via the)108 703.2 R F3(wait)3.49 E F0 -.2(bu)3.49 G .99(iltin, the rec\
+eption of a signal for which a trap has been set will cause the).2 F F3
+(wait)3.49 E F0 -.2(bu)3.49 G .99(iltin to).2 F
+(return immediately with an e)108 715.2 Q
+(xit status greater than 128, immediately after which the trap is e)-.15
+E -.15(xe)-.15 G(cuted.).15 E(GNU Bash-3.0)72 768 Q(2004 Sep 17)149.01 E
+(28)199 E 0 Cg EP
 %%Page: 29 29
 %%BeginPageSetup
 BP
@@ -3607,8 +3608,8 @@ F0 .645(displays the primary prompt)3.145 F F4(PS1)3.145 E F0 .645
 (when it needs more input to complete a command.)4.075 F F3(Bash)6.826 E
 F0(allo)4.326 E 1.826(ws these)-.25 F 1.499(prompt strings to be custom\
 ized by inserting a number of backslash-escaped special characters that\
- are)108 720 R(GNU Bash-3.0)72 768 Q(2004 June 26)147.345 E(29)197.335 E
-0 Cg EP
+ are)108 720 R(GNU Bash-3.0)72 768 Q(2004 Sep 17)149.01 E(29)199 E 0 Cg
+EP
 %%Page: 30 30
 %%BeginPageSetup
 BP
@@ -3714,8 +3715,8 @@ F2 -.1(ke)C(y)-.2 E F0 3.652(,s)C 3.652(oM)-3.652 G 1.152
 1.018(auses that command to act in a backw)-3.518 F 1.019
 (ard direction.)-.1 F(Com-)6.019 E(mands whose beha)108 715.2 Q
 (vior with ar)-.2 E(guments de)-.18 E(viates from this are noted belo)
--.25 E -.65(w.)-.25 G(GNU Bash-3.0)72 768 Q(2004 June 26)147.345 E(30)
-197.335 E 0 Cg EP
+-.25 E -.65(w.)-.25 G(GNU Bash-3.0)72 768 Q(2004 Sep 17)149.01 E(30)199
+E 0 Cg EP
 %%Page: 31 31
 %%BeginPageSetup
 BP
@@ -3822,8 +3823,8 @@ G(rsal\255ar).1 E(gument)-.1 E F0(.)A F1 .315(C\255x C\255r)5.155 F F0
 (Function Key 1)2.5 E F0(.)A
 (The full set of GNU Emacs style escape sequences is)108 693.6 Q F2
 <5c43ad>144 705.6 Q F0(control pre\214x)20.3 E F2<5c4dad>144 717.6 Q F0
-(meta pre\214x)18.08 E(GNU Bash-3.0)72 768 Q(2004 June 26)147.345 E(31)
-197.335 E 0 Cg EP
+(meta pre\214x)18.08 E(GNU Bash-3.0)72 768 Q(2004 Sep 17)149.01 E(31)199
+E 0 Cg EP
 %%Page: 32 32
 %%BeginPageSetup
 BP
@@ -3913,7 +3914,7 @@ F0(.)A F1(editing\255mode \(emacs\))108 705.6 Q F0 .252
 F .553 -.15(ey b)-.1 H .253(indings similar to).15 F F2(emacs)2.753 E F0
 (or)2.753 E F2(vi)2.753 E F0(.)A F1(editing\255mode)5.253 E F0
 (can be set to either)144 729.6 Q F1(emacs)2.5 E F0(or)2.5 E F1(vi)2.5 E
-F0(.)A(GNU Bash-3.0)72 768 Q(2004 June 26)147.345 E(32)197.335 E 0 Cg EP
+F0(.)A(GNU Bash-3.0)72 768 Q(2004 Sep 17)149.01 E(32)199 E 0 Cg EP
 %%Page: 33 33
 %%BeginPageSetup
 BP
@@ -4011,7 +4012,7 @@ isted immediately instead of ringing the)144 648 R(bell.)144 660 Q F1
 (ossible partial completion \(the possible completions don')-3.539 F
 3.539(ts)-.18 G 1.04(hare a common pre\214x\))-3.539 F(cause the matche\
 s to be listed immediately instead of ringing the bell.)144 720 Q
-(GNU Bash-3.0)72 768 Q(2004 June 26)147.345 E(33)197.335 E 0 Cg EP
+(GNU Bash-3.0)72 768 Q(2004 Sep 17)149.01 E(33)199 E 0 Cg EP
 %%Page: 34 34
 %%BeginPageSetup
 BP
@@ -4115,7 +4116,7 @@ F -.15(xe)-.15 G .175(cute that command.).15 F -.15(Fo)5.175 G(r).15 E
 .541(instance, a)108 724.8 R F2(ne)3.041 E(wline)-.15 E F0 .541
 (will terminate the search and accept the line, thereby e)3.041 F -.15
 (xe)-.15 G .54(cuting the command from the).15 F(GNU Bash-3.0)72 768 Q
-(2004 June 26)147.345 E(34)197.335 E 0 Cg EP
+(2004 Sep 17)149.01 E(34)199 E 0 Cg EP
 %%Page: 35 35
 %%BeginPageSetup
 BP
@@ -4198,8 +4199,7 @@ F(.)-.65 E(This is an incremental search.)144 684 Q F1(non\255incr)108
 (ch\255history \(M\255p\))-.18 E F0 .164(Search backw)144 708 R .164(ar\
 d through the history starting at the current line using a non-incremen\
 tal search for)-.1 F 2.5(as)144 720 S(tring supplied by the user)-2.5 E
-(.)-.55 E(GNU Bash-3.0)72 768 Q(2004 June 26)147.345 E(35)197.335 E 0 Cg
-EP
+(.)-.55 E(GNU Bash-3.0)72 768 Q(2004 Sep 17)149.01 E(35)199 E 0 Cg EP
 %%Page: 36 36
 %%BeginPageSetup
 BP
@@ -4297,7 +4297,7 @@ A F1(backward\255delete\255char \(Rubout\))108 616.8 Q F0 .552
 (erbatim. This)-.15 F .779(is ho)3.279 F 3.279(wt)-.25 G 3.279(oi)-3.279
 G .779(nsert characters lik)-3.279 F(e)-.1 E F1(C\255q)3.279 E F0 3.279
 (,f)C(or)-3.279 E -.15(ex)144 712.8 S(ample.).15 E(GNU Bash-3.0)72 768 Q
-(2004 June 26)147.345 E(36)197.335 E 0 Cg EP
+(2004 Sep 17)149.01 E(36)199 E 0 Cg EP
 %%Page: 37 37
 %%BeginPageSetup
 BP
@@ -4388,7 +4388,7 @@ F 5.364(.T)-.65 G .364(he killed te)-5.364 F .364(xt is sa)-.15 F -.15
 -.15 E(gion.)-.15 E F1(copy\255r)108 700.8 Q(egion\255as\255kill)-.18 E
 F0(Cop)144 712.8 Q 2.5(yt)-.1 G(he te)-2.5 E(xt in the re)-.15 E
 (gion to the kill b)-.15 E(uf)-.2 E(fer)-.25 E(.)-.55 E(GNU Bash-3.0)72
-768 Q(2004 June 26)147.345 E(37)197.335 E 0 Cg EP
+768 Q(2004 Sep 17)149.01 E(37)199 E 0 Cg EP
 %%Page: 38 38
 %%BeginPageSetup
 BP
@@ -4486,7 +4486,7 @@ F0(List the possible completions of the te)144 657.6 Q
 108 693.6 Q(name\255completions \(C\255x ~\))-.15 E F0
 (List the possible completions of the te)144 705.6 Q
 (xt before point, treating it as a username.)-.15 E(GNU Bash-3.0)72 768
-Q(2004 June 26)147.345 E(38)197.335 E 0 Cg EP
+Q(2004 Sep 17)149.01 E(38)199 E 0 Cg EP
 %%Page: 39 39
 %%BeginPageSetup
 BP
@@ -4570,7 +4570,7 @@ F0 1.095(command enough times to)3.595 F
 (The current cursor position is set to the sa)5.283 F -.15(ve)-.2 G
 2.783(dp).15 G .283(osition, and the old)-2.783 F(cursor position is sa)
 144 705.6 Q -.15(ve)-.2 G 2.5(da).15 G 2.5(st)-2.5 G(he mark.)-2.5 E
-(GNU Bash-3.0)72 768 Q(2004 June 26)147.345 E(39)197.335 E 0 Cg EP
+(GNU Bash-3.0)72 768 Q(2004 Sep 17)149.01 E(39)199 E 0 Cg EP
 %%Page: 40 40
 %%BeginPageSetup
 BP
@@ -4680,8 +4680,7 @@ R .463(Only matches which are pre\214x)5.464 F .463(ed by the w)-.15 F
 .085(ompletions speci\214ed by a \214lename e)-2.585 F .085
 (xpansion pattern to the)-.15 F F1<ad47>2.585 E F0 .085
 (option are generated ne)2.585 F 2.585(xt. The)-.15 F -.1(wo)2.585 G
-(rds).1 E(GNU Bash-3.0)72 768 Q(2004 June 26)147.345 E(40)197.335 E 0 Cg
-EP
+(rds).1 E(GNU Bash-3.0)72 768 Q(2004 Sep 17)149.01 E(40)199 E 0 Cg EP
 %%Page: 41 41
 %%BeginPageSetup
 BP
@@ -4825,7 +4824,7 @@ S 4.065(ta).2 G 1.565(fter history e)-4.065 F 1.565
 (xpansion is performed, subject to the v)-.15 F 1.565
 (alues of the shell v)-.25 F(ariables)-.25 E F1(HISTIGNORE)4.065 E F0
 (and)3.816 E F1(HISTCONTR)108 724.8 Q(OL)-.27 E F3(.)A F0(GNU Bash-3.0)
-72 768 Q(2004 June 26)147.345 E(41)197.335 E 0 Cg EP
+72 768 Q(2004 Sep 17)149.01 E(41)199 E 0 Cg EP
 %%Page: 42 42
 %%BeginPageSetup
 BP
@@ -4966,7 +4965,7 @@ Q F4(histchars)2.5 E F0(abo)2.5 E .3 -.15(ve u)-.15 H(nder).15 E F4
 (Shell V)2.5 E(ariables)-.92 E F0(\).)A F4(Ev)87 703.2 Q
 (ent Designators)-.1 E F0(An e)108 715.2 Q -.15(ve)-.25 G(nt designator\
  is a reference to a command line entry in the history list.).15 E
-(GNU Bash-3.0)72 768 Q(2004 June 26)147.345 E(42)197.335 E 0 Cg EP
+(GNU Bash-3.0)72 768 Q(2004 Sep 17)149.01 E(42)199 E 0 Cg EP
 %%Page: 43 43
 %%BeginPageSetup
 BP
@@ -5072,7 +5071,7 @@ F1(/)A F0 1.218('\) or `)B F1(:&)A F0 3.718('. If)B 1.218(used with `)
 (delimiter is optional if it is the last character of the e)144 696 R
 -.15(ve)-.25 G .089(nt line.).15 F(An)5.089 E F1(a)2.589 E F0 .089
 (may be used as a synon)2.589 F .089(ym for)-.15 F F1(g)144 708 Q F0(.)A
-(GNU Bash-3.0)72 768 Q(2004 June 26)147.345 E(43)197.335 E 0 Cg EP
+(GNU Bash-3.0)72 768 Q(2004 Sep 17)149.01 E(43)199 E 0 Cg EP
 %%Page: 44 44
 %%BeginPageSetup
 BP
@@ -5197,7 +5196,7 @@ F1 -.18(re)2.5 G(adline).18 E F0(function names and bindings.)2.5 E F1
 G 1.155(equences bound to macros and the strings the)-3.655 F 3.655(yo)
 -.15 G 1.155(utput in such a)-3.655 F -.1(wa)180 726 S 2.5(yt).1 G
 (hat the)-2.5 E 2.5(yc)-.15 G(an be re-read.)-2.5 E(GNU Bash-3.0)72 768
-Q(2004 June 26)147.345 E(44)197.335 E 0 Cg EP
+Q(2004 Sep 17)149.01 E(44)199 E 0 Cg EP
 %%Page: 45 45
 %%BeginPageSetup
 BP
@@ -5323,7 +5322,7 @@ F1<ad56>144 664.8 Q F0 .249(option produces a more v)2.749 F .249
 (xit status is 127.)-.15 F 1.599(Otherwise, the e)6.599 F 1.599
 (xit status of the)-.15 F F1(command)4.099 E F0 -.2(bu)144 700.8 S
 (iltin is the e).2 E(xit status of)-.15 E F2(command)2.5 E F0(.).77 E
-(GNU Bash-3.0)72 768 Q(2004 June 26)147.345 E(45)197.335 E 0 Cg EP
+(GNU Bash-3.0)72 768 Q(2004 Sep 17)149.01 E(45)199 E 0 Cg EP
 %%Page: 46 46
 %%BeginPageSetup
 BP
@@ -5403,1875 +5402,1884 @@ F(ing trailing spaces\).)224 556.8 Q
 (Intended to be used with shell functions.)5 E F1(nospace)184 568.8 Q F0
 -.7(Te)6.11 G .22(ll readline not to append a space \(the def).7 F .22
 (ault\) to w)-.1 F .22(ords completed at the end)-.1 F(of the line.)224
-580.8 Q F1<ad41>144 592.8 Q F2(action)2.5 E F0(The)184 604.8 Q F2
+580.8 Q F1(plusdirs)184 592.8 Q F0 1.985(After an)5.54 F 4.485(ym)-.15 G
+1.985(atches de\214ned by the compspec are generated, directory name)
+-4.485 F .584(completion is attempted and an)224 604.8 R 3.084(ym)-.15 G
+.584(atches are added to the results of the other)-3.084 F(actions.)224
+616.8 Q F1<ad41>144 628.8 Q F2(action)2.5 E F0(The)184 640.8 Q F2
 (action)2.5 E F0(may be one of the follo)2.5 E
 (wing to generate a list of possible completions:)-.25 E F1(alias)184
-616.8 Q F0(Alias names.)20.55 E(May also be speci\214ed as)5 E F1<ad61>
-2.5 E F0(.)A F1(arrayv)184 628.8 Q(ar)-.1 E F0(Array v)224 640.8 Q
-(ariable names.)-.25 E F1 4.7(binding Readline)184 652.8 R F0 -.1(ke)2.5
-G 2.5(yb)-.05 G(inding names.)-2.5 E F1 -.2(bu)184 664.8 S(iltin).2 E F0
+652.8 Q F0(Alias names.)20.55 E(May also be speci\214ed as)5 E F1<ad61>
+2.5 E F0(.)A F1(arrayv)184 664.8 Q(ar)-.1 E F0(Array v)224 676.8 Q
+(ariable names.)-.25 E F1 4.7(binding Readline)184 688.8 R F0 -.1(ke)2.5
+G 2.5(yb)-.05 G(inding names.)-2.5 E F1 -.2(bu)184 700.8 S(iltin).2 E F0
 (Names of shell b)11.85 E(uiltin commands.)-.2 E
-(May also be speci\214ed as)5 E F1<ad62>2.5 E F0(.)A F1(command)184
-676.8 Q F0(Command names.)224 688.8 Q(May also be speci\214ed as)5 E F1
-<ad63>2.5 E F0(.)A F1(dir)184 700.8 Q(ectory)-.18 E F0(Directory names.)
-224 712.8 Q(May also be speci\214ed as)5 E F1<ad64>2.5 E F0(.)A
-(GNU Bash-3.0)72 768 Q(2004 June 26)147.345 E(46)197.335 E 0 Cg EP
+(May also be speci\214ed as)5 E F1<ad62>2.5 E F0(.)A(GNU Bash-3.0)72 768
+Q(2004 Sep 17)149.01 E(46)199 E 0 Cg EP
 %%Page: 47 47
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\))
--.35 E/F1 10/Times-Bold@0 SF(disabled)184 84 Q F0
-(Names of disabled shell b)224 96 Q(uiltins.)-.2 E F1(enabled)184 108 Q
-F0(Names of enabled shell b)6.66 E(uiltins.)-.2 E F1(export)184 120 Q F0
+-.35 E/F1 10/Times-Bold@0 SF(command)184 84 Q F0(Command names.)224 96 Q
+(May also be speci\214ed as)5 E F1<ad63>2.5 E F0(.)A F1(dir)184 108 Q
+(ectory)-.18 E F0(Directory names.)224 120 Q(May also be speci\214ed as)
+5 E F1<ad64>2.5 E F0(.)A F1(disabled)184 132 Q F0
+(Names of disabled shell b)224 144 Q(uiltins.)-.2 E F1(enabled)184 156 Q
+F0(Names of enabled shell b)6.66 E(uiltins.)-.2 E F1(export)184 168 Q F0
 (Names of e)12.23 E(xported shell v)-.15 E 2.5(ariables. May)-.25 F
-(also be speci\214ed as)2.5 E F1<ad65>2.5 E F0(.)A F1(\214le)184 132 Q
+(also be speci\214ed as)2.5 E F1<ad65>2.5 E F0(.)A F1(\214le)184 180 Q
 F0(File names.)27.22 E(May also be speci\214ed as)5 E F1<ad66>2.5 E F0
-(.)A F1(function)184 144 Q F0(Names of shell functions.)224 156 Q F1(gr)
-184 168 Q(oup)-.18 E F0(Group names.)14.62 E(May also be speci\214ed as)
-5 E F1<ad67>2.5 E F0(.)A F1(helptopic)184 180 Q F0
-(Help topics as accepted by the)224 192 Q F1(help)2.5 E F0 -.2(bu)2.5 G
-(iltin.).2 E F1(hostname)184 204 Q F0(Hostnames, as tak)224 216 Q
+(.)A F1(function)184 192 Q F0(Names of shell functions.)224 204 Q F1(gr)
+184 216 Q(oup)-.18 E F0(Group names.)14.62 E(May also be speci\214ed as)
+5 E F1<ad67>2.5 E F0(.)A F1(helptopic)184 228 Q F0
+(Help topics as accepted by the)224 240 Q F1(help)2.5 E F0 -.2(bu)2.5 G
+(iltin.).2 E F1(hostname)184 252 Q F0(Hostnames, as tak)224 264 Q
 (en from the \214le speci\214ed by the)-.1 E/F2 9/Times-Bold@0 SF
-(HOSTFILE)2.5 E F0(shell v)2.25 E(ariable.)-.25 E F1(job)184 228 Q F0
+(HOSTFILE)2.5 E F0(shell v)2.25 E(ariable.)-.25 E F1(job)184 276 Q F0
 (Job names, if job control is acti)26.11 E -.15(ve)-.25 G 5(.M).15 G
-(ay also be speci\214ed as)-5 E F1<ad6a>2.5 E F0(.)A F1 -.1(ke)184 240 S
-(yw).1 E(ord)-.1 E F0(Shell reserv)224 252 Q(ed w)-.15 E 2.5(ords. May)
+(ay also be speci\214ed as)-5 E F1<ad6a>2.5 E F0(.)A F1 -.1(ke)184 288 S
+(yw).1 E(ord)-.1 E F0(Shell reserv)224 300 Q(ed w)-.15 E 2.5(ords. May)
 -.1 F(also be speci\214ed as)2.5 E F1<ad6b>2.5 E F0(.)A F1(running)184
-264 Q F0(Names of running jobs, if job control is acti)5.54 E -.15(ve)
--.25 G(.).15 E F1(ser)184 276 Q(vice)-.1 E F0(Service names.)10.67 E
-(May also be speci\214ed as)5 E F1<ad73>2.5 E F0(.)A F1(setopt)184 288 Q
+312 Q F0(Names of running jobs, if job control is acti)5.54 E -.15(ve)
+-.25 G(.).15 E F1(ser)184 324 Q(vice)-.1 E F0(Service names.)10.67 E
+(May also be speci\214ed as)5 E F1<ad73>2.5 E F0(.)A F1(setopt)184 336 Q
 F0 -1.11(Va)14.45 G(lid ar)1.11 E(guments for the)-.18 E F1<ad6f>2.5 E
 F0(option to the)2.5 E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1
-(shopt)184 300 Q F0(Shell option names as accepted by the)16.66 E F1
-(shopt)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(signal)184 312 Q F0
-(Signal names.)14.99 E F1(stopped)184 324 Q F0
+(shopt)184 348 Q F0(Shell option names as accepted by the)16.66 E F1
+(shopt)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(signal)184 360 Q F0
+(Signal names.)14.99 E F1(stopped)184 372 Q F0
 (Names of stopped jobs, if job control is acti)6.66 E -.15(ve)-.25 G(.)
-.15 E F1(user)184 336 Q F0(User names.)21.67 E
-(May also be speci\214ed as)5 E F1<ad75>2.5 E F0(.)A F1 -.1(va)184 348 S
+.15 E F1(user)184 384 Q F0(User names.)21.67 E
+(May also be speci\214ed as)5 E F1<ad75>2.5 E F0(.)A F1 -.1(va)184 396 S
 (riable).1 E F0(Names of all shell v)5.1 E 2.5(ariables. May)-.25 F
-(also be speci\214ed as)2.5 E F1<ad76>2.5 E F0(.)A F1<ad47>144 360 Q/F3
-10/Times-Italic@0 SF(globpat)2.5 E F0 1.41(The \214lename e)184 372 R
+(also be speci\214ed as)2.5 E F1<ad76>2.5 E F0(.)A F1<ad47>144 408 Q/F3
+10/Times-Italic@0 SF(globpat)2.5 E F0 1.41(The \214lename e)184 420 R
 1.411(xpansion pattern)-.15 F F3(globpat)3.911 E F0 1.411(is e)3.911 F
-1.411(xpanded to generate the possible comple-)-.15 F(tions.)184 384 Q
-F1<ad57>144 396 Q F3(wor)2.5 E(dlist)-.37 E F0(The)184 408 Q F3(wor)3.64
+1.411(xpanded to generate the possible comple-)-.15 F(tions.)184 432 Q
+F1<ad57>144 444 Q F3(wor)2.5 E(dlist)-.37 E F0(The)184 456 Q F3(wor)3.64
 E(dlist)-.37 E F0 1.14(is split using the characters in the)3.64 F F2
 (IFS)3.64 E F0 1.139(special v)3.39 F 1.139(ariable as delimiters, and)
--.25 F 2.007(each resultant w)184 420 R 2.007(ord is e)-.1 F 4.507
+-.25 F 2.007(each resultant w)184 468 R 2.007(ord is e)-.1 F 4.507
 (xpanded. The)-.15 F 2.008(possible completions are the members of the)
-4.507 F(resultant list which match the w)184 432 Q(ord being completed.)
--.1 E F1<ad43>144 444 Q F3(command)2.5 E(command)184 456 Q F0 1.056
+4.507 F(resultant list which match the w)184 480 Q(ord being completed.)
+-.1 E F1<ad43>144 492 Q F3(command)2.5 E(command)184 504 Q F0 1.056
 (is e)3.556 F -.15(xe)-.15 G 1.056(cuted in a subshell en).15 F 1.056
 (vironment, and its output is used as the possible)-.4 F(completions.)
-184 468 Q F1<ad46>144 480 Q F3(function)2.5 E F0 1.18
-(The shell function)184 492 R F3(function)3.68 E F0 1.181(is e)3.681 F
+184 516 Q F1<ad46>144 528 Q F3(function)2.5 E F0 1.18
+(The shell function)184 540 R F3(function)3.68 E F0 1.181(is e)3.681 F
 -.15(xe)-.15 G 1.181(cuted in the current shell en).15 F 3.681
 (vironment. When)-.4 F 1.181(it \214n-)3.681 F .932
-(ishes, the possible completions are retrie)184 504 R -.15(ve)-.25 G
+(ishes, the possible completions are retrie)184 552 R -.15(ve)-.25 G
 3.432(df).15 G .932(rom the v)-3.432 F .932(alue of the)-.25 F F2
-(COMPREPL)3.431 E(Y)-.828 E F0(array)3.181 E -.25(va)184 516 S(riable.)
-.25 E F1<ad58>144 528 Q F3(\214lterpat)2.5 E(\214lterpat)184 540 Q F0
+(COMPREPL)3.431 E(Y)-.828 E F0(array)3.181 E -.25(va)184 564 S(riable.)
+.25 E F1<ad58>144 576 Q F3(\214lterpat)2.5 E(\214lterpat)184 588 Q F0
 .733(is a pattern as used for \214lename e)3.233 F 3.233(xpansion. It)
 -.15 F .733(is applied to the list of possible)3.233 F 1.596
-(completions generated by the preceding options and ar)184 552 R 1.596
-(guments, and each completion)-.18 F(matching)184 564 Q F3(\214lterpat)
+(completions generated by the preceding options and ar)184 600 R 1.596
+(guments, and each completion)-.18 F(matching)184 612 Q F3(\214lterpat)
 3.204 E F0 .704(is remo)3.204 F -.15(ve)-.15 G 3.204(df).15 G .704
 (rom the list.)-3.204 F 3.204(Al)5.704 G(eading)-3.204 E F1(!)3.204 E F0
 (in)3.204 E F3(\214lterpat)3.205 E F0(ne)3.205 E -.05(ga)-.15 G .705
-(tes the pattern;).05 F(in this case, an)184 576 Q 2.5(yc)-.15 G
+(tes the pattern;).05 F(in this case, an)184 624 Q 2.5(yc)-.15 G
 (ompletion not matching)-2.5 E F3(\214lterpat)2.5 E F0(is remo)2.5 E
--.15(ve)-.15 G(d.).15 E F1<ad50>144 588 Q F3(pr)2.5 E(e\214x)-.37 E(pr)
-184 600 Q(e\214x)-.37 E F0 .535(is added at the be)3.035 F .534
+-.15(ve)-.15 G(d.).15 E F1<ad50>144 636 Q F3(pr)2.5 E(e\214x)-.37 E(pr)
+184 648 Q(e\214x)-.37 E F0 .535(is added at the be)3.035 F .534
 (ginning of each possible completion after all other options ha)-.15 F
--.15(ve)-.2 G(been applied.)184 612 Q F1<ad53>144 624 Q F3(suf)2.5 E
+-.15(ve)-.2 G(been applied.)184 660 Q F1<ad53>144 672 Q F3(suf)2.5 E
 2.81(\214x suf)-.18 F<8c78>-.18 E F0
 (is appended to each possible completion after all other options ha)2.5
-E .3 -.15(ve b)-.2 H(een applied.).15 E .466(The return v)144 640.8 R
+E .3 -.15(ve b)-.2 H(een applied.).15 E .466(The return v)144 688.8 R
 .466(alue is true unless an in)-.25 F -.25(va)-.4 G .466
 (lid option is supplied, an option other than).25 F F1<ad70>2.967 E F0
 (or)2.967 E F1<ad72>2.967 E F0 .467(is sup-)2.967 F 1.362
-(plied without a)144 652.8 R F3(name)3.862 E F0(ar)3.862 E 1.361
+(plied without a)144 700.8 R F3(name)3.862 E F0(ar)3.862 E 1.361
 (gument, an attempt is made to remo)-.18 F 1.661 -.15(ve a c)-.15 H
-1.361(ompletion speci\214cation for a).15 F F3(name)144 664.8 Q F0
+1.361(ompletion speci\214cation for a).15 F F3(name)144 712.8 Q F0
 (for which no speci\214cation e)2.5 E
 (xists, or an error occurs adding a completion speci\214cation.)-.15 E
-F1(continue)108 681.6 Q F0([)2.5 E F3(n)A F0(])A 1.753(Resume the ne)144
-693.6 R 1.753(xt iteration of the enclosing)-.15 F F1 -.25(fo)4.254 G(r)
-.25 E F0(,)A F1(while)4.254 E F0(,)A F1(until)4.254 E F0 4.254(,o)C(r)
--4.254 E F1(select)4.254 E F0 4.254(loop. If)4.254 F F3(n)4.614 E F0
-1.754(is speci\214ed,)4.494 F 1.209(resume at the)144 705.6 R F3(n)3.709
-E F0 1.209(th enclosing loop.)B F3(n)6.569 E F0 1.209(must be)3.949 F/F4
-10/Symbol SF<b3>3.709 E F0 3.709(1. If)3.709 F F3(n)4.069 E F0 1.209
-(is greater than the number of enclosing)3.949 F .667
-(loops, the last enclosing loop \(the `)144 717.6 R(`top-le)-.74 E -.15
-(ve)-.25 G(l').15 E 3.167('l)-.74 G .667(oop\) is resumed.)-3.167 F .668
-(The return v)5.668 F .668(alue is 0 unless the)-.25 F(shell is not e)
-144 729.6 Q -.15(xe)-.15 G(cuting a loop when).15 E F1(continue)2.5 E F0
-(is e)2.5 E -.15(xe)-.15 G(cuted.).15 E(GNU Bash-3.0)72 768 Q
-(2004 June 26)147.345 E(47)197.335 E 0 Cg EP
+(GNU Bash-3.0)72 768 Q(2004 Sep 17)149.01 E(47)199 E 0 Cg EP
 %%Page: 48 48
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\))
--.35 E/F1 10/Times-Bold@0 SF(declar)108 84 Q(e)-.18 E F0([)2.5 E F1
-(\255afFirtx)A F0 2.5(][)C F1<ad70>-2.5 E F0 2.5(][)C/F2 10
-/Times-Italic@0 SF(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C(..])-2.5 E
-F1(typeset)108 96 Q F0([)2.5 E F1(\255afFirtx)A F0 2.5(][)C F1<ad70>-2.5
-E F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C(..])-2.5 E
-1.265(Declare v)144 108 R 1.265(ariables and/or gi)-.25 F 1.565 -.15
-(ve t)-.25 H 1.265(hem attrib).15 F 3.765(utes. If)-.2 F(no)3.765 E F2
-(name)3.765 E F0 3.765(sa)C 1.265(re gi)-3.765 F -.15(ve)-.25 G 3.764
-(nt).15 G 1.264(hen display the v)-3.764 F 1.264(alues of)-.25 F -.25
-(va)144 120 S 3.326(riables. The).25 F F1<ad70>3.326 E F0 .826
+-.35 E/F1 10/Times-Bold@0 SF(continue)108 84 Q F0([)2.5 E/F2 10
+/Times-Italic@0 SF(n)A F0(])A 1.753(Resume the ne)144 96 R 1.753
+(xt iteration of the enclosing)-.15 F F1 -.25(fo)4.254 G(r).25 E F0(,)A
+F1(while)4.254 E F0(,)A F1(until)4.254 E F0 4.254(,o)C(r)-4.254 E F1
+(select)4.254 E F0 4.254(loop. If)4.254 F F2(n)4.614 E F0 1.754
+(is speci\214ed,)4.494 F 1.209(resume at the)144 108 R F2(n)3.709 E F0
+1.209(th enclosing loop.)B F2(n)6.569 E F0 1.209(must be)3.949 F/F3 10
+/Symbol SF<b3>3.709 E F0 3.709(1. If)3.709 F F2(n)4.069 E F0 1.209
+(is greater than the number of enclosing)3.949 F .667
+(loops, the last enclosing loop \(the `)144 120 R(`top-le)-.74 E -.15
+(ve)-.25 G(l').15 E 3.167('l)-.74 G .667(oop\) is resumed.)-3.167 F .668
+(The return v)5.668 F .668(alue is 0 unless the)-.25 F(shell is not e)
+144 132 Q -.15(xe)-.15 G(cuting a loop when).15 E F1(continue)2.5 E F0
+(is e)2.5 E -.15(xe)-.15 G(cuted.).15 E F1(declar)108 148.8 Q(e)-.18 E
+F0([)2.5 E F1(\255afFirtx)A F0 2.5(][)C F1<ad70>-2.5 E F0 2.5(][)C F2
+(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C(..])-2.5 E F1(typeset)108
+160.8 Q F0([)2.5 E F1(\255afFirtx)A F0 2.5(][)C F1<ad70>-2.5 E F0 2.5
+(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C(..])-2.5 E 1.265
+(Declare v)144 172.8 R 1.265(ariables and/or gi)-.25 F 1.565 -.15(ve t)
+-.25 H 1.265(hem attrib).15 F 3.765(utes. If)-.2 F(no)3.765 E F2(name)
+3.765 E F0 3.765(sa)C 1.265(re gi)-3.765 F -.15(ve)-.25 G 3.764(nt).15 G
+1.264(hen display the v)-3.764 F 1.264(alues of)-.25 F -.25(va)144 184.8
+S 3.326(riables. The).25 F F1<ad70>3.326 E F0 .826
 (option will display the attrib)3.326 F .826(utes and v)-.2 F .826
 (alues of each)-.25 F F2(name)3.326 E F0 5.827(.W).18 G(hen)-5.827 E F1
 <ad70>3.327 E F0 .827(is used,)3.327 F .22
-(additional options are ignored.)144 132 R(The)5.22 E F1<ad46>2.72 E F0
-.22(option inhibits the display of function de\214nitions; only the)2.72
-F .466(function name and attrib)144 144 R .466(utes are printed.)-.2 F
-.466(If the)5.466 F F1(extdeb)2.966 E(ug)-.2 E F0 .466
+(additional options are ignored.)144 196.8 R(The)5.22 E F1<ad46>2.72 E
+F0 .22(option inhibits the display of function de\214nitions; only the)
+2.72 F .466(function name and attrib)144 208.8 R .466(utes are printed.)
+-.2 F .466(If the)5.466 F F1(extdeb)2.966 E(ug)-.2 E F0 .466
 (shell option is enabled using)2.966 F F1(shopt)2.966 E F0 2.966(,t)C
 (he)-2.966 E 1.308(source \214le name and line number where the functio\
-n is de\214ned are displayed as well.)144 156 R(The)6.308 E F1<ad46>
-3.808 E F0 .19(option implies)144 168 R F1<ad66>2.69 E F0 5.19(.T)C .19
-(he follo)-5.19 F .191(wing options can be used to restrict output to v)
--.25 F .191(ariables with the speci-)-.25 F(\214ed attrib)144 180 Q
-(ute or to gi)-.2 E .3 -.15(ve v)-.25 H(ariables attrib)-.1 E(utes:)-.2
-E F1<ad61>144 192 Q F0(Each)25.3 E F2(name)2.5 E F0(is an array v)2.5 E
+n is de\214ned are displayed as well.)144 220.8 R(The)6.308 E F1<ad46>
+3.808 E F0 .19(option implies)144 232.8 R F1<ad66>2.69 E F0 5.19(.T)C
+.19(he follo)-5.19 F .191
+(wing options can be used to restrict output to v)-.25 F .191
+(ariables with the speci-)-.25 F(\214ed attrib)144 244.8 Q(ute or to gi)
+-.2 E .3 -.15(ve v)-.25 H(ariables attrib)-.1 E(utes:)-.2 E F1<ad61>144
+256.8 Q F0(Each)25.3 E F2(name)2.5 E F0(is an array v)2.5 E
 (ariable \(see)-.25 E F1(Arrays)2.5 E F0(abo)2.5 E -.15(ve)-.15 G(\).)
-.15 E F1<ad66>144 204 Q F0(Use function names only)26.97 E(.)-.65 E F1
-<ad69>144 216 Q F0 .558(The v)27.52 F .558
+.15 E F1<ad66>144 268.8 Q F0(Use function names only)26.97 E(.)-.65 E F1
+<ad69>144 280.8 Q F0 .558(The v)27.52 F .558
 (ariable is treated as an inte)-.25 F .558(ger; arithmetic e)-.15 F -.25
-(va)-.25 G .558(luation \(see).25 F/F3 9/Times-Bold@0 SF .557
-(ARITHMETIC EV)3.058 F(ALU)-1.215 E(A-)-.54 E(TION \))180 228 Q F0
+(va)-.25 G .558(luation \(see).25 F/F4 9/Times-Bold@0 SF .557
+(ARITHMETIC EV)3.058 F(ALU)-1.215 E(A-)-.54 E(TION \))180 292.8 Q F0
 (is performed when the v)2.25 E(ariable is assigned a v)-.25 E(alue.)
--.25 E F1<ad72>144 240 Q F0(Mak)25.86 E(e)-.1 E F2(name)5.046 E F0 5.046
-(sr)C(eadonly)-5.046 E 7.546(.T)-.65 G 2.546
+-.25 E F1<ad72>144 304.8 Q F0(Mak)25.86 E(e)-.1 E F2(name)5.046 E F0
+5.046(sr)C(eadonly)-5.046 E 7.546(.T)-.65 G 2.546
 (hese names cannot then be assigned v)-7.546 F 2.547
-(alues by subsequent)-.25 F(assignment statements or unset.)180 252 Q F1
-<ad74>144 264 Q F0(Gi)26.97 E 1.231 -.15(ve e)-.25 H(ach).15 E F2(name)
-3.431 E F0(the)3.431 E F2(tr)3.431 E(ace)-.15 E F0(attrib)3.431 E 3.431
-(ute. T)-.2 F .931(raced functions inherit the)-.35 F F1(DEB)3.431 E(UG)
--.1 E F0 .93(trap from the)3.43 F(calling shell.)180 276 Q
+(alues by subsequent)-.25 F(assignment statements or unset.)180 316.8 Q
+F1<ad74>144 328.8 Q F0(Gi)26.97 E 1.231 -.15(ve e)-.25 H(ach).15 E F2
+(name)3.431 E F0(the)3.431 E F2(tr)3.431 E(ace)-.15 E F0(attrib)3.431 E
+3.431(ute. T)-.2 F .931(raced functions inherit the)-.35 F F1(DEB)3.431
+E(UG)-.1 E F0 .93(trap from the)3.43 F(calling shell.)180 340.8 Q
 (The trace attrib)5 E(ute has no special meaning for v)-.2 E(ariables.)
--.25 E F1<ad78>144 288 Q F0(Mark)25.3 E F2(name)2.5 E F0 2.5(sf)C(or e)
--2.5 E(xport to subsequent commands via the en)-.15 E(vironment.)-.4 E
-.336(Using `+' instead of `\255' turns of)144 304.8 R 2.837(ft)-.25 G
-.337(he attrib)-2.837 F .337(ute instead, with the e)-.2 F .337
+-.25 E F1<ad78>144 352.8 Q F0(Mark)25.3 E F2(name)2.5 E F0 2.5(sf)C
+(or e)-2.5 E(xport to subsequent commands via the en)-.15 E(vironment.)
+-.4 E .336(Using `+' instead of `\255' turns of)144 369.6 R 2.837(ft)
+-.25 G .337(he attrib)-2.837 F .337(ute instead, with the e)-.2 F .337
 (xception that)-.15 F F1(+a)2.837 E F0 .337(may not be used)2.837 F .793
-(to destro)144 316.8 R 3.293(ya)-.1 G 3.293(na)-3.293 G .793(rray v)
+(to destro)144 381.6 R 3.293(ya)-.1 G 3.293(na)-3.293 G .793(rray v)
 -3.293 F 3.293(ariable. When)-.25 F .793(used in a function, mak)3.293 F
 .793(es each)-.1 F F2(name)3.293 E F0 .793(local, as with the)3.293 F F1
-(local)3.292 E F0 2.842(command. If)144 328.8 R 2.842(av)2.842 G .342
+(local)3.292 E F0 2.842(command. If)144 393.6 R 2.842(av)2.842 G .342
 (ariable name is follo)-3.092 F .342(wed by =)-.25 F F2(value)A F0 2.842
 (,t)C .342(he v)-2.842 F .342(alue of the v)-.25 F .343
 (ariable is set to)-.25 F F2(value)2.843 E F0 5.343(.T)C(he)-5.343 E
-.801(return v)144 340.8 R .801(alue is 0 unless an in)-.25 F -.25(va)-.4
+.801(return v)144 405.6 R .801(alue is 0 unless an in)-.25 F -.25(va)-.4
 G .8
 (lid option is encountered, an attempt is made to de\214ne a function)
-.25 F(using)144 352.8 Q/F4 10/Courier@0 SF 1.038(\255f foo=bar)3.538 F
+.25 F(using)144 417.6 Q/F5 10/Courier@0 SF 1.038(\255f foo=bar)3.538 F
 F0 3.538(,a)C 3.538(na)-3.538 G 1.038(ttempt is made to assign a v)
 -3.538 F 1.038(alue to a readonly v)-.25 F 1.039(ariable, an attempt is)
--.25 F .974(made to assign a v)144 364.8 R .974(alue to an array v)-.25
+-.25 F .974(made to assign a v)144 429.6 R .974(alue to an array v)-.25
 F .974(ariable without using the compound assignment syntax \(see)-.25 F
-F1(Arrays)144 376.8 Q F0(abo)2.86 E -.15(ve)-.15 G .36(\), one of the)
+F1(Arrays)144 441.6 Q F0(abo)2.86 E -.15(ve)-.15 G .36(\), one of the)
 .15 F F2(names)2.86 E F0 .36(is not a v)2.86 F .36(alid shell v)-.25 F
 .36(ariable name, an attempt is made to turn of)-.25 F(f)-.25 E .057
-(readonly status for a readonly v)144 388.8 R .057
+(readonly status for a readonly v)144 453.6 R .057
 (ariable, an attempt is made to turn of)-.25 F 2.556(fa)-.25 G .056
 (rray status for an array v)-2.556 F(ari-)-.25 E
-(able, or an attempt is made to display a non-e)144 400.8 Q
+(able, or an attempt is made to display a non-e)144 465.6 Q
 (xistent function with)-.15 E F1<ad66>2.5 E F0(.)A F1
-(dirs [\255clpv] [+)108 417.6 Q F2(n)A F1 2.5(][)C<ad>-2.5 E F2(n)A F1
-(])A F0 -.4(Wi)144 429.6 S .328
+(dirs [\255clpv] [+)108 482.4 Q F2(n)A F1 2.5(][)C<ad>-2.5 E F2(n)A F1
+(])A F0 -.4(Wi)144 494.4 S .328
 (thout options, displays the list of currently remembered directories.)
 .4 F .329(The def)5.329 F .329(ault display is on a)-.1 F 1.238
-(single line with directory names separated by spaces.)144 441.6 R 1.238
-(Directories are added to the list with the)6.238 F F1(pushd)144 453.6 Q
+(single line with directory names separated by spaces.)144 506.4 R 1.238
+(Directories are added to the list with the)6.238 F F1(pushd)144 518.4 Q
 F0(command; the)2.5 E F1(popd)2.5 E F0(command remo)2.5 E -.15(ve)-.15 G
-2.5(se).15 G(ntries from the list.)-2.5 E F1(+)144 465.6 Q F2(n)A F0
+2.5(se).15 G(ntries from the list.)-2.5 E F1(+)144 530.4 Q F2(n)A F0
 1.564(Displays the)25.3 F F2(n)4.064 E F0 1.565
 (th entry counting from the left of the list sho)B 1.565(wn by)-.25 F F1
 (dirs)4.065 E F0 1.565(when in)4.065 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E
-(without options, starting with zero.)180 477.6 Q F1<ad>144 489.6 Q F2
+(without options, starting with zero.)180 542.4 Q F1<ad>144 554.4 Q F2
 (n)A F0 1.194(Displays the)25.3 F F2(n)3.694 E F0 1.194
 (th entry counting from the right of the list sho)B 1.194(wn by)-.25 F
 F1(dirs)3.694 E F0 1.194(when in)3.694 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E
-(without options, starting with zero.)180 501.6 Q F1<ad63>144 513.6 Q F0
+(without options, starting with zero.)180 566.4 Q F1<ad63>144 578.4 Q F0
 (Clears the directory stack by deleting all of the entries.)25.86 E F1
-<ad6c>144 525.6 Q F0 .324(Produces a longer listing; the def)27.52 F
+<ad6c>144 590.4 Q F0 .324(Produces a longer listing; the def)27.52 F
 .324(ault listing format uses a tilde to denote the home direc-)-.1 F
-(tory)180 537.6 Q(.)-.65 E F1<ad70>144 549.6 Q F0
+(tory)180 602.4 Q(.)-.65 E F1<ad70>144 614.4 Q F0
 (Print the directory stack with one entry per line.)24.74 E F1<ad76>144
-561.6 Q F0 .273(Print the directory stack with one entry per line, pre\
+626.4 Q F0 .273(Print the directory stack with one entry per line, pre\
 \214xing each entry with its inde)25.3 F 2.772(xi)-.15 G 2.772(nt)-2.772
-G(he)-2.772 E(stack.)180 573.6 Q .257(The return v)144 590.4 R .258
+G(he)-2.772 E(stack.)180 638.4 Q .257(The return v)144 655.2 R .258
 (alue is 0 unless an in)-.25 F -.25(va)-.4 G .258
 (lid option is supplied or).25 F F2(n)2.758 E F0(inde)2.758 E -.15(xe)
 -.15 G 2.758(sb).15 G -.15(ey)-2.758 G .258(ond the end of the direc-)
-.15 F(tory stack.)144 602.4 Q F1(diso)108 619.2 Q(wn)-.1 E F0([)2.5 E F1
+.15 F(tory stack.)144 667.2 Q F1(diso)108 684 Q(wn)-.1 E F0([)2.5 E F1
 (\255ar)A F0 2.5(][)C F1<ad68>-2.5 E F0 2.5(][)C F2(jobspec)-2.5 E F0
-(...])2.5 E -.4(Wi)144 631.2 S .331(thout options, each).4 F F2(jobspec)
+(...])2.5 E -.4(Wi)144 696 S .331(thout options, each).4 F F2(jobspec)
 4.571 E F0 .331(is remo)3.141 F -.15(ve)-.15 G 2.831(df).15 G .331
 (rom the table of acti)-2.831 F .63 -.15(ve j)-.25 H 2.83(obs. If).15 F
 (the)2.83 E F1<ad68>2.83 E F0 .33(option is gi)2.83 F -.15(ve)-.25 G(n,)
-.15 E(each)144 643.2 Q F2(jobspec)4.52 E F0 .28(is not remo)3.09 F -.15
+.15 E(each)144 708 Q F2(jobspec)4.52 E F0 .28(is not remo)3.09 F -.15
 (ve)-.15 G 2.78(df).15 G .28(rom the table, b)-2.78 F .28(ut is mark)-.2
-F .28(ed so that)-.1 F F3(SIGHUP)2.78 E F0 .281
-(is not sent to the job if)2.53 F .224(the shell recei)144 655.2 R -.15
-(ve)-.25 G 2.724(sa).15 G F3(SIGHUP)A/F5 9/Times-Roman@0 SF(.)A F0 .224
-(If no)4.724 F F2(jobspec)4.464 E F0 .224(is present, and neither the)
-3.034 F F1<ad61>2.724 E F0 .224(nor the)2.724 F F1<ad72>2.724 E F0 .223
-(option is sup-)2.724 F .651(plied, the)144 667.2 R F2(curr)3.151 E .651
-(ent job)-.37 F F0 .651(is used.)3.151 F .652(If no)5.651 F F2(jobspec)
-4.892 E F0 .652(is supplied, the)3.462 F F1<ad61>3.152 E F0 .652
-(option means to remo)3.152 F .952 -.15(ve o)-.15 H 3.152(rm).15 G(ark)
--3.152 E .435(all jobs; the)144 679.2 R F1<ad72>2.935 E F0 .435
-(option without a)2.935 F F2(jobspec)4.675 E F0(ar)3.245 E .434
-(gument restricts operation to running jobs.)-.18 F .434(The return)
-5.434 F -.25(va)144 691.2 S(lue is 0 unless a).25 E F2(jobspec)4.24 E F0
-(does not specify a v)2.81 E(alid job)-.25 E(.)-.4 E(GNU Bash-3.0)72 768
-Q(2004 June 26)147.345 E(48)197.335 E 0 Cg EP
+F .28(ed so that)-.1 F F4(SIGHUP)2.78 E F0 .281
+(is not sent to the job if)2.53 F 1.332(the shell recei)144 720 R -.15
+(ve)-.25 G 3.832(sa).15 G F4(SIGHUP)A/F6 9/Times-Roman@0 SF(.)A F0 1.332
+(If no)5.832 F F2(jobspec)5.572 E F0 1.332(is present, and neither the)
+4.142 F F1<ad61>3.832 E F0 1.332(nor the)3.832 F F1<ad72>3.832 E F0
+1.331(option is)3.831 F(GNU Bash-3.0)72 768 Q(2004 Sep 17)149.01 E(48)
+199 E 0 Cg EP
 %%Page: 49 49
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\))
--.35 E/F1 10/Times-Bold@0 SF(echo)108 84 Q F0([)2.5 E F1(\255neE)A F0
-2.5(][)C/F2 10/Times-Italic@0 SF(ar)-2.5 E(g)-.37 E F0(...])2.5 E .394
-(Output the)144 96 R F2(ar)2.894 E(g)-.37 E F0 .394
+-.35 E 1.228(supplied, the)144 84 R/F1 10/Times-Italic@0 SF(curr)3.728 E
+1.228(ent job)-.37 F F0 1.229(is used.)3.729 F 1.229(If no)6.229 F F1
+(jobspec)5.469 E F0 1.229(is supplied, the)4.039 F/F2 10/Times-Bold@0 SF
+<ad61>3.729 E F0 1.229(option means to remo)3.729 F 1.529 -.15(ve o)-.15
+H(r).15 E .657(mark all jobs; the)144 96 R F2<ad72>3.157 E F0 .657
+(option without a)3.157 F F1(jobspec)4.897 E F0(ar)3.467 E .656
+(gument restricts operation to running jobs.)-.18 F(The)5.656 E
+(return v)144 108 Q(alue is 0 unless a)-.25 E F1(jobspec)4.24 E F0
+(does not specify a v)2.81 E(alid job)-.25 E(.)-.4 E F2(echo)108 124.8 Q
+F0([)2.5 E F2(\255neE)A F0 2.5(][)C F1(ar)-2.5 E(g)-.37 E F0(...])2.5 E
+.394(Output the)144 136.8 R F1(ar)2.894 E(g)-.37 E F0 .394
 (s, separated by spaces, follo)B .395(wed by a ne)-.25 F 2.895
 (wline. The)-.25 F .395(return status is al)2.895 F -.1(wa)-.1 G .395
-(ys 0.).1 F(If)5.395 E F1<ad6e>2.895 E F0 .549
-(is speci\214ed, the trailing ne)144 108 R .548(wline is suppressed.)
--.25 F .548(If the)5.548 F F1<ad65>3.048 E F0 .548(option is gi)3.048 F
--.15(ve)-.25 G .548(n, interpretation of the fol-).15 F(lo)144 120 Q
-.052(wing backslash-escaped characters is enabled.)-.25 F(The)5.052 E F1
+(ys 0.).1 F(If)5.395 E F2<ad6e>2.895 E F0 .549
+(is speci\214ed, the trailing ne)144 148.8 R .548(wline is suppressed.)
+-.25 F .548(If the)5.548 F F2<ad65>3.048 E F0 .548(option is gi)3.048 F
+-.15(ve)-.25 G .548(n, interpretation of the fol-).15 F(lo)144 160.8 Q
+.052(wing backslash-escaped characters is enabled.)-.25 F(The)5.052 E F2
 <ad45>2.552 E F0 .053(option disables the interpretation of these)2.553
-F 1.503(escape characters, e)144 132 R -.15(ve)-.25 G 4.003(no).15 G
+F 1.503(escape characters, e)144 172.8 R -.15(ve)-.25 G 4.003(no).15 G
 4.003(ns)-4.003 G 1.502(ystems where the)-4.003 F 4.002(ya)-.15 G 1.502
-(re interpreted by def)-4.002 F 4.002(ault. The)-.1 F F1(xpg_echo)4.002
+(re interpreted by def)-4.002 F 4.002(ault. The)-.1 F F2(xpg_echo)4.002
 E F0(shell)4.002 E .009
-(option may be used to dynamically determine whether or not)144 144 R F1
-(echo)2.509 E F0 -.15(ex)2.51 G .01(pands these escape characters).15 F
-.66(by def)144 156 R(ault.)-.1 E F1(echo)5.66 E F0 .66
-(does not interpret)3.16 F F1<adad>3.16 E F0 .659
-(to mean the end of options.)3.159 F F1(echo)5.659 E F0 .659
-(interprets the follo)3.159 F(wing)-.25 E(escape sequences:)144 168 Q F1
-(\\a)144 180 Q F0(alert \(bell\))28.22 E F1(\\b)144 192 Q F0(backspace)
-27.66 E F1(\\c)144 204 Q F0(suppress trailing ne)28.78 E(wline)-.25 E F1
-(\\e)144 216 Q F0(an escape character)28.78 E F1(\\f)144 228 Q F0
-(form feed)29.89 E F1(\\n)144 240 Q F0(ne)27.66 E 2.5(wl)-.25 G(ine)-2.5
-E F1(\\r)144 252 Q F0(carriage return)28.78 E F1(\\t)144 264 Q F0
-(horizontal tab)29.89 E F1(\\v)144 276 Q F0 -.15(ve)28.22 G(rtical tab)
-.15 E F1(\\\\)144 288 Q F0(backslash)30.44 E F1(\\0)144 300 Q F2(nnn)A
-F0(the eight-bit character whose v)13.22 E(alue is the octal v)-.25 E
-(alue)-.25 E F2(nnn)2.5 E F0(\(zero to three octal digits\))2.5 E F1(\\)
-144 312 Q F2(nnn)A F0(the eight-bit character whose v)18.22 E
-(alue is the octal v)-.25 E(alue)-.25 E F2(nnn)2.5 E F0
-(\(one to three octal digits\))2.5 E F1(\\x)144 324 Q F2(HH)A F0
-(the eight-bit character whose v)13.78 E(alue is the he)-.25 E
-(xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0(\(one or tw)2.5 E 2.5(oh)
--.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F1(enable)108 340.8 Q F0([)2.5 E
-F1(\255adnps)A F0 2.5(][)C F1<ad66>-2.5 E F2(\214lename)2.5 E F0 2.5(][)
-C F2(name)-2.5 E F0(...])2.5 E .277(Enable and disable b)144 352.8 R
-.278(uiltin shell commands.)-.2 F .278(Disabling a b)5.278 F .278
-(uiltin allo)-.2 F .278(ws a disk command which has)-.25 F .834
-(the same name as a shell b)144 364.8 R .834(uiltin to be e)-.2 F -.15
-(xe)-.15 G .834(cuted without specifying a full pathname, e).15 F -.15
-(ve)-.25 G 3.333(nt).15 G(hough)-3.333 E .989
-(the shell normally searches for b)144 376.8 R .989
-(uiltins before disk commands.)-.2 F(If)5.989 E F1<ad6e>3.489 E F0 .99
-(is used, each)3.49 F F2(name)3.49 E F0 .99(is dis-)3.49 F 1.582
-(abled; otherwise,)144 388.8 R F2(names)4.082 E F0 1.582(are enabled.)
-4.082 F -.15(Fo)6.582 G 4.082(re).15 G 1.582(xample, to use the)-4.232 F
-F1(test)4.082 E F0 1.582(binary found via the)4.082 F/F3 9/Times-Bold@0
-SF -.666(PA)4.081 G(TH)-.189 E F0 .08(instead of the shell b)144 400.8 R
-.08(uiltin v)-.2 F .08(ersion, run)-.15 F/F4 10/Courier@0 SF .081
-(enable -n test)2.58 F F0 5.081(.T)C(he)-5.081 E F1<ad66>2.581 E F0 .081
-(option means to load the ne)2.581 F(w)-.25 E -.2(bu)144 412.8 S 1.525
-(iltin command).2 F F2(name)4.385 E F0 1.524(from shared object)4.204 F
-F2(\214lename)4.024 E F0 4.024(,o).18 G 4.024(ns)-4.024 G 1.524
-(ystems that support dynamic loading.)-4.024 F(The)144 424.8 Q F1<ad64>
+(option may be used to dynamically determine whether or not)144 184.8 R
+F2(echo)2.509 E F0 -.15(ex)2.51 G .01(pands these escape characters).15
+F .66(by def)144 196.8 R(ault.)-.1 E F2(echo)5.66 E F0 .66
+(does not interpret)3.16 F F2<adad>3.16 E F0 .659
+(to mean the end of options.)3.159 F F2(echo)5.659 E F0 .659
+(interprets the follo)3.159 F(wing)-.25 E(escape sequences:)144 208.8 Q
+F2(\\a)144 220.8 Q F0(alert \(bell\))28.22 E F2(\\b)144 232.8 Q F0
+(backspace)27.66 E F2(\\c)144 244.8 Q F0(suppress trailing ne)28.78 E
+(wline)-.25 E F2(\\e)144 256.8 Q F0(an escape character)28.78 E F2(\\f)
+144 268.8 Q F0(form feed)29.89 E F2(\\n)144 280.8 Q F0(ne)27.66 E 2.5
+(wl)-.25 G(ine)-2.5 E F2(\\r)144 292.8 Q F0(carriage return)28.78 E F2
+(\\t)144 304.8 Q F0(horizontal tab)29.89 E F2(\\v)144 316.8 Q F0 -.15
+(ve)28.22 G(rtical tab).15 E F2(\\\\)144 328.8 Q F0(backslash)30.44 E F2
+(\\0)144 340.8 Q F1(nnn)A F0(the eight-bit character whose v)13.22 E
+(alue is the octal v)-.25 E(alue)-.25 E F1(nnn)2.5 E F0
+(\(zero to three octal digits\))2.5 E F2(\\)144 352.8 Q F1(nnn)A F0
+(the eight-bit character whose v)18.22 E(alue is the octal v)-.25 E
+(alue)-.25 E F1(nnn)2.5 E F0(\(one to three octal digits\))2.5 E F2(\\x)
+144 364.8 Q F1(HH)A F0(the eight-bit character whose v)13.78 E
+(alue is the he)-.25 E(xadecimal v)-.15 E(alue)-.25 E F1(HH)2.5 E F0
+(\(one or tw)2.5 E 2.5(oh)-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F2
+(enable)108 381.6 Q F0([)2.5 E F2(\255adnps)A F0 2.5(][)C F2<ad66>-2.5 E
+F1(\214lename)2.5 E F0 2.5(][)C F1(name)-2.5 E F0(...])2.5 E .277
+(Enable and disable b)144 393.6 R .278(uiltin shell commands.)-.2 F .278
+(Disabling a b)5.278 F .278(uiltin allo)-.2 F .278
+(ws a disk command which has)-.25 F .834(the same name as a shell b)144
+405.6 R .834(uiltin to be e)-.2 F -.15(xe)-.15 G .834
+(cuted without specifying a full pathname, e).15 F -.15(ve)-.25 G 3.333
+(nt).15 G(hough)-3.333 E .989(the shell normally searches for b)144
+417.6 R .989(uiltins before disk commands.)-.2 F(If)5.989 E F2<ad6e>
+3.489 E F0 .99(is used, each)3.49 F F1(name)3.49 E F0 .99(is dis-)3.49 F
+1.582(abled; otherwise,)144 429.6 R F1(names)4.082 E F0 1.582
+(are enabled.)4.082 F -.15(Fo)6.582 G 4.082(re).15 G 1.582
+(xample, to use the)-4.232 F F2(test)4.082 E F0 1.582
+(binary found via the)4.082 F/F3 9/Times-Bold@0 SF -.666(PA)4.081 G(TH)
+-.189 E F0 .08(instead of the shell b)144 441.6 R .08(uiltin v)-.2 F .08
+(ersion, run)-.15 F/F4 10/Courier@0 SF .081(enable -n test)2.58 F F0
+5.081(.T)C(he)-5.081 E F2<ad66>2.581 E F0 .081
+(option means to load the ne)2.581 F(w)-.25 E -.2(bu)144 453.6 S 1.525
+(iltin command).2 F F1(name)4.385 E F0 1.524(from shared object)4.204 F
+F1(\214lename)4.024 E F0 4.024(,o).18 G 4.024(ns)-4.024 G 1.524
+(ystems that support dynamic loading.)-4.024 F(The)144 465.6 Q F2<ad64>
 2.866 E F0 .366(option will delete a b)2.866 F .366(uiltin pre)-.2 F
-.366(viously loaded with)-.25 F F1<ad66>2.867 E F0 5.367(.I)C 2.867(fn)
--5.367 G(o)-2.867 E F2(name)2.867 E F0(ar)2.867 E .367(guments are gi)
--.18 F -.15(ve)-.25 G .367(n, or).15 F .399(if the)144 436.8 R F1<ad70>
+.366(viously loaded with)-.25 F F2<ad66>2.867 E F0 5.367(.I)C 2.867(fn)
+-5.367 G(o)-2.867 E F1(name)2.867 E F0(ar)2.867 E .367(guments are gi)
+-.18 F -.15(ve)-.25 G .367(n, or).15 F .399(if the)144 477.6 R F2<ad70>
 2.899 E F0 .399(option is supplied, a list of shell b)2.899 F .399
 (uiltins is printed.)-.2 F -.4(Wi)5.399 G .399(th no other option ar).4
 F .398(guments, the)-.18 F .098(list consists of all enabled shell b)144
-448.8 R 2.598(uiltins. If)-.2 F F1<ad6e>2.598 E F0 .098
+489.6 R 2.598(uiltins. If)-.2 F F2<ad6e>2.598 E F0 .098
 (is supplied, only disabled b)2.598 F .099(uiltins are printed.)-.2 F
-(If)5.099 E F1<ad61>2.599 E F0 1.917
-(is supplied, the list printed includes all b)144 460.8 R 1.916
+(If)5.099 E F2<ad61>2.599 E F0 1.917
+(is supplied, the list printed includes all b)144 501.6 R 1.916
 (uiltins, with an indication of whether or not each is)-.2 F 2.878
-(enabled. If)144 472.8 R F1<ad73>2.878 E F0 .379
-(is supplied, the output is restricted to the POSIX)2.878 F F2(special)
+(enabled. If)144 513.6 R F2<ad73>2.878 E F0 .379
+(is supplied, the output is restricted to the POSIX)2.878 F F1(special)
 2.879 E F0 -.2(bu)2.879 G 2.879(iltins. The).2 F .379(return v)2.879 F
-(alue)-.25 E .995(is 0 unless a)144 484.8 R F2(name)3.855 E F0 .994
+(alue)-.25 E .995(is 0 unless a)144 525.6 R F1(name)3.855 E F0 .994
 (is not a shell b)3.675 F .994(uiltin or there is an error loading a ne)
 -.2 F 3.494(wb)-.25 G .994(uiltin from a shared)-3.694 F(object.)144
-496.8 Q F1 -2.3 -.15(ev a)108 513.6 T(l).15 E F0([)2.5 E F2(ar)A(g)-.37
-E F0(...])2.5 E(The)144 525.6 Q F2(ar)3.17 E(g)-.37 E F0 3.17(sa)C .671
+537.6 Q F2 -2.3 -.15(ev a)108 554.4 T(l).15 E F0([)2.5 E F1(ar)A(g)-.37
+E F0(...])2.5 E(The)144 566.4 Q F1(ar)3.17 E(g)-.37 E F0 3.17(sa)C .671
 (re read and concatenated together into a single command.)-3.17 F .671
-(This command is then read)5.671 F .495(and e)144 537.6 R -.15(xe)-.15 G
+(This command is then read)5.671 F .495(and e)144 578.4 R -.15(xe)-.15 G
 .495(cuted by the shell, and its e).15 F .495
-(xit status is returned as the v)-.15 F .495(alue of)-.25 F F1 -2.3 -.15
+(xit status is returned as the v)-.15 F .495(alue of)-.25 F F2 -2.3 -.15
 (ev a)2.995 H(l).15 E F0 5.495(.I)C 2.995(ft)-5.495 G .495(here are no)
--2.995 F F2(ar)2.995 E(gs)-.37 E F0(,).27 E(or only null ar)144 549.6 Q
-(guments,)-.18 E F1 -2.3 -.15(ev a)2.5 H(l).15 E F0(returns 0.)2.5 E F1
-(exec)108 566.4 Q F0([)2.5 E F1(\255cl)A F0 2.5(][)C F1<ad61>-2.5 E F2
-(name)2.5 E F0 2.5(][)C F2(command)-2.5 E F0([)2.5 E F2(ar)A(guments)
--.37 E F0(]])A(If)144 578.4 Q F2(command)3.005 E F0 .305
+-2.995 F F1(ar)2.995 E(gs)-.37 E F0(,).27 E(or only null ar)144 590.4 Q
+(guments,)-.18 E F2 -2.3 -.15(ev a)2.5 H(l).15 E F0(returns 0.)2.5 E F2
+(exec)108 607.2 Q F0([)2.5 E F2(\255cl)A F0 2.5(][)C F2<ad61>-2.5 E F1
+(name)2.5 E F0 2.5(][)C F1(command)-2.5 E F0([)2.5 E F1(ar)A(guments)
+-.37 E F0(]])A(If)144 619.2 Q F1(command)3.005 E F0 .305
 (is speci\214ed, it replaces the shell.)3.575 F .305(No ne)5.305 F 2.805
-(wp)-.25 G .306(rocess is created.)-2.805 F(The)5.306 E F2(ar)3.136 E
-(guments)-.37 E F0(become)3.076 E .177(the ar)144 590.4 R .177
-(guments to)-.18 F F2(command)2.676 E F0 5.176(.I)C 2.676(ft)-5.176 G
-(he)-2.676 E F1<ad6c>2.676 E F0 .176
+(wp)-.25 G .306(rocess is created.)-2.805 F(The)5.306 E F1(ar)3.136 E
+(guments)-.37 E F0(become)3.076 E .177(the ar)144 631.2 R .177
+(guments to)-.18 F F1(command)2.676 E F0 5.176(.I)C 2.676(ft)-5.176 G
+(he)-2.676 E F2<ad6c>2.676 E F0 .176
 (option is supplied, the shell places a dash at the be)2.676 F .176
-(ginning of)-.15 F .159(the zeroth ar)144 602.4 R 2.659(gp)-.18 G .159
-(assed to)-2.659 F F2(command)2.659 E F0 5.159(.T).77 G .159
-(his is what)-5.159 F F2(lo)2.659 E(gin)-.1 E F0 .159(\(1\) does.).24 F
-(The)5.16 E F1<ad63>2.66 E F0 .16(option causes)2.66 F F2(command)2.86 E
-F0(to)3.43 E 1.196(be e)144 614.4 R -.15(xe)-.15 G 1.196
-(cuted with an empty en).15 F 3.696(vironment. If)-.4 F F1<ad61>3.696 E
-F0 1.196(is supplied, the shell passes)3.696 F F2(name)4.055 E F0 1.195
-(as the zeroth)3.875 F(ar)144 626.4 Q .02(gument to the e)-.18 F -.15
-(xe)-.15 G .02(cuted command.).15 F(If)5.02 E F2(command)2.72 E F0 .02
+(ginning of)-.15 F .159(the zeroth ar)144 643.2 R 2.659(gp)-.18 G .159
+(assed to)-2.659 F F1(command)2.659 E F0 5.159(.T).77 G .159
+(his is what)-5.159 F F1(lo)2.659 E(gin)-.1 E F0 .159(\(1\) does.).24 F
+(The)5.16 E F2<ad63>2.66 E F0 .16(option causes)2.66 F F1(command)2.86 E
+F0(to)3.43 E 1.196(be e)144 655.2 R -.15(xe)-.15 G 1.196
+(cuted with an empty en).15 F 3.696(vironment. If)-.4 F F2<ad61>3.696 E
+F0 1.196(is supplied, the shell passes)3.696 F F1(name)4.055 E F0 1.195
+(as the zeroth)3.875 F(ar)144 667.2 Q .02(gument to the e)-.18 F -.15
+(xe)-.15 G .02(cuted command.).15 F(If)5.02 E F1(command)2.72 E F0 .02
 (cannot be e)3.29 F -.15(xe)-.15 G .02
-(cuted for some reason, a non-inter).15 F(-)-.2 E(acti)144 638.4 Q 1.067
+(cuted for some reason, a non-inter).15 F(-)-.2 E(acti)144 679.2 Q 1.067
 -.15(ve s)-.25 H .767(hell e).15 F .767(xits, unless the shell option)
--.15 F F1(execfail)3.266 E F0 .766
+-.15 F F2(execfail)3.266 E F0 .766
 (is enabled, in which case it returns f)3.266 F 3.266(ailure. An)-.1 F
-(interacti)144 650.4 Q 1.518 -.15(ve s)-.25 H 1.218(hell returns f).15 F
+(interacti)144 691.2 Q 1.518 -.15(ve s)-.25 H 1.218(hell returns f).15 F
 1.219(ailure if the \214le cannot be e)-.1 F -.15(xe)-.15 G 3.719
-(cuted. If).15 F F2(command)3.919 E F0 1.219(is not speci\214ed, an)
-4.489 F(y)-.15 E .134(redirections tak)144 662.4 R 2.634(ee)-.1 G -.25
+(cuted. If).15 F F1(command)3.919 E F0 1.219(is not speci\214ed, an)
+4.489 F(y)-.15 E .134(redirections tak)144 703.2 R 2.634(ee)-.1 G -.25
 (ff)-2.634 G .134(ect in the current shell, and the return status is 0.)
 .25 F .134(If there is a redirection error)5.134 F(,)-.4 E
-(the return status is 1.)144 674.4 Q F1(exit)108 691.2 Q F0([)2.5 E F2
-(n)A F0 6.29(]C)C .095(ause the shell to e)-6.29 F .095
-(xit with a status of)-.15 F F2(n)2.595 E F0 5.095(.I)C(f)-5.095 E F2(n)
-2.955 E F0 .096(is omitted, the e)2.835 F .096
-(xit status is that of the last command)-.15 F -.15(exe)144 703.2 S 2.5
-(cuted. A).15 F(trap on)2.5 E F3(EXIT)2.5 E F0(is e)2.25 E -.15(xe)-.15
-G(cuted before the shell terminates.).15 E(GNU Bash-3.0)72 768 Q
-(2004 June 26)147.345 E(49)197.335 E 0 Cg EP
+(the return status is 1.)144 715.2 Q(GNU Bash-3.0)72 768 Q(2004 Sep 17)
+149.01 E(49)199 E 0 Cg EP
 %%Page: 50 50
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\))
--.35 E/F1 10/Times-Bold@0 SF(export)108 84 Q F0([)2.5 E F1(\255fn)A F0
-2.5(][).833 G/F2 10/Times-Italic@0 SF(name)-2.5 E F0([=)A F2(wor)A(d)
--.37 E F0(]] ...)A F1(export \255p)108 96 Q F0 .257(The supplied)144 108
-R F2(names)3.117 E F0 .257(are mark)3.027 F .257(ed for automatic e)-.1
-F .257(xport to the en)-.15 F .257(vironment of subsequently e)-.4 F
--.15(xe)-.15 G(cuted).15 E 2.626(commands. If)144 120 R(the)2.626 E F1
-<ad66>2.626 E F0 .127(option is gi)2.627 F -.15(ve)-.25 G .127(n, the)
-.15 F F2(names)2.987 E F0 .127(refer to functions.)2.897 F .127(If no)
-5.127 F F2(names)2.987 E F0 .127(are gi)2.897 F -.15(ve)-.25 G .127
-(n, or if the).15 F F1<ad70>144 132 Q F0 .66
-(option is supplied, a list of all names that are e)3.16 F .659
-(xported in this shell is printed.)-.15 F(The)5.659 E F1<ad6e>3.159 E F0
-(option)3.159 E 1.586(causes the e)144 144 R 1.586
+-.35 E/F1 10/Times-Bold@0 SF(exit)108 84 Q F0([)2.5 E/F2 10
+/Times-Italic@0 SF(n)A F0 6.29(]C)C .095(ause the shell to e)-6.29 F
+.095(xit with a status of)-.15 F F2(n)2.595 E F0 5.095(.I)C(f)-5.095 E
+F2(n)2.955 E F0 .096(is omitted, the e)2.835 F .096
+(xit status is that of the last command)-.15 F -.15(exe)144 96 S 2.5
+(cuted. A).15 F(trap on)2.5 E/F3 9/Times-Bold@0 SF(EXIT)2.5 E F0(is e)
+2.25 E -.15(xe)-.15 G(cuted before the shell terminates.).15 E F1
+(export)108 112.8 Q F0([)2.5 E F1(\255fn)A F0 2.5(][).833 G F2(name)-2.5
+E F0([=)A F2(wor)A(d)-.37 E F0(]] ...)A F1(export \255p)108 124.8 Q F0
+.257(The supplied)144 136.8 R F2(names)3.117 E F0 .257(are mark)3.027 F
+.257(ed for automatic e)-.1 F .257(xport to the en)-.15 F .257
+(vironment of subsequently e)-.4 F -.15(xe)-.15 G(cuted).15 E 2.626
+(commands. If)144 148.8 R(the)2.626 E F1<ad66>2.626 E F0 .127
+(option is gi)2.627 F -.15(ve)-.25 G .127(n, the).15 F F2(names)2.987 E
+F0 .127(refer to functions.)2.897 F .127(If no)5.127 F F2(names)2.987 E
+F0 .127(are gi)2.897 F -.15(ve)-.25 G .127(n, or if the).15 F F1<ad70>
+144 160.8 Q F0 .66(option is supplied, a list of all names that are e)
+3.16 F .659(xported in this shell is printed.)-.15 F(The)5.659 E F1
+<ad6e>3.159 E F0(option)3.159 E 1.586(causes the e)144 172.8 R 1.586
 (xport property to be remo)-.15 F -.15(ve)-.15 G 4.086(df).15 G 1.586
 (rom each)-4.086 F F2(name)4.086 E F0 6.586(.I)C 4.086(fav)-6.586 G
-1.587(ariable name is follo)-4.336 F 1.587(wed by)-.25 F(=)144 156 Q F2
-(wor)A(d)-.37 E F0 2.804(,t)C .304(he v)-2.804 F .304(alue of the v)-.25
-F .304(ariable is set to)-.25 F F2(wor)2.804 E(d)-.37 E F0(.)A F1
+1.587(ariable name is follo)-4.336 F 1.587(wed by)-.25 F(=)144 184.8 Q
+F2(wor)A(d)-.37 E F0 2.804(,t)C .304(he v)-2.804 F .304(alue of the v)
+-.25 F .304(ariable is set to)-.25 F F2(wor)2.804 E(d)-.37 E F0(.)A F1
 (export)5.304 E F0 .304(returns an e)2.804 F .303
 (xit status of 0 unless an in)-.15 F -.25(va)-.4 G(lid).25 E .293
-(option is encountered, one of the)144 168 R F2(names)2.793 E F0 .293
+(option is encountered, one of the)144 196.8 R F2(names)2.793 E F0 .293
 (is not a v)2.793 F .293(alid shell v)-.25 F .293(ariable name, or)-.25
-F F1<ad66>2.793 E F0 .294(is supplied with a)2.793 F F2(name)144.36 180
-Q F0(that is not a function.)2.68 E F1(fc)108 196.8 Q F0([)2.5 E F1
-<ad65>A F2(ename)2.5 E F0 2.5(][)C F1(\255nlr)-2.5 E F0 2.5(][)C F2
+F F1<ad66>2.793 E F0 .294(is supplied with a)2.793 F F2(name)144.36
+208.8 Q F0(that is not a function.)2.68 E F1(fc)108 225.6 Q F0([)2.5 E
+F1<ad65>A F2(ename)2.5 E F0 2.5(][)C F1(\255nlr)-2.5 E F0 2.5(][)C F2
 <8c72>-2.5 E(st)-.1 E F0 2.5(][)C F2(last)-2.5 E F0(])A F1(fc \255s)108
-208.8 Q F0([)2.5 E F2(pat)A F0(=)A F2 -.37(re)C(p).37 E F0 2.5(][)C F2
-(cmd)-2.5 E F0(])A .478(Fix Command.)144 220.8 R .478
+237.6 Q F0([)2.5 E F2(pat)A F0(=)A F2 -.37(re)C(p).37 E F0 2.5(][)C F2
+(cmd)-2.5 E F0(])A .478(Fix Command.)144 249.6 R .478
 (In the \214rst form, a range of commands from)5.478 F F2<8c72>4.888 E
 (st)-.1 E F0(to)3.658 E F2(last)3.068 E F0 .477
-(is selected from the his-)3.658 F .881(tory list.)144 232.8 R F2 -.45
+(is selected from the his-)3.658 F .881(tory list.)144 261.6 R F2 -.45
 (Fi)5.881 G -.1(rs).45 G(t).1 E F0(and)4.061 E F2(last)3.471 E F0 .882
 (may be speci\214ed as a string \(to locate the last command be)4.062 F
 .882(ginning with)-.15 F .797(that string\) or as a number \(an inde)144
-244.8 R 3.297(xi)-.15 G .797(nto the history list, where a ne)-3.297 F
+273.6 R 3.297(xi)-.15 G .797(nto the history list, where a ne)-3.297 F
 -.05(ga)-.15 G(ti).05 E 1.097 -.15(ve n)-.25 H .796(umber is used as an)
-.15 F(of)144 256.8 Q .276(fset from the current command number\).)-.25 F
+.15 F(of)144 285.6 Q .276(fset from the current command number\).)-.25 F
 (If)5.276 E F2(last)2.866 E F0 .277
 (is not speci\214ed it is set to the current command)3.456 F .093
-(for listing \(so that)144 268.8 R/F3 10/Courier@0 SF .092
+(for listing \(so that)144 297.6 R/F4 10/Courier@0 SF .092
 (fc \255l \25510)2.592 F F0 .092(prints the last 10 commands\) and to)
 2.592 F F2<8c72>4.502 E(st)-.1 E F0 2.592(otherwise. If)3.272 F F2<8c72>
 4.502 E(st)-.1 E F0 .092(is not)3.272 F
-(speci\214ed it is set to the pre)144 280.8 Q
-(vious command for editing and \25516 for listing.)-.25 E(The)144 304.8
+(speci\214ed it is set to the pre)144 309.6 Q
+(vious command for editing and \25516 for listing.)-.25 E(The)144 333.6
 Q F1<ad6e>2.522 E F0 .022
 (option suppresses the command numbers when listing.)2.522 F(The)5.022 E
 F1<ad72>2.522 E F0 .022(option re)2.522 F -.15(ve)-.25 G .022
-(rses the order of).15 F .438(the commands.)144 316.8 R .438(If the)
+(rses the order of).15 F .438(the commands.)144 345.6 R .438(If the)
 5.438 F F1<ad6c>2.938 E F0 .438(option is gi)2.938 F -.15(ve)-.25 G .438
 (n, the commands are listed on standard output.).15 F(Otherwise,)5.438 E
-.334(the editor gi)144 328.8 R -.15(ve)-.25 G 2.834(nb).15 G(y)-2.834 E
+.334(the editor gi)144 357.6 R -.15(ve)-.25 G 2.834(nb).15 G(y)-2.834 E
 F2(ename)3.024 E F0 .335(is in)3.014 F -.2(vo)-.4 G -.1(ke).2 G 2.835
 (do).1 G 2.835(na\214)-2.835 G .335(le containing those commands.)-2.835
 F(If)5.335 E F2(ename)3.025 E F0 .335(is not gi)3.015 F -.15(ve)-.25 G
-(n,).15 E .631(the v)144 340.8 R .631(alue of the)-.25 F/F4 9
-/Times-Bold@0 SF(FCEDIT)3.131 E F0 -.25(va)2.881 G .631
-(riable is used, and the v).25 F .631(alue of)-.25 F F4(EDIT)3.131 E(OR)
--.162 E F0(if)2.881 E F4(FCEDIT)3.13 E F0 .63(is not set.)2.88 F .63
-(If nei-)5.63 F .95(ther v)144 352.8 R .95(ariable is set,)-.25 F F2(vi)
-5.116 E F0 .95(is used.)5.116 F .951
+(n,).15 E .631(the v)144 369.6 R .631(alue of the)-.25 F F3(FCEDIT)3.131
+E F0 -.25(va)2.881 G .631(riable is used, and the v).25 F .631(alue of)
+-.25 F F3(EDIT)3.131 E(OR)-.162 E F0(if)2.881 E F3(FCEDIT)3.13 E F0 .63
+(is not set.)2.88 F .63(If nei-)5.63 F .95(ther v)144 381.6 R .95
+(ariable is set,)-.25 F F2(vi)5.116 E F0 .95(is used.)5.116 F .951
 (When editing is complete, the edited commands are echoed and)5.95 F
--.15(exe)144 364.8 S(cuted.).15 E .04(In the second form,)144 388.8 R F2
+-.15(exe)144 393.6 S(cuted.).15 E .04(In the second form,)144 417.6 R F2
 (command)2.54 E F0 .04(is re-e)2.54 F -.15(xe)-.15 G .039
 (cuted after each instance of).15 F F2(pat)2.539 E F0 .039
 (is replaced by)2.539 F F2 -.37(re)2.539 G(p).37 E F0 5.039(.A)C(useful)
--2.5 E .406(alias to use with this is)144 400.8 R F3 .406(r='fc \255s')
-2.906 F F0 2.906(,s)C 2.906(ot)-2.906 G .406(hat typing)-2.906 F F3
+-2.5 E .406(alias to use with this is)144 429.6 R F4 .406(r='fc \255s')
+2.906 F F0 2.906(,s)C 2.906(ot)-2.906 G .406(hat typing)-2.906 F F4
 6.406(rc)2.906 G(c)-6.406 E F0 .406(runs the last command be)2.906 F
-.407(ginning with)-.15 F F3(cc)144 412.8 Q F0(and typing)2.5 E F3(r)2.5
+.407(ginning with)-.15 F F4(cc)144 441.6 Q F0(and typing)2.5 E F4(r)2.5
 E F0(re-e)2.5 E -.15(xe)-.15 G(cutes the last command.).15 E .142
-(If the \214rst form is used, the return v)144 436.8 R .142
+(If the \214rst form is used, the return v)144 465.6 R .142
 (alue is 0 unless an in)-.25 F -.25(va)-.4 G .142
 (lid option is encountered or).25 F F2<8c72>4.552 E(st)-.1 E F0(or)3.322
-E F2(last)2.732 E F0 .454(specify history lines out of range.)144 448.8
+E F2(last)2.732 E F0 .454(specify history lines out of range.)144 477.6
 R .454(If the)5.454 F F1<ad65>2.954 E F0 .454
 (option is supplied, the return v)2.954 F .455(alue is the v)-.25 F .455
-(alue of the)-.25 F .788(last command e)144 460.8 R -.15(xe)-.15 G .788
+(alue of the)-.25 F .788(last command e)144 489.6 R -.15(xe)-.15 G .788
 (cuted or f).15 F .787
 (ailure if an error occurs with the temporary \214le of commands.)-.1 F
 .787(If the)5.787 F 1.135
 (second form is used, the return status is that of the command re-e)144
-472.8 R -.15(xe)-.15 G 1.136(cuted, unless).15 F F2(cmd)3.836 E F0 1.136
-(does not)4.406 F(specify a v)144 484.8 Q
+501.6 R -.15(xe)-.15 G 1.136(cuted, unless).15 F F2(cmd)3.836 E F0 1.136
+(does not)4.406 F(specify a v)144 513.6 Q
 (alid history line, in which case)-.25 E F1(fc)2.5 E F0(returns f)2.5 E
-(ailure.)-.1 E F1(fg)108 501.6 Q F0([)2.5 E F2(jobspec)A F0(])A(Resume)
-144 513.6 Q F2(jobspec)5.654 E F0 1.413(in the fore)4.224 F 1.413
+(ailure.)-.1 E F1(fg)108 530.4 Q F0([)2.5 E F2(jobspec)A F0(])A(Resume)
+144 542.4 Q F2(jobspec)5.654 E F0 1.413(in the fore)4.224 F 1.413
 (ground, and mak)-.15 F 3.913(ei)-.1 G 3.913(tt)-3.913 G 1.413
 (he current job)-3.913 F 6.413(.I)-.4 G(f)-6.413 E F2(jobspec)5.653 E F0
-1.413(is not present, the)4.223 F(shell')144 525.6 Q 3.116(sn)-.55 G
+1.413(is not present, the)4.223 F(shell')144 554.4 Q 3.116(sn)-.55 G
 .616(otion of the)-3.116 F F2(curr)3.116 E .616(ent job)-.37 F F0 .617
 (is used.)3.116 F .617(The return v)5.617 F .617
-(alue is that of the command placed into the)-.25 F(fore)144 537.6 Q
+(alue is that of the command placed into the)-.25 F(fore)144 566.4 Q
 .363(ground, or f)-.15 F .363
 (ailure if run when job control is disabled or)-.1 F 2.862(,w)-.4 G .362
-(hen run with job control enabled, if)-2.862 F F2(jobspec)145.74 549.6 Q
+(hen run with job control enabled, if)-2.862 F F2(jobspec)145.74 578.4 Q
 F0 .004(does not specify a v)2.814 F .004(alid job or)-.25 F F2(jobspec)
 4.244 E F0 .004(speci\214es a job that w)2.814 F .004
-(as started without job control.)-.1 F F1(getopts)108 566.4 Q F2
+(as started without job control.)-.1 F F1(getopts)108 595.2 Q F2
 (optstring name)2.5 E F0([)2.5 E F2(ar)A(gs)-.37 E F0(])A F1(getopts)144
-578.4 Q F0 .793
+607.2 Q F0 .793
 (is used by shell procedures to parse positional parameters.)3.294 F F2
 (optstring)6.023 E F0 .793(contains the option)3.513 F .149
-(characters to be recognized; if a character is follo)144 590.4 R .15
+(characters to be recognized; if a character is follo)144 619.2 R .15
 (wed by a colon, the option is e)-.25 F .15(xpected to ha)-.15 F .45
--.15(ve a)-.2 H(n).15 E(ar)144 602.4 Q .579
+-.15(ve a)-.2 H(n).15 E(ar)144 631.2 Q .579
 (gument, which should be separated from it by white space.)-.18 F .578
 (The colon and question mark char)5.579 F(-)-.2 E 1.665
-(acters may not be used as option characters.)144 614.4 R 1.665
+(acters may not be used as option characters.)144 643.2 R 1.665
 (Each time it is in)6.665 F -.2(vo)-.4 G -.1(ke).2 G(d,).1 E F1(getopts)
 4.165 E F0 1.665(places the ne)4.165 F(xt)-.15 E .797
-(option in the shell v)144 626.4 R(ariable)-.25 E F2(name)3.297 E F0
+(option in the shell v)144 655.2 R(ariable)-.25 E F2(name)3.297 E F0
 3.297(,i).18 G(nitializing)-3.297 E F2(name)3.657 E F0 .797
 (if it does not e)3.477 F .796(xist, and the inde)-.15 F 3.296(xo)-.15 G
-3.296(ft)-3.296 G .796(he ne)-3.296 F(xt)-.15 E(ar)144 638.4 Q .085
-(gument to be processed into the v)-.18 F(ariable)-.25 E F4(OPTIND)2.585
-E/F5 9/Times-Roman@0 SF(.)A F4(OPTIND)4.585 E F0 .085
+3.296(ft)-3.296 G .796(he ne)-3.296 F(xt)-.15 E(ar)144 667.2 Q .085
+(gument to be processed into the v)-.18 F(ariable)-.25 E F3(OPTIND)2.585
+E/F5 9/Times-Roman@0 SF(.)A F3(OPTIND)4.585 E F0 .085
 (is initialized to 1 each time the shell)2.335 F .846
-(or a shell script is in)144 650.4 R -.2(vo)-.4 G -.1(ke).2 G 3.345
+(or a shell script is in)144 679.2 R -.2(vo)-.4 G -.1(ke).2 G 3.345
 (d. When).1 F .845(an option requires an ar)3.345 F(gument,)-.18 E F1
 (getopts)3.345 E F0 .845(places that ar)3.345 F(gument)-.18 E .803
-(into the v)144 662.4 R(ariable)-.25 E F4(OPT)3.303 E(ARG)-.81 E F5(.)A
-F0 .803(The shell does not reset)5.303 F F4(OPTIND)3.303 E F0 .804
+(into the v)144 691.2 R(ariable)-.25 E F3(OPT)3.303 E(ARG)-.81 E F5(.)A
+F0 .803(The shell does not reset)5.303 F F3(OPTIND)3.303 E F0 .804
 (automatically; it must be manually)3.054 F .294
-(reset between multiple calls to)144 674.4 R F1(getopts)2.793 E F0 .293
+(reset between multiple calls to)144 703.2 R F1(getopts)2.793 E F0 .293
 (within the same shell in)2.793 F -.2(vo)-.4 G .293(cation if a ne).2 F
-2.793(ws)-.25 G .293(et of parameters)-2.793 F(is to be used.)144 686.4
-Q 2.043(When the end of options is encountered,)144 710.4 R F1(getopts)
-4.543 E F0 -.15(ex)4.543 G 2.043(its with a return v).15 F 2.044
-(alue greater than zero.)-.25 F F1(OPTIND)144 722.4 Q F0
-(is set to the inde)2.5 E 2.5(xo)-.15 G 2.5(ft)-2.5 G
-(he \214rst non-option ar)-2.5 E(gument, and)-.18 E F1(name)2.5 E F0
-(is set to ?.)2.5 E(GNU Bash-3.0)72 768 Q(2004 June 26)147.345 E(50)
-197.335 E 0 Cg EP
+2.793(ws)-.25 G .293(et of parameters)-2.793 F(is to be used.)144 715.2
+Q(GNU Bash-3.0)72 768 Q(2004 Sep 17)149.01 E(50)199 E 0 Cg EP
 %%Page: 51 51
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\))
--.35 E/F1 10/Times-Bold@0 SF(getopts)144 84 Q F0 2.393
+-.35 E 2.043(When the end of options is encountered,)144 84 R/F1 10
+/Times-Bold@0 SF(getopts)4.543 E F0 -.15(ex)4.543 G 2.043
+(its with a return v).15 F 2.044(alue greater than zero.)-.25 F F1
+(OPTIND)144 96 Q F0(is set to the inde)2.5 E 2.5(xo)-.15 G 2.5(ft)-2.5 G
+(he \214rst non-option ar)-2.5 E(gument, and)-.18 E F1(name)2.5 E F0
+(is set to ?.)2.5 E F1(getopts)144 120 Q F0 2.393
 (normally parses the positional parameters, b)4.893 F 2.392
 (ut if more ar)-.2 F 2.392(guments are gi)-.18 F -.15(ve)-.25 G 4.892
 (ni).15 G(n)-4.892 E/F2 10/Times-Italic@0 SF(ar)4.892 E(gs)-.37 E F0(,)
-.27 E F1(getopts)144 96 Q F0(parses those instead.)2.5 E F1(getopts)144
-120 Q F0 1.165(can report errors in tw)3.665 F 3.665(ow)-.1 G 3.665
+.27 E F1(getopts)144 132 Q F0(parses those instead.)2.5 E F1(getopts)144
+156 Q F0 1.165(can report errors in tw)3.665 F 3.665(ow)-.1 G 3.665
 (ays. If)-3.765 F 1.165(the \214rst character of)3.665 F F2(optstring)
 3.895 E F0 1.166(is a colon,)3.886 F F2(silent)4.006 E F0(error)4.346 E
-1.264(reporting is used.)144 132 R 1.263
+1.264(reporting is used.)144 168 R 1.263
 (In normal operation diagnostic messages are printed when in)6.263 F
--.25(va)-.4 G 1.263(lid options or).25 F .393(missing option ar)144 144
+-.25(va)-.4 G 1.263(lid options or).25 F .393(missing option ar)144 180
 R .393(guments are encountered.)-.18 F .394(If the v)5.394 F(ariable)
 -.25 E/F3 9/Times-Bold@0 SF(OPTERR)2.894 E F0 .394
-(is set to 0, no error messages)2.644 F(will be displayed, e)144 156 Q
+(is set to 0, no error messages)2.644 F(will be displayed, e)144 192 Q
 -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he \214rst character of)-2.5 E
-F2(optstring)2.73 E F0(is not a colon.)2.72 E .667(If an in)144 180 R
+F2(optstring)2.73 E F0(is not a colon.)2.72 E .667(If an in)144 216 R
 -.25(va)-.4 G .667(lid option is seen,).25 F F1(getopts)3.167 E F0 .667
 (places ? into)3.167 F F2(name)3.527 E F0 .666
 (and, if not silent, prints an error message)3.347 F .399(and unsets)144
-192 R F3(OPT)2.899 E(ARG)-.81 E/F4 9/Times-Roman@0 SF(.)A F0(If)4.899 E
+228 R F3(OPT)2.899 E(ARG)-.81 E/F4 9/Times-Roman@0 SF(.)A F0(If)4.899 E
 F1(getopts)2.899 E F0 .399
 (is silent, the option character found is placed in)2.899 F F3(OPT)2.899
-E(ARG)-.81 E F0 .4(and no)2.65 F(diagnostic message is printed.)144 204
-Q 1.242(If a required ar)144 228 R 1.242(gument is not found, and)-.18 F
+E(ARG)-.81 E F0 .4(and no)2.65 F(diagnostic message is printed.)144 240
+Q 1.242(If a required ar)144 264 R 1.242(gument is not found, and)-.18 F
 F1(getopts)3.741 E F0 1.241(is not silent, a question mark \()3.741 F F1
 (?).833 E F0 3.741(\)i).833 G 3.741(sp)-3.741 G 1.241(laced in)-3.741 F
-F2(name)144 240 Q F0(,).18 E F3(OPT)2.734 E(ARG)-.81 E F0 .234
+F2(name)144 276 Q F0(,).18 E F3(OPT)2.734 E(ARG)-.81 E F0 .234
 (is unset, and a diagnostic message is printed.)2.484 F(If)5.234 E F1
 (getopts)2.734 E F0 .235(is silent, then a colon \()2.734 F F1(:).833 E
-F0(\)).833 E(is placed in)144 252 Q F2(name)2.86 E F0(and)2.68 E F3(OPT)
+F0(\)).833 E(is placed in)144 288 Q F2(name)2.86 E F0(and)2.68 E F3(OPT)
 2.5 E(ARG)-.81 E F0(is set to the option character found.)2.25 E F1
-(getopts)144 276 Q F0 .902
+(getopts)144 312 Q F0 .902
 (returns true if an option, speci\214ed or unspeci\214ed, is found.)
 3.402 F .902(It returns f)5.902 F .901(alse if the end of)-.1 F
-(options is encountered or an error occurs.)144 288 Q F1(hash)108 304.8
+(options is encountered or an error occurs.)144 324 Q F1(hash)108 340.8
 Q F0([)2.5 E F1(\255lr)A F0 2.5(][)C F1<ad70>-2.5 E F2(\214lename)2.5 E
 F0 2.5(][)C F1(\255dt)-2.5 E F0 2.5(][)C F2(name)-2.5 E F0(])A -.15(Fo)
-144 316.8 S 3.554(re).15 G(ach)-3.554 E F2(name)3.554 E F0 3.554(,t).18
+144 352.8 S 3.554(re).15 G(ach)-3.554 E F2(name)3.554 E F0 3.554(,t).18
 G 1.054(he full \214le name of the command is determined by searching t\
-he directories in)-3.554 F F1($P)144 328.8 Q -.95(AT)-.74 G(H).95 E F0
+he directories in)-3.554 F F1($P)144 364.8 Q -.95(AT)-.74 G(H).95 E F0
 .35(and remembered.)2.85 F .35(If the)5.35 F F1<ad70>2.85 E F0 .349
 (option is supplied, no path search is performed, and)2.849 F F2
 (\214lename)4.759 E F0 .452
-(is used as the full \214le name of the command.)144 340.8 R(The)5.452 E
+(is used as the full \214le name of the command.)144 376.8 R(The)5.452 E
 F1<ad72>2.952 E F0 .452(option causes the shell to for)2.952 F .453
-(get all remem-)-.18 F .593(bered locations.)144 352.8 R(The)5.593 E F1
+(get all remem-)-.18 F .593(bered locations.)144 388.8 R(The)5.593 E F1
 <ad64>3.093 E F0 .593(option causes the shell to for)3.093 F .592
 (get the remembered location of each)-.18 F F2(name)3.092 E F0(.)A .02
-(If the)144 364.8 R F1<ad74>2.52 E F0 .02
+(If the)144 400.8 R F1<ad74>2.52 E F0 .02
 (option is supplied, the full pathname to which each)2.52 F F2(name)
 2.521 E F0 .021(corresponds is printed.)2.521 F .021(If multi-)5.021 F
-(ple)144 376.8 Q F2(name)3.704 E F0(ar)3.704 E 1.204
+(ple)144 412.8 Q F2(name)3.704 E F0(ar)3.704 E 1.204
 (guments are supplied with)-.18 F F1<ad74>3.703 E F0 3.703(,t)C(he)
 -3.703 E F2(name)3.703 E F0 1.203
-(is printed before the hashed full pathname.)3.703 F(The)144 388.8 Q F1
+(is printed before the hashed full pathname.)3.703 F(The)144 424.8 Q F1
 <ad6c>3.215 E F0 .715(option causes output to be displayed in a format \
 that may be reused as input.)3.215 F .716(If no ar)5.716 F(gu-)-.18 E
-1.184(ments are gi)144 400.8 R -.15(ve)-.25 G 1.184(n, or if only).15 F
+1.184(ments are gi)144 436.8 R -.15(ve)-.25 G 1.184(n, or if only).15 F
 F1<ad6c>3.684 E F0 1.183
 (is supplied, information about remembered commands is printed.)3.684 F
-(The return status is true unless a)144 412.8 Q F2(name)2.86 E F0
+(The return status is true unless a)144 448.8 Q F2(name)2.86 E F0
 (is not found or an in)2.68 E -.25(va)-.4 G(lid option is supplied.).25
-E F1(help)108 429.6 Q F0([)2.5 E F1<ad73>A F0 2.5(][)C F2(pattern)-2.5 E
-F0(])A .866(Display helpful information about b)144 441.6 R .867
+E F1(help)108 465.6 Q F0([)2.5 E F1<ad73>A F0 2.5(][)C F2(pattern)-2.5 E
+F0(])A .866(Display helpful information about b)144 477.6 R .867
 (uiltin commands.)-.2 F(If)5.867 E F2(pattern)4.617 E F0 .867
 (is speci\214ed,)3.607 F F1(help)3.367 E F0(gi)3.367 E -.15(ve)-.25 G
 3.367(sd).15 G(etailed)-3.367 E .307(help on all commands matching)144
-453.6 R F2(pattern)2.807 E F0 2.807(;o).24 G .307
+489.6 R F2(pattern)2.807 E F0 2.807(;o).24 G .307
 (therwise help for all the b)-2.807 F .306
-(uiltins and shell control struc-)-.2 F .596(tures is printed.)144 465.6
+(uiltins and shell control struc-)-.2 F .596(tures is printed.)144 501.6
 R(The)5.596 E F1<ad73>3.096 E F0 .596
 (option restricts the information displayed to a short usage synopsis.)
 3.096 F(The)5.596 E(return status is 0 unless no command matches)144
-477.6 Q F2(pattern)2.5 E F0(.).24 E F1(history [)108 494.4 Q F2(n)A F1
-(])A(history \255c)108 506.4 Q(history \255d)108 518.4 Q F2(of)2.5 E
-(fset)-.18 E F1(history \255anrw)108 530.4 Q F0([)2.5 E F2(\214lename)A
-F0(])A F1(history \255p)108 542.4 Q F2(ar)2.5 E(g)-.37 E F0([)2.5 E F2
-(ar)A 2.5(g.)-.37 G(..)-2.5 E F0(])A F1(history \255s)108 554.4 Q F2(ar)
+513.6 Q F2(pattern)2.5 E F0(.).24 E F1(history [)108 530.4 Q F2(n)A F1
+(])A(history \255c)108 542.4 Q(history \255d)108 554.4 Q F2(of)2.5 E
+(fset)-.18 E F1(history \255anrw)108 566.4 Q F0([)2.5 E F2(\214lename)A
+F0(])A F1(history \255p)108 578.4 Q F2(ar)2.5 E(g)-.37 E F0([)2.5 E F2
+(ar)A 2.5(g.)-.37 G(..)-2.5 E F0(])A F1(history \255s)108 590.4 Q F2(ar)
 2.5 E(g)-.37 E F0([)2.5 E F2(ar)A 2.5(g.)-.37 G(..)-2.5 E F0(])A -.4(Wi)
-144 566.4 S .752
+144 602.4 S .752
 (th no options, display the command history list with line numbers.).4 F
 .752(Lines listed with a)5.752 F F1(*)3.251 E F0(ha)3.251 E -.15(ve)-.2
-G 1.23(been modi\214ed.)144 578.4 R 1.23(An ar)6.23 F 1.23(gument of)
+G 1.23(been modi\214ed.)144 614.4 R 1.23(An ar)6.23 F 1.23(gument of)
 -.18 F F2(n)4.09 E F0 1.231(lists only the last)3.97 F F2(n)4.091 E F0
 3.731(lines. If)3.971 F 1.231(the shell v)3.731 F(ariable)-.25 E F1
-(HISTTIME-)3.731 E(FORMA)144 590.4 Q(T)-.95 E F0 .25
+(HISTTIME-)3.731 E(FORMA)144 626.4 Q(T)-.95 E F0 .25
 (is set and not null, it is used as a format string for)2.75 F F2
 (strftime)2.749 E F0 .249(\(3\) to display the time stamp)B .378
-(associated with each displayed history entry)144 602.4 R 5.378(.N)-.65
+(associated with each displayed history entry)144 638.4 R 5.378(.N)-.65
 G 2.878(oi)-5.378 G(nterv)-2.878 E .379
 (ening blank is printed between the format-)-.15 F .815
-(ted time stamp and the history line.)144 614.4 R(If)5.814 E F2
+(ted time stamp and the history line.)144 650.4 R(If)5.814 E F2
 (\214lename)3.314 E F0 .814
 (is supplied, it is used as the name of the history)3.314 F
-(\214le; if not, the v)144 626.4 Q(alue of)-.25 E F3(HISTFILE)2.5 E F0
+(\214le; if not, the v)144 662.4 Q(alue of)-.25 E F3(HISTFILE)2.5 E F0
 (is used.)2.25 E(Options, if supplied, ha)5 E .3 -.15(ve t)-.2 H
-(he follo).15 E(wing meanings:)-.25 E F1<ad63>144 638.4 Q F0
+(he follo).15 E(wing meanings:)-.25 E F1<ad63>144 674.4 Q F0
 (Clear the history list by deleting all the entries.)25.86 E F1<ad64>144
-650.4 Q F2(of)2.5 E(fset)-.18 E F0(Delete the history entry at position)
-180 662.4 Q F2(of)2.5 E(fset)-.18 E F0(.)A F1<ad61>144 674.4 Q F0 .598
+686.4 Q F2(of)2.5 E(fset)-.18 E F0(Delete the history entry at position)
+180 698.4 Q F2(of)2.5 E(fset)-.18 E F0(.)A F1<ad61>144 710.4 Q F0 .598
 (Append the `)25.3 F(`ne)-.74 E(w')-.25 E 3.098('h)-.74 G .598
 (istory lines \(history lines entered since the be)-3.098 F .599
-(ginning of the current)-.15 F F1(bash)180 686.4 Q F0
-(session\) to the history \214le.)2.5 E F1<ad6e>144 698.4 Q F0 .854(Rea\
-d the history lines not already read from the history \214le into the c\
-urrent history list.)24.74 F .772
-(These are lines appended to the history \214le since the be)180 710.4 R
-.773(ginning of the current)-.15 F F1(bash)3.273 E F0(ses-)3.273 E
-(sion.)180 722.4 Q(GNU Bash-3.0)72 768 Q(2004 June 26)147.345 E(51)
-197.335 E 0 Cg EP
+(ginning of the current)-.15 F F1(bash)180 722.4 Q F0
+(session\) to the history \214le.)2.5 E(GNU Bash-3.0)72 768 Q
+(2004 Sep 17)149.01 E(51)199 E 0 Cg EP
 %%Page: 52 52
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\))
--.35 E/F1 10/Times-Bold@0 SF<ad72>144 84 Q F0(Read the contents of the \
-history \214le and use them as the current history)25.86 E(.)-.65 E F1
-<ad77>144 96 Q F0(Write the current history to the history \214le, o)
-23.08 E -.15(ve)-.15 G(rwriting the history \214le').15 E 2.5(sc)-.55 G
-(ontents.)-2.5 E F1<ad70>144 108 Q F0 .626
+-.35 E/F1 10/Times-Bold@0 SF<ad6e>144 84 Q F0 .854(Read the history lin\
+es not already read from the history \214le into the current history li\
+st.)24.74 F .772
+(These are lines appended to the history \214le since the be)180 96 R
+.773(ginning of the current)-.15 F F1(bash)3.273 E F0(ses-)3.273 E
+(sion.)180 108 Q F1<ad72>144 120 Q F0(Read the contents of the history \
+\214le and use them as the current history)25.86 E(.)-.65 E F1<ad77>144
+132 Q F0(Write the current history to the history \214le, o)23.08 E -.15
+(ve)-.15 G(rwriting the history \214le').15 E 2.5(sc)-.55 G(ontents.)
+-2.5 E F1<ad70>144 144 Q F0 .626
 (Perform history substitution on the follo)24.74 F(wing)-.25 E/F2 10
 /Times-Italic@0 SF(ar)3.125 E(gs)-.37 E F0 .625
 (and display the result on the standard)3.125 F 2.975(output. Does)180
-120 R .475(not store the results in the history list.)2.975 F(Each)5.475
+156 R .475(not store the results in the history list.)2.975 F(Each)5.475
 E F2(ar)2.975 E(g)-.37 E F0 .475(must be quoted to disable)2.975 F
-(normal history e)180 132 Q(xpansion.)-.15 E F1<ad73>144 144 Q F0 .363
+(normal history e)180 168 Q(xpansion.)-.15 E F1<ad73>144 180 Q F0 .363
 (Store the)26.41 F F2(ar)3.193 E(gs)-.37 E F0 .363
 (in the history list as a single entry)3.133 F 5.363(.T)-.65 G .362
-(he last command in the history list is)-5.363 F(remo)180 156 Q -.15(ve)
+(he last command in the history list is)-5.363 F(remo)180 192 Q -.15(ve)
 -.15 G 2.5(db).15 G(efore the)-2.5 E F2(ar)2.83 E(gs)-.37 E F0
-(are added.)2.77 E .28(If the)144 172.8 R F1(HISTTIMEFORMA)2.78 E(T)-.95
+(are added.)2.77 E .28(If the)144 208.8 R F1(HISTTIMEFORMA)2.78 E(T)-.95
 E F0 .28
 (is set, the time stamp information associated with each history entry)
-2.78 F .216(is written to the history \214le.)144 184.8 R .216
+2.78 F .216(is written to the history \214le.)144 220.8 R .216
 (The return v)5.216 F .216(alue is 0 unless an in)-.25 F -.25(va)-.4 G
 .216(lid option is encountered, an error).25 F .422
-(occurs while reading or writing the history \214le, an in)144 196.8 R
+(occurs while reading or writing the history \214le, an in)144 232.8 R
 -.25(va)-.4 G(lid).25 E F2(of)2.922 E(fset)-.18 E F0 .422
 (is supplied as an ar)2.922 F .422(gument to)-.18 F F1<ad64>2.922 E F0
-(,)A(or the history e)144 208.8 Q(xpansion supplied as an ar)-.15 E
+(,)A(or the history e)144 244.8 Q(xpansion supplied as an ar)-.15 E
 (gument to)-.18 E F1<ad70>2.5 E F0 -.1(fa)2.5 G(ils.).1 E F1(jobs)108
-225.6 Q F0([)2.5 E F1(\255lnprs)A F0 2.5(][)C F2(jobspec)A F0(... ])2.5
-E F1(jobs \255x)108 237.6 Q F2(command)2.5 E F0([)2.5 E F2(ar)2.5 E(gs)
--.37 E F0(... ])2.5 E(The \214rst form lists the acti)144 249.6 Q .3
+261.6 Q F0([)2.5 E F1(\255lnprs)A F0 2.5(][)C F2(jobspec)A F0(... ])2.5
+E F1(jobs \255x)108 273.6 Q F2(command)2.5 E F0([)2.5 E F2(ar)2.5 E(gs)
+-.37 E F0(... ])2.5 E(The \214rst form lists the acti)144 285.6 Q .3
 -.15(ve j)-.25 H 2.5(obs. The).15 F(options ha)2.5 E .3 -.15(ve t)-.2 H
-(he follo).15 E(wing meanings:)-.25 E F1<ad6c>144 261.6 Q F0
+(he follo).15 E(wing meanings:)-.25 E F1<ad6c>144 297.6 Q F0
 (List process IDs in addition to the normal information.)27.52 E F1
-<ad70>144 273.6 Q F0(List only the process ID of the job')24.74 E 2.5
-(sp)-.55 G(rocess group leader)-2.5 E(.)-.55 E F1<ad6e>144 285.6 Q F0
+<ad70>144 309.6 Q F0(List only the process ID of the job')24.74 E 2.5
+(sp)-.55 G(rocess group leader)-2.5 E(.)-.55 E F1<ad6e>144 321.6 Q F0
 .194(Display information only about jobs that ha)24.74 F .494 -.15(ve c)
 -.2 H .193(hanged status since the user w).15 F .193(as last noti-)-.1 F
-(\214ed of their status.)180 297.6 Q F1<ad72>144 309.6 Q F0
-(Restrict output to running jobs.)25.86 E F1<ad73>144 321.6 Q F0
-(Restrict output to stopped jobs.)26.41 E(If)144 338.4 Q F2(jobspec)
+(\214ed of their status.)180 333.6 Q F1<ad72>144 345.6 Q F0
+(Restrict output to running jobs.)25.86 E F1<ad73>144 357.6 Q F0
+(Restrict output to stopped jobs.)26.41 E(If)144 374.4 Q F2(jobspec)
 4.553 E F0 .313(is gi)3.123 F -.15(ve)-.25 G .313
 (n, output is restricted to information about that job).15 F 5.314(.T)
--.4 G .314(he return status is 0 unless)-5.314 F(an in)144 350.4 Q -.25
+-.4 G .314(he return status is 0 unless)-5.314 F(an in)144 386.4 Q -.25
 (va)-.4 G(lid option is encountered or an in).25 E -.25(va)-.4 G(lid).25
-E F2(jobspec)4.24 E F0(is supplied.)2.81 E .395(If the)144 367.2 R F1
+E F2(jobspec)4.24 E F0(is supplied.)2.81 E .395(If the)144 403.2 R F1
 <ad78>2.895 E F0 .394(option is supplied,)2.894 F F1(jobs)2.894 E F0
 .394(replaces an)2.894 F(y)-.15 E F2(jobspec)4.634 E F0 .394(found in)
 3.204 F F2(command)3.094 E F0(or)3.664 E F2(ar)3.224 E(gs)-.37 E F0 .394
-(with the corre-)3.164 F(sponding process group ID, and e)144 379.2 Q
+(with the corre-)3.164 F(sponding process group ID, and e)144 415.2 Q
 -.15(xe)-.15 G(cutes).15 E F2(command)2.7 E F0(passing it)3.27 E F2(ar)
 2.5 E(gs)-.37 E F0 2.5(,r).27 G(eturning its e)-2.5 E(xit status.)-.15 E
-F1(kill)108 396 Q F0([)2.5 E F1<ad73>A F2(sigspec)2.5 E F0(|)2.5 E F1
+F1(kill)108 432 Q F0([)2.5 E F1<ad73>A F2(sigspec)2.5 E F0(|)2.5 E F1
 <ad6e>2.5 E F2(signum)2.5 E F0(|)2.5 E F1<ad>2.5 E F2(sigspec)A F0 2.5
 (][)C F2(pid)-2.5 E F0(|)2.5 E F2(jobspec)2.5 E F0 2.5(].)C(..)-2.5 E F1
-(kill \255l)108 408 Q F0([)2.5 E F2(sigspec)A F0(|)2.5 E F2 -.2(ex)2.5 G
-(it_status).2 E F0(])A .119(Send the signal named by)144 420 R F2
+(kill \255l)108 444 Q F0([)2.5 E F2(sigspec)A F0(|)2.5 E F2 -.2(ex)2.5 G
+(it_status).2 E F0(])A .119(Send the signal named by)144 456 R F2
 (sigspec)2.959 E F0(or)2.929 E F2(signum)2.959 E F0 .119
 (to the processes named by)2.939 F F2(pid)3.87 E F0(or)3.39 E F2
 (jobspec)2.62 E F0(.).31 E F2(sigspec)5.46 E F0(is)2.93 E .319
-(either a case-insensiti)144 432 R .619 -.15(ve s)-.25 H .319
+(either a case-insensiti)144 468 R .619 -.15(ve s)-.25 H .319
 (ignal name such as).15 F/F3 9/Times-Bold@0 SF(SIGKILL)2.819 E F0 .318
 (\(with or without the)2.569 F F3(SIG)2.818 E F0 .318
-(pre\214x\) or a signal)2.568 F(number;)144 444 Q F2(signum)4.188 E F0
+(pre\214x\) or a signal)2.568 F(number;)144 480 Q F2(signum)4.188 E F0
 1.349(is a signal number)4.168 F 6.349(.I)-.55 G(f)-6.349 E F2(sigspec)
 4.189 E F0 1.349(is not present, then)4.159 F F3(SIGTERM)3.849 E F0
-1.349(is assumed.)3.599 F(An)6.349 E(ar)144 456 Q .523(gument of)-.18 F
+1.349(is assumed.)3.599 F(An)6.349 E(ar)144 492 Q .523(gument of)-.18 F
 F1<ad6c>3.023 E F0 .523(lists the signal names.)3.023 F .523(If an)5.523
 F 3.023(ya)-.15 G -.18(rg)-3.023 G .523(uments are supplied when).18 F
 F1<ad6c>3.023 E F0 .523(is gi)3.023 F -.15(ve)-.25 G .523(n, the names)
-.15 F .28(of the signals corresponding to the ar)144 468 R .28
+.15 F .28(of the signals corresponding to the ar)144 504 R .28
 (guments are listed, and the return status is 0.)-.18 F(The)5.28 E F2
--.2(ex)2.78 G(it_status).2 E F0(ar)144 480 Q .378(gument to)-.18 F F1
+-.2(ex)2.78 G(it_status).2 E F0(ar)144 516 Q .378(gument to)-.18 F F1
 <ad6c>2.878 E F0 .378
 (is a number specifying either a signal number or the e)2.878 F .377
-(xit status of a process termi-)-.15 F .593(nated by a signal.)144 492 R
+(xit status of a process termi-)-.15 F .593(nated by a signal.)144 528 R
 F1(kill)5.593 E F0 .593(returns true if at least one signal w)3.093 F
 .593(as successfully sent, or f)-.1 F .594(alse if an error)-.1 F
-(occurs or an in)144 504 Q -.25(va)-.4 G(lid option is encountered.).25
-E F1(let)108 520.8 Q F2(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A(g)-.37 E F0
-(...])2.5 E(Each)144 532.8 Q F2(ar)3.965 E(g)-.37 E F0 1.135
+(occurs or an in)144 540 Q -.25(va)-.4 G(lid option is encountered.).25
+E F1(let)108 556.8 Q F2(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A(g)-.37 E F0
+(...])2.5 E(Each)144 568.8 Q F2(ar)3.965 E(g)-.37 E F0 1.135
 (is an arithmetic e)3.855 F 1.134(xpression to be e)-.15 F -.25(va)-.25
 G 1.134(luated \(see).25 F F3 1.134(ARITHMETIC EV)3.634 F(ALU)-1.215 E
 -.855(AT)-.54 G(ION).855 E/F4 9/Times-Roman@0 SF(\).)A F0 1.134(If the)
-5.634 F(last)144 544.8 Q F2(ar)2.83 E(g)-.37 E F0 -.25(eva)2.72 G
+5.634 F(last)144 580.8 Q F2(ar)2.83 E(g)-.37 E F0 -.25(eva)2.72 G
 (luates to 0,).25 E F1(let)2.5 E F0(returns 1; 0 is returned otherwise.)
-2.5 E F1(local)108 561.6 Q F0([)2.5 E F2(option)A F0 2.5(][)C F2(name)
--2.5 E F0([=)A F2(value)A F0 2.5(].)C(..])-2.5 E -.15(Fo)144 573.6 S
+2.5 E F1(local)108 597.6 Q F0([)2.5 E F2(option)A F0 2.5(][)C F2(name)
+-2.5 E F0([=)A F2(value)A F0 2.5(].)C(..])-2.5 E -.15(Fo)144 609.6 S
 2.56(re).15 G .06(ach ar)-2.56 F .06(gument, a local v)-.18 F .06
 (ariable named)-.25 F F2(name)2.92 E F0 .06(is created, and assigned)
 2.74 F F2(value)2.56 E F0 5.06(.T).18 G(he)-5.06 E F2(option)2.56 E F0
-.06(can be)2.56 F(an)144 585.6 Q 3.153(yo)-.15 G 3.153(ft)-3.153 G .653
+.06(can be)2.56 F(an)144 621.6 Q 3.153(yo)-.15 G 3.153(ft)-3.153 G .653
 (he options accepted by)-3.153 F F1(declar)3.153 E(e)-.18 E F0 5.652(.W)
 C(hen)-5.652 E F1(local)3.152 E F0 .652
 (is used within a function, it causes the v)3.152 F(ari-)-.25 E(able)144
-597.6 Q F2(name)3.72 E F0 .86(to ha)3.54 F 1.16 -.15(ve a v)-.2 H .861
+633.6 Q F2(name)3.72 E F0 .86(to ha)3.54 F 1.16 -.15(ve a v)-.2 H .861
 (isible scope restricted to that function and its children.).15 F -.4
-(Wi)5.861 G .861(th no operands,).4 F F1(local)144 609.6 Q F0 1.165
+(Wi)5.861 G .861(th no operands,).4 F F1(local)144 645.6 Q F0 1.165
 (writes a list of local v)3.665 F 1.165
 (ariables to the standard output.)-.25 F 1.165(It is an error to use)
 6.165 F F1(local)3.664 E F0 1.164(when not)3.664 F .232
-(within a function.)144 621.6 R .233(The return status is 0 unless)5.232
+(within a function.)144 657.6 R .233(The return status is 0 unless)5.232
 F F1(local)2.733 E F0 .233(is used outside a function, an in)2.733 F
 -.25(va)-.4 G(lid).25 E F2(name)3.093 E F0(is)2.913 E(supplied, or)144
-633.6 Q F2(name)2.5 E F0(is a readonly v)2.5 E(ariable.)-.25 E F1
-(logout)108 650.4 Q F0(Exit a login shell.)9.33 E F1(popd)108 667.2 Q F0
+669.6 Q F2(name)2.5 E F0(is a readonly v)2.5 E(ariable.)-.25 E F1
+(logout)108 686.4 Q F0(Exit a login shell.)9.33 E F1(popd)108 703.2 Q F0
 <5bad>2.5 E F1(n)A F0 2.5(][)C(+)-2.5 E F2(n)A F0 2.5(][)C<ad>-2.5 E F2
-(n)A F0(])A(Remo)144 679.2 Q -.15(ve)-.15 G 2.8(se).15 G .3
+(n)A F0(])A(Remo)144 715.2 Q -.15(ve)-.15 G 2.8(se).15 G .3
 (ntries from the directory stack.)-2.8 F -.4(Wi)5.299 G .299(th no ar).4
 F .299(guments, remo)-.18 F -.15(ve)-.15 G 2.799(st).15 G .299
 (he top directory from the)-2.799 F 1.478(stack, and performs a)144
-691.2 R F1(cd)3.978 E F0 1.479(to the ne)3.978 F 3.979(wt)-.25 G 1.479
+727.2 R F1(cd)3.978 E F0 1.479(to the ne)3.978 F 3.979(wt)-.25 G 1.479
 (op directory)-3.979 F 6.479(.A)-.65 G -.18(rg)-6.479 G 1.479
 (uments, if supplied, ha).18 F 1.779 -.15(ve t)-.2 H 1.479(he follo).15
-F(wing)-.25 E(meanings:)144 703.2 Q F1(+)144 715.2 Q F2(n)A F0(Remo)25.3
-E -.15(ve)-.15 G 2.64(st).15 G(he)-2.64 E F2(n)2.64 E F0 .14
-(th entry counting from the left of the list sho)B .14(wn by)-.25 F F1
-(dirs)2.64 E F0 2.64(,s)C .14(tarting with zero.)-2.64 F -.15(Fo)180
-727.2 S 2.5(re).15 G(xample:)-2.65 E/F5 10/Courier@0 SF(popd +0)2.5 E F0
-(remo)2.5 E -.15(ve)-.15 G 2.5(st).15 G(he \214rst directory)-2.5 E(,)
--.65 E F5(popd +1)2.5 E F0(the second.)2.5 E(GNU Bash-3.0)72 768 Q
-(2004 June 26)147.345 E(52)197.335 E 0 Cg EP
+F(wing)-.25 E(GNU Bash-3.0)72 768 Q(2004 Sep 17)149.01 E(52)199 E 0 Cg
+EP
 %%Page: 53 53
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\))
--.35 E/F1 10/Times-Bold@0 SF<ad>144 84 Q/F2 10/Times-Italic@0 SF(n)A F0
-(Remo)25.3 E -.15(ve)-.15 G 3.759(st).15 G(he)-3.759 E F2(n)3.759 E F0
-1.259(th entry counting from the right of the list sho)B 1.26(wn by)-.25
-F F1(dirs)3.76 E F0 3.76(,s)C 1.26(tarting with)-3.76 F 2.5(zero. F)180
-96 R(or e)-.15 E(xample:)-.15 E/F3 10/Courier@0 SF(popd -0)2.5 E F0
-(remo)2.5 E -.15(ve)-.15 G 2.5(st).15 G(he last directory)-2.5 E(,)-.65
-E F3(popd -1)2.5 E F0(the ne)2.5 E(xt to last.)-.15 E F1<ad6e>144 108 Q
-F0 .551(Suppresses the normal change of directory when remo)24.74 F .551
+-.35 E(meanings:)144 84 Q/F1 10/Times-Bold@0 SF(+)144 96 Q/F2 10
+/Times-Italic@0 SF(n)A F0(Remo)25.3 E -.15(ve)-.15 G 2.64(st).15 G(he)
+-2.64 E F2(n)2.64 E F0 .14
+(th entry counting from the left of the list sho)B .14(wn by)-.25 F F1
+(dirs)2.64 E F0 2.64(,s)C .14(tarting with zero.)-2.64 F -.15(Fo)180 108
+S 2.5(re).15 G(xample:)-2.65 E/F3 10/Courier@0 SF(popd +0)2.5 E F0(remo)
+2.5 E -.15(ve)-.15 G 2.5(st).15 G(he \214rst directory)-2.5 E(,)-.65 E
+F3(popd +1)2.5 E F0(the second.)2.5 E F1<ad>144 120 Q F2(n)A F0(Remo)
+25.3 E -.15(ve)-.15 G 3.759(st).15 G(he)-3.759 E F2(n)3.759 E F0 1.259
+(th entry counting from the right of the list sho)B 1.26(wn by)-.25 F F1
+(dirs)3.76 E F0 3.76(,s)C 1.26(tarting with)-3.76 F 2.5(zero. F)180 132
+R(or e)-.15 E(xample:)-.15 E F3(popd -0)2.5 E F0(remo)2.5 E -.15(ve)-.15
+G 2.5(st).15 G(he last directory)-2.5 E(,)-.65 E F3(popd -1)2.5 E F0
+(the ne)2.5 E(xt to last.)-.15 E F1<ad6e>144 144 Q F0 .551
+(Suppresses the normal change of directory when remo)24.74 F .551
 (ving directories from the stack, so)-.15 F
-(that only the stack is manipulated.)180 120 Q .643(If the)144 136.8 R
+(that only the stack is manipulated.)180 156 Q .643(If the)144 172.8 R
 F1(popd)3.143 E F0 .643(command is successful, a)3.143 F F1(dirs)3.143 E
 F0 .644(is performed as well, and the return status is 0.)3.143 F F1
-(popd)5.644 E F0 .416(returns f)144 148.8 R .416(alse if an in)-.1 F
+(popd)5.644 E F0 .416(returns f)144 184.8 R .416(alse if an in)-.1 F
 -.25(va)-.4 G .415
 (lid option is encountered, the directory stack is empty).25 F 2.915
 (,an)-.65 G(on-e)-2.915 E .415(xistent direc-)-.15 F
-(tory stack entry is speci\214ed, or the directory change f)144 160.8 Q
-(ails.)-.1 E F1(printf)108 177.6 Q F2(format)2.5 E F0([)2.5 E F2(ar)A
-(guments)-.37 E F0(])A .372(Write the formatted)144 189.6 R F2(ar)2.872
+(tory stack entry is speci\214ed, or the directory change f)144 196.8 Q
+(ails.)-.1 E F1(printf)108 213.6 Q F2(format)2.5 E F0([)2.5 E F2(ar)A
+(guments)-.37 E F0(])A .372(Write the formatted)144 225.6 R F2(ar)2.872
 E(guments)-.37 E F0 .372
 (to the standard output under the control of the)2.872 F F2(format)2.872
 E F0 5.372(.T)C(he)-5.372 E F2(format)2.872 E F0 1.804(is a character s\
 tring which contains three types of objects: plain characters, which ar\
-e simply)144 201.6 R .158
+e simply)144 237.6 R .158
 (copied to standard output, character escape sequences, which are con)
-144 213.6 R -.15(ve)-.4 G .159(rted and copied to the stan-).15 F .499(\
+144 249.6 R -.15(ve)-.4 G .159(rted and copied to the stan-).15 F .499(\
 dard output, and format speci\214cations, each of which causes printing\
- of the ne)144 225.6 R .499(xt successi)-.15 F -.15(ve)-.25 G F2(ar)
-3.149 E(gu-)-.37 E(ment)144 237.6 Q F0 5.423(.I)C 2.923(na)-5.423 G .423
+ of the ne)144 261.6 R .499(xt successi)-.15 F -.15(ve)-.25 G F2(ar)
+3.149 E(gu-)-.37 E(ment)144 273.6 Q F0 5.423(.I)C 2.923(na)-5.423 G .423
 (ddition to the standard)-2.923 F F2(printf)2.923 E F0 .424
 (\(1\) formats,)B F1(%b)2.924 E F0(causes)2.924 E F1(printf)2.924 E F0
 .424(to e)2.924 F .424(xpand backslash escape)-.15 F .934
-(sequences in the corresponding)144 249.6 R F2(ar)3.434 E(gument)-.37 E
+(sequences in the corresponding)144 285.6 R F2(ar)3.434 E(gument)-.37 E
 F0(\(e)3.434 E .934(xcept that)-.15 F F1(\\c)3.434 E F0 .934
 (terminates output, backslashes in)3.434 F F1(\\')3.433 E F0(,)A F1(\\")
-3.433 E F0(,)A(and)144 261.6 Q F1(\\?)3.421 E F0 .921(are not remo)3.421
+3.433 E F0(,)A(and)144 297.6 Q F1(\\?)3.421 E F0 .921(are not remo)3.421
 F -.15(ve)-.15 G .922(d, and octal escapes be).15 F .922(ginning with)
 -.15 F F1(\\0)3.422 E F0 .922(may contain up to four digits\), and)3.422
-F F1(%q)144 273.6 Q F0(causes)3.631 E F1(printf)3.631 E F0 1.131
+F F1(%q)144 309.6 Q F0(causes)3.631 E F1(printf)3.631 E F0 1.131
 (to output the corresponding)3.631 F F2(ar)3.631 E(gument)-.37 E F0 1.13
-(in a format that can be reused as shell)3.631 F(input.)144 285.6 Q(The)
-144 309.6 Q F2(format)3.423 E F0 .923
+(in a format that can be reused as shell)3.631 F(input.)144 321.6 Q(The)
+144 345.6 Q F2(format)3.423 E F0 .923
 (is reused as necessary to consume all of the)3.423 F F2(ar)3.423 E
 (guments)-.37 E F0 5.923(.I)C 3.423(ft)-5.923 G(he)-3.423 E F2(format)
-3.423 E F0 .924(requires more)3.424 F F2(ar)144 321.6 Q(guments)-.37 E
+3.423 E F0 .924(requires more)3.424 F F2(ar)144 357.6 Q(guments)-.37 E
 F0 .033(than are supplied, the e)2.534 F .033
 (xtra format speci\214cations beha)-.15 F .333 -.15(ve a)-.2 H 2.533(si)
 .15 G 2.533(faz)-2.533 G .033(ero v)-2.533 F .033(alue or null string,)
--.25 F(as appropriate, had been supplied.)144 333.6 Q(The return v)5 E
+-.25 F(as appropriate, had been supplied.)144 369.6 Q(The return v)5 E
 (alue is zero on success, non-zero on f)-.25 E(ailure.)-.1 E F1(pushd)
-108 350.4 Q F0([)2.5 E F1<ad6e>A F0 2.5(][)C F2(dir)-2.5 E F0(])A F1
-(pushd)108 362.4 Q F0([)2.5 E F1<ad6e>A F0 2.5(][)C(+)-2.5 E F2(n)A F0
+108 386.4 Q F0([)2.5 E F1<ad6e>A F0 2.5(][)C F2(dir)-2.5 E F0(])A F1
+(pushd)108 398.4 Q F0([)2.5 E F1<ad6e>A F0 2.5(][)C(+)-2.5 E F2(n)A F0
 2.5(][)C<ad>-2.5 E F2(n)A F0(])A .639(Adds a directory to the top of th\
-e directory stack, or rotates the stack, making the ne)144 374.4 R 3.14
-(wt)-.25 G .64(op of the)-3.14 F 1.316(stack the current w)144 386.4 R
+e directory stack, or rotates the stack, making the ne)144 410.4 R 3.14
+(wt)-.25 G .64(op of the)-3.14 F 1.316(stack the current w)144 422.4 R
 1.316(orking directory)-.1 F 6.316(.W)-.65 G 1.315(ith no ar)-6.716 F
 1.315(guments, e)-.18 F 1.315(xchanges the top tw)-.15 F 3.815(od)-.1 G
 1.315(irectories and)-3.815 F .871
-(returns 0, unless the directory stack is empty)144 398.4 R 5.871(.A)
+(returns 0, unless the directory stack is empty)144 434.4 R 5.871(.A)
 -.65 G -.18(rg)-5.871 G .872(uments, if supplied, ha).18 F 1.172 -.15
-(ve t)-.2 H .872(he follo).15 F .872(wing mean-)-.25 F(ings:)144 410.4 Q
-F1(+)144 422.4 Q F2(n)A F0 1.268(Rotates the stack so that the)25.3 F F2
+(ve t)-.2 H .872(he follo).15 F .872(wing mean-)-.25 F(ings:)144 446.4 Q
+F1(+)144 458.4 Q F2(n)A F0 1.268(Rotates the stack so that the)25.3 F F2
 (n)3.768 E F0 1.267
 (th directory \(counting from the left of the list sho)B 1.267(wn by)
--.25 F F1(dirs)180 434.4 Q F0 2.5(,s)C
-(tarting with zero\) is at the top.)-2.5 E F1<ad>144 446.4 Q F2(n)A F0
+-.25 F F1(dirs)180 470.4 Q F0 2.5(,s)C
+(tarting with zero\) is at the top.)-2.5 E F1<ad>144 482.4 Q F2(n)A F0
 .92(Rotates the stack so that the)25.3 F F2(n)3.42 E F0 .92
 (th directory \(counting from the right of the list sho)B .92(wn by)-.25
-F F1(dirs)180 458.4 Q F0 2.5(,s)C(tarting with zero\) is at the top.)
--2.5 E F1<ad6e>144 470.4 Q F0 .902(Suppresses the normal change of dire\
+F F1(dirs)180 494.4 Q F0 2.5(,s)C(tarting with zero\) is at the top.)
+-2.5 E F1<ad6e>144 506.4 Q F0 .902(Suppresses the normal change of dire\
 ctory when adding directories to the stack, so that)24.74 F
-(only the stack is manipulated.)180 482.4 Q F2(dir)144.35 494.4 Q F0
+(only the stack is manipulated.)180 518.4 Q F2(dir)144.35 530.4 Q F0
 (Adds)23.98 E F2(dir)2.85 E F0
 (to the directory stack at the top, making it the ne)3.23 E 2.5(wc)-.25
-G(urrent w)-2.5 E(orking directory)-.1 E(.)-.65 E .488(If the)144 511.2
+G(urrent w)-2.5 E(orking directory)-.1 E(.)-.65 E .488(If the)144 547.2
 R F1(pushd)2.988 E F0 .488(command is successful, a)2.988 F F1(dirs)
 2.988 E F0 .488(is performed as well.)2.988 F .489
 (If the \214rst form is used,)5.488 F F1(pushd)2.989 E F0 1.04
-(returns 0 unless the cd to)144 523.2 R F2(dir)3.89 E F0 -.1(fa)4.27 G
+(returns 0 unless the cd to)144 559.2 R F2(dir)3.89 E F0 -.1(fa)4.27 G
 3.539(ils. W).1 F 1.039(ith the second form,)-.4 F F1(pushd)3.539 E F0
 1.039(returns 0 unless the directory)3.539 F .846(stack is empty)144
-535.2 R 3.346(,an)-.65 G(on-e)-3.346 E .847(xistent directory stack ele\
+571.2 R 3.346(,an)-.65 G(on-e)-3.346 E .847(xistent directory stack ele\
 ment is speci\214ed, or the directory change to the)-.15 F
-(speci\214ed ne)144 547.2 Q 2.5(wc)-.25 G(urrent directory f)-2.5 E
-(ails.)-.1 E F1(pwd)108 564 Q F0([)2.5 E F1(\255LP)A F0(])A .845
-(Print the absolute pathname of the current w)144 576 R .845
+(speci\214ed ne)144 583.2 Q 2.5(wc)-.25 G(urrent directory f)-2.5 E
+(ails.)-.1 E F1(pwd)108 600 Q F0([)2.5 E F1(\255LP)A F0(])A .845
+(Print the absolute pathname of the current w)144 612 R .845
 (orking directory)-.1 F 5.844(.T)-.65 G .844
 (he pathname printed contains no)-5.844 F .181(symbolic links if the)144
-588 R F1<ad50>2.681 E F0 .181(option is supplied or the)2.681 F F1 .181
+624 R F1<ad50>2.681 E F0 .181(option is supplied or the)2.681 F F1 .181
 (\255o ph)2.681 F(ysical)-.15 E F0 .181(option to the)2.681 F F1(set)
 2.681 E F0 -.2(bu)2.681 G .182(iltin command is).2 F 3.264(enabled. If)
-144 600 R(the)3.264 E F1<ad4c>3.264 E F0 .763
+144 636 R(the)3.264 E F1<ad4c>3.264 E F0 .763
 (option is used, the pathname printed may contain symbolic links.)3.264
 F .763(The return)5.763 F 1.36(status is 0 unless an error occurs while\
- reading the name of the current directory or an in)144 612 R -.25(va)
--.4 G(lid).25 E(option is supplied.)144 624 Q F1 -.18(re)108 640.8 S(ad)
+ reading the name of the current directory or an in)144 648 R -.25(va)
+-.4 G(lid).25 E(option is supplied.)144 660 Q F1 -.18(re)108 676.8 S(ad)
 .18 E F0([)2.5 E F1(\255ers)A F0 2.5(][)C F1<ad75>-2.5 E F2(fd)2.5 E F0
 2.5(][)C F1<ad74>-2.5 E F2(timeout)2.5 E F0 2.5(][)C F1<ad61>-2.5 E F2
 (aname)2.5 E F0 2.5(][)C F1<ad70>-2.5 E F2(pr)2.5 E(ompt)-.45 E F0 2.5
 (][)C F1<ad6e>-2.5 E F2(nc)2.5 E(har)-.15 E(s)-.1 E F0 2.5(][)C F1<ad64>
 -2.5 E F2(delim)2.5 E F0 2.5(][)C F2(name)-2.5 E F0(...])2.5 E .516(One\
  line is read from the standard input, or from the \214le descriptor)144
-652.8 R F2(fd)3.016 E F0 .516(supplied as an ar)3.016 F .516(gument to)
--.18 F(the)144 664.8 Q F1<ad75>2.538 E F0 .038
+688.8 R F2(fd)3.016 E F0 .516(supplied as an ar)3.016 F .516(gument to)
+-.18 F(the)144 700.8 Q F1<ad75>2.538 E F0 .038
 (option, and the \214rst w)2.538 F .038(ord is assigned to the \214rst)
 -.1 F F2(name)2.539 E F0 2.539(,t).18 G .039(he second w)-2.539 F .039
 (ord to the second)-.1 F F2(name)2.539 E F0(,).18 E .42
-(and so on, with lefto)144 676.8 R -.15(ve)-.15 G 2.92(rw).15 G .42
+(and so on, with lefto)144 712.8 R -.15(ve)-.15 G 2.92(rw).15 G .42
 (ords and their interv)-3.02 F .42
 (ening separators assigned to the last)-.15 F F2(name)2.92 E F0 5.42(.I)
-.18 G 2.92(ft)-5.42 G(here)-2.92 E .54(are fe)144 688.8 R .54(wer w)-.25
+.18 G 2.92(ft)-5.42 G(here)-2.92 E .54(are fe)144 724.8 R .54(wer w)-.25
 F .541(ords read from the input stream than names, the remaining names \
-are assigned empty)-.1 F -.25(va)144 700.8 S 2.511(lues. The).25 F .011
-(characters in)2.511 F/F4 9/Times-Bold@0 SF(IFS)2.511 E F0 .011
-(are used to split the line into w)2.261 F 2.511(ords. The)-.1 F .011
-(backslash character \()2.511 F F1(\\)A F0 2.51(\)m)C(ay)-2.51 E 1.89
-(be used to remo)144 712.8 R 2.19 -.15(ve a)-.15 H 2.19 -.15(ny s).15 H
-1.891(pecial meaning for the ne).15 F 1.891
-(xt character read and for line continuation.)-.15 F
-(Options, if supplied, ha)144 724.8 Q .3 -.15(ve t)-.2 H(he follo).15 E
-(wing meanings:)-.25 E(GNU Bash-3.0)72 768 Q(2004 June 26)147.345 E(53)
-197.335 E 0 Cg EP
+are assigned empty)-.1 F(GNU Bash-3.0)72 768 Q(2004 Sep 17)149.01 E(53)
+199 E 0 Cg EP
 %%Page: 54 54
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\))
--.35 E/F1 10/Times-Bold@0 SF<ad61>144 84 Q/F2 10/Times-Italic@0 SF
-(aname)2.5 E F0 1.05(The w)180 96 R 1.049
+-.35 E -.25(va)144 84 S 2.511(lues. The).25 F .011(characters in)2.511 F
+/F1 9/Times-Bold@0 SF(IFS)2.511 E F0 .011
+(are used to split the line into w)2.261 F 2.511(ords. The)-.1 F .011
+(backslash character \()2.511 F/F2 10/Times-Bold@0 SF(\\)A F0 2.51(\)m)C
+(ay)-2.51 E 1.89(be used to remo)144 96 R 2.19 -.15(ve a)-.15 H 2.19
+-.15(ny s).15 H 1.891(pecial meaning for the ne).15 F 1.891
+(xt character read and for line continuation.)-.15 F
+(Options, if supplied, ha)144 108 Q .3 -.15(ve t)-.2 H(he follo).15 E
+(wing meanings:)-.25 E F2<ad61>144 120 Q/F3 10/Times-Italic@0 SF(aname)
+2.5 E F0 1.05(The w)180 132 R 1.049
 (ords are assigned to sequential indices of the array v)-.1 F(ariable)
--.25 E F2(aname)3.549 E F0 3.549(,s).18 G 1.049(tarting at 0.)-3.549 F
-F2(aname)180.33 108 Q F0(is unset before an)2.68 E 2.5(yn)-.15 G .5 -.25
-(ew va)-2.5 H(lues are assigned.).25 E(Other)5 E F2(name)2.5 E F0(ar)2.5
-E(guments are ignored.)-.18 E F1<ad64>144 120 Q F2(delim)2.5 E F0
-(The \214rst character of)180 132 Q F2(delim)2.5 E F0
+-.25 E F3(aname)3.549 E F0 3.549(,s).18 G 1.049(tarting at 0.)-3.549 F
+F3(aname)180.33 144 Q F0(is unset before an)2.68 E 2.5(yn)-.15 G .5 -.25
+(ew va)-2.5 H(lues are assigned.).25 E(Other)5 E F3(name)2.5 E F0(ar)2.5
+E(guments are ignored.)-.18 E F2<ad64>144 156 Q F3(delim)2.5 E F0
+(The \214rst character of)180 168 Q F3(delim)2.5 E F0
 (is used to terminate the input line, rather than ne)2.5 E(wline.)-.25 E
-F1<ad65>144 144 Q F0 .372
-(If the standard input is coming from a terminal,)25.86 F F1 -.18(re)
-2.873 G(adline).18 E F0(\(see)2.873 E/F3 9/Times-Bold@0 SF(READLINE)
-2.873 E F0(abo)2.623 E -.15(ve)-.15 G 2.873(\)i).15 G 2.873(su)-2.873 G
-(sed)-2.873 E(to obtain the line.)180 156 Q F1<ad6e>144 168 Q F2(nc)2.5
-E(har)-.15 E(s)-.1 E F1 -.18(re)180 180 S(ad).18 E F0 1.395
-(returns after reading)3.895 F F2(nc)3.895 E(har)-.15 E(s)-.1 E F0 1.395
+F2<ad65>144 180 Q F0 .372
+(If the standard input is coming from a terminal,)25.86 F F2 -.18(re)
+2.873 G(adline).18 E F0(\(see)2.873 E F1(READLINE)2.873 E F0(abo)2.623 E
+-.15(ve)-.15 G 2.873(\)i).15 G 2.873(su)-2.873 G(sed)-2.873 E
+(to obtain the line.)180 192 Q F2<ad6e>144 204 Q F3(nc)2.5 E(har)-.15 E
+(s)-.1 E F2 -.18(re)180 216 S(ad).18 E F0 1.395(returns after reading)
+3.895 F F3(nc)3.895 E(har)-.15 E(s)-.1 E F0 1.395
 (characters rather than w)3.895 F 1.394(aiting for a complete line of)
--.1 F(input.)180 192 Q F1<ad70>144 204 Q F2(pr)2.5 E(ompt)-.45 E F0
-(Display)180 216 Q F2(pr)3.66 E(ompt)-.45 E F0 1.161(on standard error)
+-.1 F(input.)180 228 Q F2<ad70>144 240 Q F3(pr)2.5 E(ompt)-.45 E F0
+(Display)180 252 Q F3(pr)3.66 E(ompt)-.45 E F0 1.161(on standard error)
 3.66 F 3.661(,w)-.4 G 1.161(ithout a trailing ne)-3.661 F 1.161
-(wline, before attempting to read)-.25 F(an)180 228 Q 2.5(yi)-.15 G 2.5
+(wline, before attempting to read)-.25 F(an)180 264 Q 2.5(yi)-.15 G 2.5
 (nput. The)-2.5 F
-(prompt is displayed only if input is coming from a terminal.)2.5 E F1
-<ad72>144 240 Q F0 .544(Backslash does not act as an escape character)
+(prompt is displayed only if input is coming from a terminal.)2.5 E F2
+<ad72>144 276 Q F0 .544(Backslash does not act as an escape character)
 25.86 F 5.543(.T)-.55 G .543(he backslash is considered to be part of)
--5.543 F(the line.)180 252 Q(In particular)5 E 2.5(,ab)-.4 G
+-5.543 F(the line.)180 288 Q(In particular)5 E 2.5(,ab)-.4 G
 (ackslash-ne)-2.5 E(wline pair may not be used as a line continuation.)
--.25 E F1<ad73>144 264 Q F0(Silent mode.)26.41 E
-(If input is coming from a terminal, characters are not echoed.)5 E F1
-<ad74>144 276 Q F2(timeout)2.5 E F0(Cause)180 288 Q F1 -.18(re)3.548 G
+-.25 E F2<ad73>144 300 Q F0(Silent mode.)26.41 E
+(If input is coming from a terminal, characters are not echoed.)5 E F2
+<ad74>144 312 Q F3(timeout)2.5 E F0(Cause)180 324 Q F2 -.18(re)3.548 G
 (ad).18 E F0 1.048(to time out and return f)3.548 F 1.048
-(ailure if a complete line of input is not read within)-.1 F F2(timeout)
-180 300 Q F0 2.92(seconds. This)2.92 F .42(option has no ef)2.92 F .42
-(fect if)-.25 F F1 -.18(re)2.92 G(ad).18 E F0 .42
-(is not reading input from the terminal)2.92 F(or a pipe.)180 312 Q F1
-<ad75>144 324 Q F2(fd)2.5 E/F4 10/Palatino-Roman@0 SF(Read input fr)
+(ailure if a complete line of input is not read within)-.1 F F3(timeout)
+180 336 Q F0 2.92(seconds. This)2.92 F .42(option has no ef)2.92 F .42
+(fect if)-.25 F F2 -.18(re)2.92 G(ad).18 E F0 .42
+(is not reading input from the terminal)2.92 F(or a pipe.)180 348 Q F2
+<ad75>144 360 Q F3(fd)2.5 E/F4 10/Palatino-Roman@0 SF(Read input fr)
 14.46 E(om \214le descriptor)-.18 E/F5 10/Palatino-Italic@0 SF(fd)2.5 E
-F4(.)A .335(If no)144 340.8 R F5(names)3.095 E F4(ar)2.895 E 2.835(es)
+F4(.)A .335(If no)144 376.8 R F5(names)3.095 E F4(ar)2.895 E 2.835(es)
 -.18 G .335(upplied, the line r)-2.835 F .336
 (ead is assigned to the variable)-.18 F/F6 9/Palatino-Bold@0 SF(REPL)
 2.836 E(Y)-.828 E/F7 9/Palatino-Roman@0 SF(.)A F4 .336(The r)4.836 F
-.336(eturn code)-.18 F 1.058(is zer)144 352.8 R 1.058
+.336(eturn code)-.18 F 1.058(is zer)144 388.8 R 1.058
 (o, unless end-of-\214le is encounter)-.18 F(ed,)-.18 E/F8 10
 /Palatino-Bold@0 SF(read)3.558 E F4 1.058
 (times out, or an invalid \214le descriptor is)3.558 F
-(supplied as the ar)144 364.8 Q(gument to)-.18 E F8<ad75>2.5 E F4(.)A F8
-(readonly)108 381.6 Q F4([)2.5 E F8(\255apf)A F4 2.5(][)C F5(name)-2.5 E
-F4([=)A F5(word)A F4 2.5(].)C(..])-2.5 E .587(The given)144 393.6 R F5
+(supplied as the ar)144 400.8 Q(gument to)-.18 E F8<ad75>2.5 E F4(.)A F8
+(readonly)108 417.6 Q F4([)2.5 E F8(\255apf)A F4 2.5(][)C F5(name)-2.5 E
+F4([=)A F5(word)A F4 2.5(].)C(..])-2.5 E .587(The given)144 429.6 R F5
 (names)3.087 E F4(ar)3.087 E 3.087(em)-.18 G .587(arked r)-3.087 F .587
 (eadonly; the values of these)-.18 F F5(names)3.347 E F4 .588
-(may not be changed by)3.148 F .833(subsequent assignment.)144 405.6 R
+(may not be changed by)3.148 F .833(subsequent assignment.)144 441.6 R
 .833(If the)5.833 F F8<ad66>3.333 E F4 .832
 (option is supplied, the functions corr)3.333 F .832(esponding to the)
--.18 F F5(names)144 417.6 Q F4(ar)3.809 E 3.809(es)-.18 G 3.809(om)
+-.18 F F5(names)144 453.6 Q F4(ar)3.809 E 3.809(es)-.18 G 3.809(om)
 -3.809 G 3.809(arked. The)-3.809 F F8<ad61>3.809 E F4 1.309(option r)
 3.809 F 1.309(estricts the variables to arrays.)-.18 F 1.31(If no)6.31 F
-F5(name)4.07 E F4(ar)4.16 E(gu-)-.18 E 1.058(ments ar)144 429.6 R 3.557
+F5(name)4.07 E F4(ar)4.16 E(gu-)-.18 E 1.058(ments ar)144 465.6 R 3.557
 (eg)-.18 G 1.057(iven, or if the)-3.557 F F8<ad70>3.557 E F4 1.057
 (option is supplied, a list of all r)3.557 F 1.057
-(eadonly names is printed.)-.18 F(The)144 441.6 Q F8<ad70>2.577 E F4
+(eadonly names is printed.)-.18 F(The)144 477.6 Q F8<ad70>2.577 E F4
 .077(option causes output to be displayed in a format that may be r)
 2.577 F .078(eused as input.)-.18 F .078(If a)5.078 F .903
-(variable name is followed by =)144 453.6 R F5(word)A F4 3.403(,t)C .902
+(variable name is followed by =)144 489.6 R F5(word)A F4 3.403(,t)C .902
 (he value of the variable is set to)-3.403 F F5(word)3.402 E F4 5.902
 (.T)C .902(he r)-5.902 F(eturn)-.18 E .997
-(status is 0 unless an invalid option is encounter)144 465.6 R .998
+(status is 0 unless an invalid option is encounter)144 501.6 R .998
 (ed, one of the)-.18 F F5(names)3.758 E F4 .998(is not a valid shell)
-3.558 F(variable name, or)144 477.6 Q F8<ad66>2.5 E F4
+3.558 F(variable name, or)144 513.6 Q F8<ad66>2.5 E F4
 (is supplied with a)2.5 E F5(name)2.76 E F4(that is not a function.)2.85
-E F8(return)108 494.4 Q F4([)2.5 E F5(n)A F4(])A .563
-(Causes a function to exit with the r)144 506.4 R .563
+E F8(return)108 530.4 Q F4([)2.5 E F5(n)A F4(])A .563
+(Causes a function to exit with the r)144 542.4 R .563
 (eturn value speci\214ed by)-.18 F F5(n)3.063 E F4 5.563(.I).08 G(f)
 -5.563 E F5(n)3.323 E F4 .563(is omitted, the r)3.143 F(eturn)-.18 E
 .544(status is that of the last command executed in the function body)
-144 518.4 R 5.545(.I)-1.11 G 3.045(fu)-5.545 G .545(sed outside a func-)
--3.045 F 1.148(tion, but during execution of a script by the)144 530.4 R
+144 554.4 R 5.545(.I)-1.11 G 3.045(fu)-5.545 G .545(sed outside a func-)
+-3.045 F 1.148(tion, but during execution of a script by the)144 566.4 R
 F8(.)3.648 E F4(\()6.148 E F8(source)A F4 3.648(\)c)C 1.148
 (ommand, it causes the shell to)-3.648 F .63
-(stop executing that script and r)144 542.4 R .63(eturn either)-.18 F F5
+(stop executing that script and r)144 578.4 R .63(eturn either)-.18 F F5
 (n)3.391 E F4 .631(or the exit status of the last command exe-)3.211 F
-.541(cuted within the script as the exit status of the script.)144 554.4
+.541(cuted within the script as the exit status of the script.)144 590.4
 R .54(If used outside a function and not)5.54 F .037
-(during execution of a script by)144 566.4 R F8(.)2.538 E F4 2.538(,t)
+(during execution of a script by)144 602.4 R F8(.)2.538 E F4 2.538(,t)
 .833 G .038(he r)-2.538 F .038(eturn status is false.)-.18 F .038
-(Any command associated with)5.038 F(the)144 578.4 Q F8(RETURN)2.5 E F4
+(Any command associated with)5.038 F(the)144 614.4 Q F8(RETURN)2.5 E F4
 (trap is executed befor)2.5 E 2.5(ee)-.18 G(xecution r)-2.5 E
-(esumes after the function or script.)-.18 E F8(set)108 595.2 Q F4([)2.5
+(esumes after the function or script.)-.18 E F8(set)108 631.2 Q F4([)2.5
 E F8(\255\255abefhkmnptuvxBCHP)A F4 2.5(][)C F8<ad6f>-2.5 E F5(option)
-2.5 E F4 2.5(][)C F5(ar)-2.5 E(g)-.18 E F4(...])2.5 E -.55(Wi)144 607.2
+2.5 E F4 2.5(][)C F5(ar)-2.5 E(g)-.18 E F4(...])2.5 E -.55(Wi)144 643.2
 S .246(thout options, the name and value of each shell variable ar).55 F
 2.745(ed)-.18 G .245(isplayed in a format that)-2.745 F 2.183(can be r)
-144 619.2 R 2.183(eused as input.)-.18 F 2.184
+144 655.2 R 2.183(eused as input.)-.18 F 2.184
 (The output is sorted accor)7.183 F 2.184(ding to the curr)-.18 F 2.184
-(ent locale.)-.18 F(When)7.184 E 1.006(options ar)144 631.2 R 3.506(es)
+(ent locale.)-.18 F(When)7.184 E 1.006(options ar)144 667.2 R 3.506(es)
 -.18 G 1.006(peci\214ed, they set or unset shell attributes.)-3.506 F
 1.006(Any ar)6.006 F 1.005(guments r)-.18 F 1.005(emaining after)-.18 F
-1.981(the options ar)144 643.2 R 4.481(ep)-.18 G -.18(ro)-4.481 G 1.981
+1.981(the options ar)144 679.2 R 4.481(ep)-.18 G -.18(ro)-4.481 G 1.981
 (cessed ar).18 F 4.481(et)-.18 G -.18(re)-4.481 G 1.982
 (ated as values for the positional parameters and ar).18 F(e)-.18 E
-(assigned, in or)144 655.2 Q(der)-.18 E 2.5(,t)-.74 G(o)-2.5 E F8($1)2.5
+(assigned, in or)144 691.2 Q(der)-.18 E 2.5(,t)-.74 G(o)-2.5 E F8($1)2.5
 E F4(,)A F8($2)2.5 E F4(,)A F8 2.5(... $)2.5 F F5(n)A F4 5(.O)C
 (ptions, if speci\214ed, have the following meanings:)-5 E F8<ad61>144
-667.2 Q F4 1.063(Automatically mark variables and functions which ar)
+703.2 Q F4 1.063(Automatically mark variables and functions which ar)
 28.94 F 3.563(em)-.18 G 1.063(odi\214ed or cr)-3.563 F 1.063(eated for)
--.18 F(export to the envir)184 679.2 Q(onment of subsequent commands.)
--.18 E F8<ad62>144 691.2 Q F4 .096
-(Report the status of terminated backgr)27.83 F .096
-(ound jobs immediately)-.18 F 2.596(,r)-1.11 G .096(ather than befor)
--2.596 F(e)-.18 E(the next primary pr)184 703.2 Q 2.5(ompt. This)-.18 F
-(is ef)2.5 E(fective only when job contr)-.18 E(ol is enabled.)-.18 E F8
-<ad65>144 715.2 Q F4 .179(Exit immediately if a)28.94 F F5 .178
-(simple command)2.679 F F4(\(see)2.678 E F6 .178(SHELL GRAMMAR)2.678 F
-F4 .178(above\) exits with a)2.428 F(non-zer)184 727.2 Q 3.232(os)-.18 G
-3.232(tatus. The)-3.232 F .733
-(shell does not exit if the command that fails is part of the)3.232 F F0
-(GNU Bash-3.0)72 768 Q(2004 June 26)147.345 E(54)197.335 E 0 Cg EP
+-.18 F(export to the envir)184 715.2 Q(onment of subsequent commands.)
+-.18 E F0(GNU Bash-3.0)72 768 Q(2004 Sep 17)149.01 E(54)199 E 0 Cg EP
 %%Page: 55 55
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\))
--.35 E/F1 10/Palatino-Roman@0 SF .696
-(command list immediately following a)184 84 R/F2 10/Palatino-Bold@0 SF
-(while)3.196 E F1(or)3.196 E F2(until)3.196 E F1(keywor)3.196 E .696
-(d, part of the test)-.18 F .98(in an)184 96 R/F3 10/Palatino-Italic@0
-SF(if)3.64 E F1 .98(statement, part of a)5.33 F F2(&&)3.48 E F1(or)3.481
-E/F4 10/Symbol SF<efef>3.481 E F1 .981(list, or if the command's r)3.481
-F .981(eturn value is)-.18 F(being inverted via)184 108 Q F2(!)2.5 E F1
-5(.A)C(trap on)-2.5 E F2(ERR)2.5 E F1 2.5(,i)C 2.5(fs)-2.5 G
-(et, is executed befor)-2.5 E 2.5(et)-.18 G(he shell exits.)-2.5 E F2
-<ad66>144 120 Q F1(Disable pathname expansion.)30.05 E F2<ad68>144 132 Q
-F1 .592(Remember the location of commands as they ar)27.83 F 3.092(el)
--.18 G .591(ooked up for execution.)-3.092 F(This)5.591 E
-(is enabled by default.)184 144 Q F2<ad6b>144 156 Q F1 .934(All ar)27.83
+-.35 E/F1 10/Palatino-Bold@0 SF<ad62>144 84 Q/F2 10/Palatino-Roman@0 SF
+.096(Report the status of terminated backgr)27.83 F .096
+(ound jobs immediately)-.18 F 2.596(,r)-1.11 G .096(ather than befor)
+-2.596 F(e)-.18 E(the next primary pr)184 96 Q 2.5(ompt. This)-.18 F
+(is ef)2.5 E(fective only when job contr)-.18 E(ol is enabled.)-.18 E F1
+<ad65>144 108 Q F2 .179(Exit immediately if a)28.94 F/F3 10
+/Palatino-Italic@0 SF .178(simple command)2.679 F F2(\(see)2.678 E/F4 9
+/Palatino-Bold@0 SF .178(SHELL GRAMMAR)2.678 F F2 .178
+(above\) exits with a)2.428 F(non-zer)184 120 Q 3.232(os)-.18 G 3.232
+(tatus. The)-3.232 F .733
+(shell does not exit if the command that fails is part of the)3.232 F
+.696(command list immediately following a)184 132 R F1(while)3.196 E F2
+(or)3.196 E F1(until)3.196 E F2(keywor)3.196 E .696(d, part of the test)
+-.18 F .98(in an)184 144 R F3(if)3.64 E F2 .98(statement, part of a)5.33
+F F1(&&)3.48 E F2(or)3.481 E/F5 10/Symbol SF<efef>3.481 E F2 .981
+(list, or if the command's r)3.481 F .981(eturn value is)-.18 F
+(being inverted via)184 156 Q F1(!)2.5 E F2 5(.A)C(trap on)-2.5 E F1
+(ERR)2.5 E F2 2.5(,i)C 2.5(fs)-2.5 G(et, is executed befor)-2.5 E 2.5
+(et)-.18 G(he shell exits.)-2.5 E F1<ad66>144 168 Q F2
+(Disable pathname expansion.)30.05 E F1<ad68>144 180 Q F2 .592
+(Remember the location of commands as they ar)27.83 F 3.092(el)-.18 G
+.591(ooked up for execution.)-3.092 F(This)5.591 E
+(is enabled by default.)184 192 Q F1<ad6b>144 204 Q F2 .934(All ar)27.83
 F .934(guments in the form of assignment statements ar)-.18 F 3.434(ep)
 -.18 G .935(laced in the envir)-3.434 F(on-)-.18 E
-(ment for a command, not just those that pr)184 168 Q
-(ecede the command name.)-.18 E F2<ad6d>144 180 Q F1 .711(Monitor mode.)
+(ment for a command, not just those that pr)184 216 Q
+(ecede the command name.)-.18 E F1<ad6d>144 228 Q F2 .711(Monitor mode.)
 25.05 F .711(Job contr)5.711 F .711(ol is enabled.)-.18 F .711
 (This option is on by default for interac-)5.711 F 1.164
-(tive shells on systems that support it \(see)184 192 R/F5 9
-/Palatino-Bold@0 SF 1.165(JOB CONTROL)3.665 F F1 3.665(above\). Backgr)
-3.415 F(ound)-.18 E(pr)184 204 Q .54(ocesses r)-.18 F .54
-(un in a separate pr)-.08 F .539(ocess gr)-.18 F .539
-(oup and a line containing their exit status)-.18 F
-(is printed upon their completion.)184 216 Q F2<ad6e>144 228 Q F1 1.313
+(tive shells on systems that support it \(see)184 240 R F4 1.165
+(JOB CONTROL)3.665 F F2 3.665(above\). Backgr)3.415 F(ound)-.18 E(pr)184
+252 Q .54(ocesses r)-.18 F .54(un in a separate pr)-.08 F .539(ocess gr)
+-.18 F .539(oup and a line containing their exit status)-.18 F
+(is printed upon their completion.)184 264 Q F1<ad6e>144 276 Q F2 1.313
 (Read commands but do not execute them.)27.83 F 1.313
-(This may be used to check a shell)6.313 F(script for syntax err)184 240
+(This may be used to check a shell)6.313 F(script for syntax err)184 288
 Q 2.5(ors. This)-.18 F(is ignor)2.5 E(ed by interactive shells.)-.18 E
-F2<ad6f>144 252 Q F3(option\255name)2.5 E F1(The)184 264 Q F3
-(option\255name)2.5 E F1(can be one of the following:)2.5 E F2
-(allexport)184 276 Q F1(Same as)224 288 Q F2<ad61>2.5 E F1(.)A F2
-(braceexpand)184 300 Q F1(Same as)224 312 Q F2<ad42>2.5 E F1(.)A F2
-(emacs)184 324 Q F1 .412
+F1<ad6f>144 300 Q F3(option\255name)2.5 E F2(The)184 312 Q F3
+(option\255name)2.5 E F2(can be one of the following:)2.5 E F1
+(allexport)184 324 Q F2(Same as)224 336 Q F1<ad61>2.5 E F2(.)A F1
+(braceexpand)184 348 Q F2(Same as)224 360 Q F1<ad42>2.5 E F2(.)A F1
+(emacs)184 372 Q F2 .412
 (Use an emacs-style command line editing interface.)12.23 F .412
 (This is enabled by)5.412 F .358(default when the shell is interactive,\
- unless the shell is started with the)224 336 R F2(\255\255noediting)224
-348 Q F1(option.)2.5 E F2(errtrace)184 360 Q F1(Same as)5.56 E F2<ad45>
-2.5 E F1(.)A F2(functrace)184 372 Q F1(Same as)224 384 Q F2<ad54>2.5 E
-F1(.)A F2(errexit)184 396 Q F1(Same as)10.56 E F2<ad65>2.5 E F1(.)A F2
-(hashall)184 408 Q F1(Same as)6.68 E F2<ad68>2.5 E F1(.)A F2(histexpand)
-184 420 Q F1(Same as)224 432 Q F2<ad48>2.5 E F1(.)A F2(history)184 444 Q
-F1 2.271(Enable command history)7.78 F 4.771(,a)-1.11 G 4.771(sd)-4.771
-G 2.271(escribed above under)-4.771 F F5(HISTOR)4.771 E(Y)-.495 E/F6 9
-/Palatino-Roman@0 SF(.)A F1(This)6.77 E
-(option is on by default in interactive shells.)224 456 Q F2(ignoreeof)
-184 468 Q F1 1.673(The ef)224 480 R 1.673
+ unless the shell is started with the)224 384 R F1(\255\255noediting)224
+396 Q F2(option.)2.5 E F1(errtrace)184 408 Q F2(Same as)5.56 E F1<ad45>
+2.5 E F2(.)A F1(functrace)184 420 Q F2(Same as)224 432 Q F1<ad54>2.5 E
+F2(.)A F1(errexit)184 444 Q F2(Same as)10.56 E F1<ad65>2.5 E F2(.)A F1
+(hashall)184 456 Q F2(Same as)6.68 E F1<ad68>2.5 E F2(.)A F1(histexpand)
+184 468 Q F2(Same as)224 480 Q F1<ad48>2.5 E F2(.)A F1(history)184 492 Q
+F2 2.271(Enable command history)7.78 F 4.771(,a)-1.11 G 4.771(sd)-4.771
+G 2.271(escribed above under)-4.771 F F4(HISTOR)4.771 E(Y)-.495 E/F6 9
+/Palatino-Roman@0 SF(.)A F2(This)6.77 E
+(option is on by default in interactive shells.)224 504 Q F1(ignoreeof)
+184 516 Q F2 1.673(The ef)224 528 R 1.673
 (fect is as if the shell command)-.18 F/F7 10/Courier@0 SF(IGNOREEOF=10)
-4.174 E F1 1.674(had been exe-)4.174 F(cuted \(see)224 492 Q F2(Shell V)
-2.5 E(ariables)-1.11 E F1(above\).)2.5 E F2(keyword)184 504 Q F1
-(Same as)224 516 Q F2<ad6b>2.5 E F1(.)A F2(monitor)184 528 Q F1(Same as)
-224 540 Q F2<ad6d>2.5 E F1(.)A F2(noclobber)184 552 Q F1(Same as)224 564
-Q F2<ad43>2.5 E F1(.)A F2(noexec)184 576 Q F1(Same as)8.89 E F2<ad6e>2.5
-E F1(.)A F2(noglob)184 588 Q F1(Same as)7.77 E F2<ad66>2.5 E F1(.)A F2
-(nolog)5 E F1(Curr)2.5 E(ently ignor)-.18 E(ed.)-.18 E F2(notify)184 600
-Q F1(Same as)12.22 E F2<ad62>2.5 E F1(.)A F2(nounset)184 612 Q F1
-(Same as)224 624 Q F2<ad75>2.5 E F1(.)A F2(onecmd)184 636 Q F1(Same as)
-224 648 Q F2<ad74>2.5 E F1(.)A F2(physical)184 660 Q F1(Same as)224 672
-Q F2<ad50>2.5 E F1(.)A F2(pipefail)184 684 Q F1 .735(If set, the r)224
-696 R .734
-(eturn value of a pipeline is the value of the last \(rightmost\))-.18 F
-.31(command to exit with a non-zer)224 708 R 2.811(os)-.18 G .311
-(tatus, or zer)-2.811 F 2.811(oi)-.18 G 2.811(fa)-2.811 G .311
-(ll commands in the)-2.811 F(pipeline exit successfully)224 720 Q 5(.T)
--1.11 G(his option is disabled by default.)-5 E F0(GNU Bash-3.0)72 768 Q
-(2004 June 26)147.345 E(55)197.335 E 0 Cg EP
+4.174 E F2 1.674(had been exe-)4.174 F(cuted \(see)224 540 Q F1(Shell V)
+2.5 E(ariables)-1.11 E F2(above\).)2.5 E F1(keyword)184 552 Q F2
+(Same as)224 564 Q F1<ad6b>2.5 E F2(.)A F1(monitor)184 576 Q F2(Same as)
+224 588 Q F1<ad6d>2.5 E F2(.)A F1(noclobber)184 600 Q F2(Same as)224 612
+Q F1<ad43>2.5 E F2(.)A F1(noexec)184 624 Q F2(Same as)8.89 E F1<ad6e>2.5
+E F2(.)A F1(noglob)184 636 Q F2(Same as)7.77 E F1<ad66>2.5 E F2(.)A F1
+(nolog)5 E F2(Curr)2.5 E(ently ignor)-.18 E(ed.)-.18 E F1(notify)184 648
+Q F2(Same as)12.22 E F1<ad62>2.5 E F2(.)A F1(nounset)184 660 Q F2
+(Same as)224 672 Q F1<ad75>2.5 E F2(.)A F1(onecmd)184 684 Q F2(Same as)
+224 696 Q F1<ad74>2.5 E F2(.)A F0(GNU Bash-3.0)72 768 Q(2004 Sep 17)
+149.01 E(55)199 E 0 Cg EP
 %%Page: 56 56
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\))
--.35 E/F1 10/Palatino-Bold@0 SF(posix)184 84 Q/F2 10/Palatino-Roman@0 SF
+-.35 E/F1 10/Palatino-Bold@0 SF(physical)184 84 Q/F2 10/Palatino-Roman@0
+SF(Same as)224 96 Q F1<ad50>2.5 E F2(.)A F1(pipefail)184 108 Q F2 .735
+(If set, the r)224 120 R .734
+(eturn value of a pipeline is the value of the last \(rightmost\))-.18 F
+.31(command to exit with a non-zer)224 132 R 2.811(os)-.18 G .311
+(tatus, or zer)-2.811 F 2.811(oi)-.18 G 2.811(fa)-2.811 G .311
+(ll commands in the)-2.811 F(pipeline exit successfully)224 144 Q 5(.T)
+-1.11 G(his option is disabled by default.)-5 E F1(posix)184 156 Q F2
 .815(Change the behavior of)15.56 F F1(bash)3.315 E F2(wher)3.315 E
 3.315(et)-.18 G .815(he default operation dif)-3.315 F .815(fers fr)-.18
-F(om)-.18 E(the POSIX 1003.2 standar)224 96 Q 2.5(dt)-.18 G 2.5(om)-2.5
+F(om)-.18 E(the POSIX 1003.2 standar)224 168 Q 2.5(dt)-.18 G 2.5(om)-2.5
 G(atch the standar)-2.5 E 2.5(d\()-.18 G/F3 10/Palatino-Italic@0 SF
-(`posix mode)-2.5 E F2(\).)A F1(privileged)184 108 Q F2(Same as)224 120
-Q F1<ad70>2.5 E F2(.)A F1(verbose)184 132 Q F2(Same as)224 144 Q F1
-<ad76>2.5 E F2(.)A F1(vi)184 156 Q F2
+(`posix mode)-2.5 E F2(\).)A F1(privileged)184 180 Q F2(Same as)224 192
+Q F1<ad70>2.5 E F2(.)A F1(verbose)184 204 Q F2(Same as)224 216 Q F1
+<ad76>2.5 E F2(.)A F1(vi)184 228 Q F2
 (Use a vi-style command line editing interface.)31.11 E F1(xtrace)184
-168 Q F2(Same as)13.34 E F1<ad78>2.5 E F2(.)A(If)184 186 Q F1<ad6f>4.63
+240 Q F2(Same as)13.34 E F1<ad78>2.5 E F2(.)A(If)184 258 Q F1<ad6f>4.63
 E F2 2.131(is supplied with no)4.63 F F3(option\255name)4.631 E F2 4.631
 (,t)C 2.131(he values of the curr)-4.631 F 2.131(ent options ar)-.18 F
-(e)-.18 E 4.412(printed. If)184 198 R F1(+o)4.412 E F2 1.912
+(e)-.18 E 4.412(printed. If)184 270 R F1(+o)4.412 E F2 1.912
 (is supplied with no)4.412 F F3(option\255name)4.412 E F2 4.411(,as)C
 1.911(eries of)-4.411 F F1(set)4.411 E F2 1.911(commands to)4.411 F -.18
-(re)184 210 S(cr).18 E(eate the curr)-.18 E
+(re)184 282 S(cr).18 E(eate the curr)-.18 E
 (ent option settings is displayed on the standar)-.18 E 2.5(do)-.18 G
-(utput.)-2.5 E F1<ad70>144 222 Q F2 -.9(Tu)27.83 G .853(rn on).9 F F3
+(utput.)-2.5 E F1<ad70>144 294 Q F2 -.9(Tu)27.83 G .853(rn on).9 F F3
 (privileged)3.923 E F2 3.353(mode. In)3.683 F .853(this mode, the)3.353
 F/F4 9/Palatino-Bold@0 SF($ENV)3.353 E F2(and)3.103 E F4($BASH_ENV)3.354
-E F2 .854(\214les ar)3.104 F 3.354(en)-.18 G(ot)-3.354 E(pr)184 234 Q
+E F2 .854(\214les ar)3.104 F 3.354(en)-.18 G(ot)-3.354 E(pr)184 306 Q
 2.873(ocessed, shell functions ar)-.18 F 5.373(en)-.18 G 2.873
 (ot inherited fr)-5.373 F 2.873(om the envir)-.18 F 2.873
-(onment, and the)-.18 F F4(SHELLOPTS)184 246 Q F2 .548
+(onment, and the)-.18 F F4(SHELLOPTS)184 318 Q F2 .548
 (variable, if it appears in the envir)2.798 F .548(onment, is ignor)-.18
 F 3.049(ed. If)-.18 F .549(the shell is)3.049 F 1.115
-(started with the ef)184 258 R 1.115(fective user \(gr)-.18 F 1.115
+(started with the ef)184 330 R 1.115(fective user \(gr)-.18 F 1.115
 (oup\) id not equal to the r)-.18 F 1.115(eal user \(gr)-.18 F 1.115
-(oup\) id,)-.18 F .497(and the)184 270 R F1<ad70>2.997 E F2 .498
+(oup\) id,)-.18 F .497(and the)184 342 R F1<ad70>2.997 E F2 .498
 (option is not supplied, these actions ar)2.998 F 2.998(et)-.18 G .498
 (aken and the ef)-2.998 F .498(fective user)-.18 F .685
-(id is set to the r)184 282 R .685(eal user id.)-.18 F .685(If the)5.685
+(id is set to the r)184 354 R .685(eal user id.)-.18 F .685(If the)5.685
 F F1<ad70>3.185 E F2 .684(option is supplied at startup, the ef)3.185 F
-(fective)-.18 E .752(user id is not r)184 294 R 3.252(eset. T)-.18 F
+(fective)-.18 E .752(user id is not r)184 366 R 3.252(eset. T)-.18 F
 .752(urning this option of)-.9 F 3.252(fc)-.18 G .752(auses the ef)
 -3.252 F .753(fective user and gr)-.18 F(oup)-.18 E
-(ids to be set to the r)184 306 Q(eal user and gr)-.18 E(oup ids.)-.18 E
-F1<ad74>144 318 Q F2(Exit after r)30.61 E
-(eading and executing one command.)-.18 E F1<ad75>144 330 Q F2 -.88 -.9
+(ids to be set to the r)184 378 Q(eal user and gr)-.18 E(oup ids.)-.18 E
+F1<ad74>144 390 Q F2(Exit after r)30.61 E
+(eading and executing one command.)-.18 E F1<ad75>144 402 Q F2 -.88 -.9
 (Tr e)27.83 H 2.498(at unset variables as an err).9 F 2.498
 (or when performing parameter expansion.)-.18 F(If)7.498 E .869
 (expansion is attempted on an unset variable, the shell prints an err)
-184 342 R .87(or message,)-.18 F
-(and, if not interactive, exits with a non-zer)184 354 Q 2.5(os)-.18 G
-(tatus.)-2.5 E F1<ad76>144 366 Q F2(Print shell input lines as they ar)
-28.38 E 2.5(er)-.18 G(ead.)-2.68 E F1<ad78>144 378 Q F2 2.637
+184 414 R .87(or message,)-.18 F
+(and, if not interactive, exits with a non-zer)184 426 Q 2.5(os)-.18 G
+(tatus.)-2.5 E F1<ad76>144 438 Q F2(Print shell input lines as they ar)
+28.38 E 2.5(er)-.18 G(ead.)-2.68 E F1<ad78>144 450 Q F2 2.637
 (After expanding each)28.94 F F3 2.637(simple command)5.137 F F2(,)A F1
 (for)5.137 E F2(command,)5.137 E F1(case)5.136 E F2(command,)5.136 E F1
-(select)5.136 E F2 .954(command, or arithmetic)184 390 R F1(for)3.454 E
+(select)5.136 E F2 .954(command, or arithmetic)184 462 R F1(for)3.454 E
 F2 .955(command, display the expanded value of)3.455 F F4(PS4)3.455 E/F5
 9/Palatino-Roman@0 SF(,)A F2(fol-)3.205 E
-(lowed by the command and its expanded ar)184 402 Q
+(lowed by the command and its expanded ar)184 474 Q
 (guments or associated wor)-.18 E 2.5(dl)-.18 G(ist.)-2.5 E F1<ad42>144
-414 Q F2 .484(The shell performs brace expansion \(see)27.27 F F1 .484
+486 Q F2 .484(The shell performs brace expansion \(see)27.27 F F1 .484
 (Brace Expansion)2.984 F F2 2.984(above\). This)2.984 F .484(is on by)
-2.984 F(default.)184 426 Q F1<ad43>144 438 Q F2 .077(If set,)26.72 F F1
+2.984 F(default.)184 498 Q F1<ad43>144 510 Q F2 .077(If set,)26.72 F F1
 (bash)2.577 E F2 .077(does not overwrite an existing \214le with the)
 2.577 F F1(>)2.578 E F2(,)A F1(>&)2.578 E F2 2.578(,a)C(nd)-2.578 E F1
 (<>)2.578 E F2 -.18(re)2.578 G(dir).18 E(ection)-.18 E 2.645
-(operators. This)184 450 R .145(may be overridden when cr)2.645 F .145
-(eating output \214les by using the r)-.18 F(edi-)-.18 E -.18(re)184 462
+(operators. This)184 522 R .145(may be overridden when cr)2.645 F .145
+(eating output \214les by using the r)-.18 F(edi-)-.18 E -.18(re)184 534
 S(ction operator).18 E F1(>|)2.5 E F2(instead of)2.5 E F1(>)2.5 E F2(.)A
-F1<ad45>144 474 Q F2 .901(If set, any trap on)27.83 F F1(ERR)3.402 E F2
+F1<ad45>144 546 Q F2 .901(If set, any trap on)27.83 F F1(ERR)3.402 E F2
 .902(is inherited by shell functions, command substitutions,)3.402 F .75
-(and commands executed in a subshell envir)184 486 R 3.25(onment. The)
+(and commands executed in a subshell envir)184 558 R 3.25(onment. The)
 -.18 F F1(ERR)3.25 E F2 .75(trap is normally)3.25 F
-(not inherited in such cases.)184 498 Q F1<ad48>144 510 Q F2(Enable)
+(not inherited in such cases.)184 570 Q F1<ad48>144 582 Q F2(Enable)
 25.61 E F1(!)2.515 E F2 .015(style history substitution.)5.015 F .016
 (This option is on by default when the shell is)5.016 F(interactive.)184
-522 Q F1<ad50>144 534 Q F2 .693(If set, the shell does not follow symbo\
-lic links when executing commands such)27.83 F(as)184 546 Q F1(cd)3.569
+594 Q F1<ad50>144 606 Q F2 .693(If set, the shell does not follow symbo\
+lic links when executing commands such)27.83 F(as)184 618 Q F1(cd)3.569
 E F2 1.069(that change the curr)3.569 F 1.069(ent working dir)-.18 F
 (ectory)-.18 E 6.069(.I)-1.11 G 3.569(tu)-6.069 G 1.07
-(ses the physical dir)-3.569 F(ectory)-.18 E(str)184 558 Q(uctur)-.08 E
+(ses the physical dir)-3.569 F(ectory)-.18 E(str)184 630 Q(uctur)-.08 E
 2.912(ei)-.18 G 2.912(nstead. By)-2.912 F(default,)2.912 E F1(bash)2.912
 E F2 .412(follows the logical chain of dir)2.912 F .411(ectories when)
--.18 F(performing commands which change the curr)184 570 Q(ent dir)-.18
-E(ectory)-.18 E(.)-1.11 E F1<ad54>144 582 Q F2 1.25(If set, any trap on)
+-.18 F(performing commands which change the curr)184 642 Q(ent dir)-.18
+E(ectory)-.18 E(.)-1.11 E F1<ad54>144 654 Q F2 1.25(If set, any trap on)
 27.27 F F1(DEBUG)3.751 E F2 1.251
 (is inherited by shell functions, command substitu-)3.751 F .712
-(tions, and commands executed in a subshell envir)184 594 R 3.212
+(tions, and commands executed in a subshell envir)184 666 R 3.212
 (onment. The)-.18 F F1(DEBUG)3.212 E F2 .711(trap is)3.211 F
-(normally not inherited in such cases.)184 606 Q F1<adad>144 618 Q F2
+(normally not inherited in such cases.)184 678 Q F1<adad>144 690 Q F2
 1.781(If no ar)27.88 F 1.782
 (guments follow this option, then the positional parameters ar)-.18 F
 4.282(eu)-.18 G(nset.)-4.282 E 1.303
-(Otherwise, the positional parameters ar)184 630 R 3.803(es)-.18 G 1.303
+(Otherwise, the positional parameters ar)184 702 R 3.803(es)-.18 G 1.303
 (et to the)-3.803 F F3(ar)3.803 E(g)-.18 E F2 1.303
-(s, even if some of them)B(begin with a)184 642 Q F1<ad>2.5 E F2(.)A F1
-<ad>144 654 Q F2 1.295(Signal the end of options, cause all r)33.94 F
-(emaining)-.18 E F3(ar)3.796 E(g)-.18 E F2 3.796(st)C 3.796(ob)-3.796 G
-3.796(ea)-3.796 G 1.296(ssigned to the posi-)-3.796 F .042
-(tional parameters.)184 666 R(The)5.042 E F1<ad78>2.542 E F2(and)2.542 E
+(s, even if some of them)B(begin with a)184 714 Q F1<ad>2.5 E F2(.)A F0
+(GNU Bash-3.0)72 768 Q(2004 Sep 17)149.01 E(56)199 E 0 Cg EP
+%%Page: 57 57
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\))
+-.35 E/F1 10/Palatino-Bold@0 SF<ad>144 84 Q/F2 10/Palatino-Roman@0 SF
+1.295(Signal the end of options, cause all r)33.94 F(emaining)-.18 E/F3
+10/Palatino-Italic@0 SF(ar)3.796 E(g)-.18 E F2 3.796(st)C 3.796(ob)
+-3.796 G 3.796(ea)-3.796 G 1.296(ssigned to the posi-)-3.796 F .042
+(tional parameters.)184 96 R(The)5.042 E F1<ad78>2.542 E F2(and)2.542 E
 F1<ad76>2.542 E F2 .041(options ar)2.541 F 2.541(et)-.18 G .041
 (urned of)-2.541 F 2.541(f. If)-.18 F(ther)2.541 E 2.541(ea)-.18 G .401
 -.18(re n)-2.541 H(o).18 E F3(ar)2.541 E(g)-.18 E F2 .041(s, the)B
-(positional parameters r)184 678 Q(emain unchanged.)-.18 E .12
-(The options ar)144 694.8 R 2.62(eo)-.18 G .48 -.18(ff b)-2.62 H 2.62
+(positional parameters r)184 108 Q(emain unchanged.)-.18 E .12
+(The options ar)144 124.8 R 2.62(eo)-.18 G .48 -.18(ff b)-2.62 H 2.62
 (yd).18 G .121(efault unless otherwise noted.)-2.62 F .121
 (Using + rather than \255 causes these)5.121 F .278
-(options to be turned of)144 706.8 R 2.778(f. The)-.18 F .277
+(options to be turned of)144 136.8 R 2.778(f. The)-.18 F .277
 (options can also be speci\214ed as ar)2.777 F .277
-(guments to an invocation)-.18 F .722(of the shell.)144 718.8 R .723
+(guments to an invocation)-.18 F .722(of the shell.)144 148.8 R .723
 (The curr)5.723 F .723(ent set of options may be found in)-.18 F F1
 <24ad>3.223 E F2 5.723(.T)C .723(he r)-5.723 F .723
-(eturn status is always)-.18 F(tr)144 730.8 Q
-(ue unless an invalid option is encounter)-.08 E(ed.)-.18 E F0
-(GNU Bash-3.0)72 768 Q(2004 June 26)147.345 E(56)197.335 E 0 Cg EP
-%%Page: 57 57
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\))
--.35 E/F1 10/Palatino-Bold@0 SF(shift)108 84 Q/F2 10/Palatino-Roman@0 SF
-([)2.5 E/F3 10/Palatino-Italic@0 SF(n)A F2(])A .807
-(The positional parameters fr)144 96 R(om)-.18 E F3(n)3.306 E F2 .806
-(+1 ... ar)B 3.306(er)-.18 G .806(enamed to)-3.486 F F1 .806($1 ....)
-3.306 F F2 .806(Parameters r)5.806 F(epr)-.18 E .806(esented by)-.18 F
-.055(the numbers)144 108 R F1($#)2.555 E F2 .055(down to)2.555 F F1($#)
-2.555 E F2<ad>A F3(n)A F2 .055(+1 ar)B 2.555(eu)-.18 G(nset.)-2.555 E F3
-(n)5.315 E F2 .055(must be a non-negative number less than or)2.635 F
-.495(equal to)144 120 R F1($#)2.995 E F2 5.495(.I)C(f)-5.495 E F3(n)
-3.255 E F2 .494(is 0, no parameters ar)3.075 F 2.994(ec)-.18 G 2.994
-(hanged. If)-2.994 F F3(n)3.254 E F2 .494
-(is not given, it is assumed to be 1.)3.074 F(If)144 132 Q F3(n)4.052 E
-F2 1.292(is gr)3.872 F 1.292(eater than)-.18 F F1($#)3.792 E F2 3.792
-(,t)C 1.292(he positional parameters ar)-3.792 F 3.792(en)-.18 G 1.292
-(ot changed.)-3.792 F 1.292(The r)6.292 F 1.292(eturn status is)-.18 F
-(gr)144 144 Q(eater than zer)-.18 E 2.5(oi)-.18 G(f)-2.5 E F3(n)2.76 E
-F2(is gr)2.58 E(eater than)-.18 E F1($#)2.5 E F2(or less than zer)2.5 E
-(o; otherwise 0.)-.18 E F1(shopt)108 160.8 Q F2([)2.5 E F1(\255pqsu)A F2
-2.5(][)C F1<ad6f>-2.5 E F2 2.5(][)C F3(optname)-2.5 E F2(...])2.5 E -.92
-(To)144 172.8 S 1.523(ggle the values of variables contr).92 F 1.522
+(eturn status is always)-.18 F(tr)144 160.8 Q
+(ue unless an invalid option is encounter)-.08 E(ed.)-.18 E F1(shift)108
+177.6 Q F2([)2.5 E F3(n)A F2(])A .807(The positional parameters fr)144
+189.6 R(om)-.18 E F3(n)3.306 E F2 .806(+1 ... ar)B 3.306(er)-.18 G .806
+(enamed to)-3.486 F F1 .806($1 ....)3.306 F F2 .806(Parameters r)5.806 F
+(epr)-.18 E .806(esented by)-.18 F .055(the numbers)144 201.6 R F1($#)
+2.555 E F2 .055(down to)2.555 F F1($#)2.555 E F2<ad>A F3(n)A F2 .055
+(+1 ar)B 2.555(eu)-.18 G(nset.)-2.555 E F3(n)5.315 E F2 .055
+(must be a non-negative number less than or)2.635 F .495(equal to)144
+213.6 R F1($#)2.995 E F2 5.495(.I)C(f)-5.495 E F3(n)3.255 E F2 .494
+(is 0, no parameters ar)3.075 F 2.994(ec)-.18 G 2.994(hanged. If)-2.994
+F F3(n)3.254 E F2 .494(is not given, it is assumed to be 1.)3.074 F(If)
+144 225.6 Q F3(n)4.052 E F2 1.292(is gr)3.872 F 1.292(eater than)-.18 F
+F1($#)3.792 E F2 3.792(,t)C 1.292(he positional parameters ar)-3.792 F
+3.792(en)-.18 G 1.292(ot changed.)-3.792 F 1.292(The r)6.292 F 1.292
+(eturn status is)-.18 F(gr)144 237.6 Q(eater than zer)-.18 E 2.5(oi)-.18
+G(f)-2.5 E F3(n)2.76 E F2(is gr)2.58 E(eater than)-.18 E F1($#)2.5 E F2
+(or less than zer)2.5 E(o; otherwise 0.)-.18 E F1(shopt)108 254.4 Q F2
+([)2.5 E F1(\255pqsu)A F2 2.5(][)C F1<ad6f>-2.5 E F2 2.5(][)C F3
+(optname)-2.5 E F2(...])2.5 E -.92(To)144 266.4 S 1.523
+(ggle the values of variables contr).92 F 1.522
 (olling optional shell behavior)-.18 F 6.522(.W)-.74 G 1.522
-(ith no options, or)-7.072 F 2.531(with the)144 184.8 R F1<ad70>5.031 E
+(ith no options, or)-7.072 F 2.531(with the)144 278.4 R F1<ad70>5.031 E
 F2 2.531(option, a list of all settable options is displayed, with an i\
-ndication of)5.031 F .962(whether or not each is set.)144 196.8 R(The)
+ndication of)5.031 F .962(whether or not each is set.)144 290.4 R(The)
 5.962 E F1<ad70>3.462 E F2 .962
 (option causes output to be displayed in a form that)3.462 F(may be r)
-144 208.8 Q(eused as input.)-.18 E
-(Other options have the following meanings:)5 E F1<ad73>144 220.8 Q F2
-(Enable \(set\) each)25.5 E F3(optname)2.5 E F2(.)A F1<ad75>144 232.8 Q
+144 302.4 Q(eused as input.)-.18 E
+(Other options have the following meanings:)5 E F1<ad73>144 314.4 Q F2
+(Enable \(set\) each)25.5 E F3(optname)2.5 E F2(.)A F1<ad75>144 326.4 Q
 F2(Disable \(unset\) each)23.83 E F3(optname)2.5 E F2(.)A F1<ad71>144
-244.8 Q F2(Suppr)23.83 E .903(esses normal output \(quiet mode\); the r)
+338.4 Q F2(Suppr)23.83 E .903(esses normal output \(quiet mode\); the r)
 -.18 F .903(eturn status indicates whether the)-.18 F F3(optname)180
-256.8 Q F2 1.679(is set or unset.)4.179 F 1.679(If multiple)6.679 F F3
+350.4 Q F2 1.679(is set or unset.)4.179 F 1.679(If multiple)6.679 F F3
 (optname)4.178 E F2(ar)4.178 E 1.678(guments ar)-.18 F 4.178(eg)-.18 G
 1.678(iven with)-4.178 F F1<ad71>4.178 E F2 4.178(,t)C(he)-4.178 E -.18
-(re)180 268.8 S(turn status is zer).18 E 2.5(oi)-.18 G 2.5(fa)-2.5 G(ll)
+(re)180 362.4 S(turn status is zer).18 E 2.5(oi)-.18 G 2.5(fa)-2.5 G(ll)
 -2.5 E F3(optnames)2.5 E F2(ar)2.5 E 2.5(ee)-.18 G(nabled; non-zer)-2.5
-E 2.5(oo)-.18 G(therwise.)-2.5 E F1<ad6f>144 280.8 Q F2 1.348
+E 2.5(oo)-.18 G(therwise.)-2.5 E F1<ad6f>144 374.4 Q F2 1.348
 (Restricts the values of)24.38 F F3(optname)3.848 E F2 1.348
 (to be those de\214ned for the)3.848 F F1<ad6f>3.848 E F2 1.348
-(option to the)3.848 F F1(set)3.848 E F2(builtin.)180 292.8 Q 1.86
-(If either)144 309.6 R F1<ad73>4.36 E F2(or)4.36 E F1<ad75>4.36 E F2
+(option to the)3.848 F F1(set)3.848 E F2(builtin.)180 386.4 Q 1.86
+(If either)144 403.2 R F1<ad73>4.36 E F2(or)4.36 E F1<ad75>4.36 E F2
 1.86(is used with no)4.36 F F3(optname)4.36 E F2(ar)4.36 E 1.86
 (guments, the display is limited to those)-.18 F 1.061(options which ar)
-144 321.6 R 3.561(es)-.18 G 1.062(et or unset, r)-3.561 F(espectively)
+144 415.2 R 3.561(es)-.18 G 1.062(et or unset, r)-3.561 F(espectively)
 -.18 E 6.062(.U)-1.11 G 1.062(nless otherwise noted, the)-6.062 F F1
-(shopt)3.562 E F2(options)3.562 E(ar)144 333.6 Q 2.5(ed)-.18 G
-(isabled \(unset\) by default.)-2.5 E .473(The r)144 350.4 R .473
+(shopt)3.562 E F2(options)3.562 E(ar)144 427.2 Q 2.5(ed)-.18 G
+(isabled \(unset\) by default.)-2.5 E .473(The r)144 444 R .473
 (eturn status when listing options is zer)-.18 F 2.973(oi)-.18 G 2.973
 (fa)-2.973 G(ll)-2.973 E F3(optnames)2.973 E F2(ar)2.973 E 2.973(ee)-.18
 G .472(nabled, non-zer)-2.973 F 2.972(oo)-.18 G(ther)-2.972 E(-)-.18 E
-2.601(wise. When)144 362.4 R .101(setting or unsetting options, the r)
+2.601(wise. When)144 456 R .101(setting or unsetting options, the r)
 2.601 F .101(eturn status is zer)-.18 F 2.602(ou)-.18 G .102(nless an)
--2.602 F F3(optname)2.602 E F2 .102(is not)2.602 F 2.5(av)144 374.4 S
-(alid shell option.)-2.5 E(The list of)144 391.2 Q F1(shopt)2.5 E F2
-(options is:)2.5 E F1(cdable_vars)144 409.2 Q F2 .364(If set, an ar)184
-421.2 R .364(gument to the)-.18 F F1(cd)2.864 E F2 .364
+-2.602 F F3(optname)2.602 E F2 .102(is not)2.602 F 2.5(av)144 468 S
+(alid shell option.)-2.5 E(The list of)144 484.8 Q F1(shopt)2.5 E F2
+(options is:)2.5 E F1(cdable_vars)144 502.8 Q F2 .364(If set, an ar)184
+514.8 R .364(gument to the)-.18 F F1(cd)2.864 E F2 .364
 (builtin command that is not a dir)2.864 F .364(ectory is assumed)-.18 F
-(to be the name of a variable whose value is the dir)184 433.2 Q
-(ectory to change to.)-.18 E F1(cdspell)144 445.2 Q F2 1.137
+(to be the name of a variable whose value is the dir)184 526.8 Q
+(ectory to change to.)-.18 E F1(cdspell)144 538.8 Q F2 1.137
 (If set, minor err)7.24 F 1.138(ors in the spelling of a dir)-.18 F
 1.138(ectory component in a)-.18 F F1(cd)3.638 E F2(command)3.638 E
-1.289(will be corr)184 457.2 R 3.788(ected. The)-.18 F(err)3.788 E 1.288
+1.289(will be corr)184 550.8 R 3.788(ected. The)-.18 F(err)3.788 E 1.288
 (ors checked for ar)-.18 F 3.788(et)-.18 G 1.288
-(ransposed characters, a missing)-3.788 F(character)184 469.2 Q 2.74(,a)
+(ransposed characters, a missing)-3.788 F(character)184 562.8 Q 2.74(,a)
 -.74 G .24(nd one character too many)-2.74 F 5.241(.I)-1.11 G 2.741(fac)
 -5.241 G(orr)-2.741 E .241(ection is found, the corr)-.18 F .241
-(ected \214le)-.18 F .431(name is printed, and the command pr)184 481.2
+(ected \214le)-.18 F .431(name is printed, and the command pr)184 574.8
 R 2.931(oceeds. This)-.18 F .43(option is only used by inter)2.931 F(-)
--.18 E(active shells.)184 493.2 Q F1(checkhash)144 505.2 Q F2 .762
-(If set,)184 517.2 R F1(bash)3.262 E F2 .763
+-.18 E(active shells.)184 586.8 Q F1(checkhash)144 598.8 Q F2 .762
+(If set,)184 610.8 R F1(bash)3.262 E F2 .763
 (checks that a command found in the hash table exists befor)3.263 F
-3.263(et)-.18 G(rying)-3.263 E .023(to execute it.)184 529.2 R .023
+3.263(et)-.18 G(rying)-3.263 E .023(to execute it.)184 622.8 R .023
 (If a hashed command no longer exists, a normal path sear)5.023 F .022
-(ch is per)-.18 F(-)-.18 E(formed.)184 541.2 Q F1(checkwinsize)144 553.2
-Q F2 2.584(If set,)184 565.2 R F1(bash)5.084 E F2 2.584
+(ch is per)-.18 F(-)-.18 E(formed.)184 634.8 Q F1(checkwinsize)144 646.8
+Q F2 2.584(If set,)184 658.8 R F1(bash)5.084 E F2 2.584
 (checks the window size after each command and, if necessary)5.084 F(,)
--1.11 E(updates the values of)184 577.2 Q/F4 9/Palatino-Bold@0 SF(LINES)
+-1.11 E(updates the values of)184 670.8 Q/F4 9/Palatino-Bold@0 SF(LINES)
 2.5 E F2(and)2.25 E F4(COLUMNS)2.5 E/F5 9/Palatino-Roman@0 SF(.)A F1
-(cmdhist)144 589.2 Q F2 1.298(If set,)184 601.2 R F1(bash)3.798 E F2
+(cmdhist)144 682.8 Q F2 1.298(If set,)184 694.8 R F1(bash)3.798 E F2
 1.297(attempts to save all lines of a multiple-line command in the same)
-3.797 F(history entry)184 613.2 Q 5(.T)-1.11 G(his allows easy r)-5 E
-(e-editing of multi-line commands.)-.18 E F1(dotglob)144 625.2 Q F2
-1.338(If set,)184 637.2 R F1(bash)3.838 E F2 1.338
-(includes \214lenames beginning with a `.' in the r)3.838 F 1.339
-(esults of pathname)-.18 F(expansion.)184 649.2 Q F1(execfail)144 661.2
-Q F2 .315(If set, a non-interactive shell will not exit if it cannot ex\
-ecute the \214le speci\214ed as)5.01 F .783(an ar)184 673.2 R .783
-(gument to the)-.18 F F1(exec)3.283 E F2 .783(builtin command.)3.283 F
-.783(An interactive shell does not exit if)5.783 F F1(exec)184 685.2 Q
-F2(fails.)2.5 E F1(expand_aliases)144 697.2 Q F2 1.159
-(If set, aliases ar)184 709.2 R 3.659(ee)-.18 G 1.159
-(xpanded as described above under)-3.659 F F4(ALIASES)3.659 E F5(.)A F2
-1.159(This option is)5.659 F(enabled by default for interactive shells.)
-184 721.2 Q F0(GNU Bash-3.0)72 768 Q(2004 June 26)147.345 E(57)197.335 E
-0 Cg EP
+3.797 F(history entry)184 706.8 Q 5(.T)-1.11 G(his allows easy r)-5 E
+(e-editing of multi-line commands.)-.18 E F0(GNU Bash-3.0)72 768 Q
+(2004 Sep 17)149.01 E(57)199 E 0 Cg EP
 %%Page: 58 58
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\))
--.35 E/F1 10/Palatino-Bold@0 SF(extdebug)144 84 Q/F2 10/Palatino-Roman@0
-SF(If set, behavior intended for use by debuggers is enabled:)184 96 Q
-F1(1.)184 108 Q F2(The)28.5 E F1<ad46>3.607 E F2 1.107(option to the)
-3.607 F F1(declare)3.607 E F2 1.108(builtin displays the sour)3.607 F
-1.108(ce \214le name and)-.18 F .624(line number corr)220 120 R .624
+-.35 E/F1 10/Palatino-Bold@0 SF(dotglob)144 84 Q/F2 10/Palatino-Roman@0
+SF 1.338(If set,)184 96 R F1(bash)3.838 E F2 1.338
+(includes \214lenames beginning with a `.' in the r)3.838 F 1.339
+(esults of pathname)-.18 F(expansion.)184 108 Q F1(execfail)144 120 Q F2
+.315(If set, a non-interactive shell will not exit if it cannot execute\
+ the \214le speci\214ed as)5.01 F .783(an ar)184 132 R .783
+(gument to the)-.18 F F1(exec)3.283 E F2 .783(builtin command.)3.283 F
+.783(An interactive shell does not exit if)5.783 F F1(exec)184 144 Q F2
+(fails.)2.5 E F1(expand_aliases)144 156 Q F2 1.159(If set, aliases ar)
+184 168 R 3.659(ee)-.18 G 1.159(xpanded as described above under)-3.659
+F/F3 9/Palatino-Bold@0 SF(ALIASES)3.659 E/F4 9/Palatino-Roman@0 SF(.)A
+F2 1.159(This option is)5.659 F
+(enabled by default for interactive shells.)184 180 Q F1(extdebug)144
+192 Q F2(If set, behavior intended for use by debuggers is enabled:)184
+204 Q F1(1.)184 216 Q F2(The)28.5 E F1<ad46>3.607 E F2 1.107
+(option to the)3.607 F F1(declare)3.607 E F2 1.108
+(builtin displays the sour)3.607 F 1.108(ce \214le name and)-.18 F .624
+(line number corr)220 228 R .624
 (esponding to each function name supplied as an ar)-.18 F(gu-)-.18 E
-(ment.)220 132 Q F1(2.)184 144 Q F2 .98(If the command r)28.5 F .98
+(ment.)220 240 Q F1(2.)184 252 Q F2 .98(If the command r)28.5 F .98
 (un by the)-.08 F F1(DEBUG)3.48 E F2 .98(trap r)3.48 F .98
 (eturns a non-zer)-.18 F 3.48(ov)-.18 G .98(alue, the)-3.48 F
-(next command is skipped and not executed.)220 156 Q F1(3.)184 168 Q F2
+(next command is skipped and not executed.)220 264 Q F1(3.)184 276 Q F2
 1.107(If the command r)28.5 F 1.107(un by the)-.08 F F1(DEBUG)3.607 E F2
 1.106(trap r)3.606 F 1.106(eturns a value of 2, and the)-.18 F .87
-(shell is executing in a subr)220 180 R .871
+(shell is executing in a subr)220 288 R .871
 (outine \(a shell function or a shell script exe-)-.18 F(cuted by the)
-220 192 Q F1(.)2.5 E F2(or)2.5 E F1(source)2.5 E F2
+220 300 Q F1(.)2.5 E F2(or)2.5 E F1(source)2.5 E F2
 (builtins\), a call to)2.5 E F1(return)2.5 E F2(is simulated.)2.5 E F1
-(extglob)144 204 Q F2 .432(If set, the extended pattern matching featur)
+(extglob)144 312 Q F2 .432(If set, the extended pattern matching featur)
 6.11 F .432(es described above under)-.18 F F1(Pathname)2.932 E
-(Expansion)184 216 Q F2(ar)2.5 E 2.5(ee)-.18 G(nabled.)-2.5 E F1
-(extquote)144 228 Q F2 .143(If set,)184 240 R F1($)2.643 E F2(')A/F3 10
+(Expansion)184 324 Q F2(ar)2.5 E 2.5(ee)-.18 G(nabled.)-2.5 E F1
+(extquote)144 336 Q F2 .143(If set,)184 348 R F1($)2.643 E F2(')A/F5 10
 /Palatino-Italic@0 SF(string)A F2 2.643('a)C(nd)-2.643 E F1($)2.643 E F2
-(")A F3(string)A F2 2.643("q)C .143(uoting is performed within)-2.643 F
-F1(${)2.643 E F3(parameter)A F1(})A F2(expansions)2.643 E
-(enclosed in double quotes.)184 252 Q
-(This option is enabled by default.)5 E F1(failglob)144 264 Q F2 .507(I\
+(")A F5(string)A F2 2.643("q)C .143(uoting is performed within)-2.643 F
+F1(${)2.643 E F5(parameter)A F1(})A F2(expansions)2.643 E
+(enclosed in double quotes.)184 360 Q
+(This option is enabled by default.)5 E F1(failglob)144 372 Q F2 .507(I\
 f set, patterns which fail to match \214lenames during pathname expansi\
-on r)184 276 R(esult)-.18 E(in an expansion err)184 288 Q(or)-.18 E(.)
--.74 E F1(force_\214gnore)144 300 Q F2 1.118(If set, the suf)184 312 R
+on r)184 384 R(esult)-.18 E(in an expansion err)184 396 Q(or)-.18 E(.)
+-.74 E F1(force_\214gnore)144 408 Q F2 1.118(If set, the suf)184 420 R
 1.118(\214xes speci\214ed by the)-.18 F F1(FIGNORE)3.618 E F2 1.119
-(shell variable cause wor)3.619 F 1.119(ds to be)-.18 F(ignor)184 324 Q
+(shell variable cause wor)3.619 F 1.119(ds to be)-.18 F(ignor)184 432 Q
 1.291(ed when performing wor)-.18 F 3.791(dc)-.18 G 1.291
 (ompletion even if the ignor)-3.791 F 1.291(ed wor)-.18 F 1.291(ds ar)
--.18 F 3.79(et)-.18 G(he)-3.79 E 1.7(only possible completions.)184 336
-R(See)6.7 E/F4 9/Palatino-Bold@0 SF 1.7(SHELL V)4.2 F(ARIABLES)-1.161 E
-F2 1.701(above for a description of)3.95 F F1(FIGNORE)184 348 Q F2 5(.T)
-C(his option is enabled by default.)-5 E F1(gnu_errfmt)144 360 Q F2 .843
-(If set, shell err)184 372 R .843(or messages ar)-.18 F 3.342(ew)-.18 G
+-.18 F 3.79(et)-.18 G(he)-3.79 E 1.7(only possible completions.)184 444
+R(See)6.7 E F3 1.7(SHELL V)4.2 F(ARIABLES)-1.161 E F2 1.701
+(above for a description of)3.95 F F1(FIGNORE)184 456 Q F2 5(.T)C
+(his option is enabled by default.)-5 E F1(gnu_errfmt)144 468 Q F2 .843
+(If set, shell err)184 480 R .843(or messages ar)-.18 F 3.342(ew)-.18 G
 .842(ritten in the standar)-3.342 F 3.342(dG)-.18 G .842(NU err)-3.342 F
-.842(or message for)-.18 F(-)-.18 E(mat.)184 384 Q F1(histappend)144 396
+.842(or message for)-.18 F(-)-.18 E(mat.)184 492 Q F1(histappend)144 504
 Q F2 1.127(If set, the history list is appended to the \214le named by \
-the value of the)184 408 R F1(HIST)3.627 E(-)-.92 E(FILE)184 420 Q F2
+the value of the)184 516 R F1(HIST)3.627 E(-)-.92 E(FILE)184 528 Q F2
 (variable when the shell exits, rather than overwriting the \214le.)2.5
-E F1(histreedit)144 432 Q F2 1.381(If set, and)184 444 R F1(readline)
+E F1(histreedit)144 540 Q F2 1.381(If set, and)184 552 R F1(readline)
 3.881 E F2 1.381(is being used, a user is given the opportunity to r)
-3.881 F 1.38(e-edit a)-.18 F(failed history substitution.)184 456 Q F1
-(histverify)144 468 Q F2 2.133(If set, and)184 480 R F1(readline)4.633 E
+3.881 F 1.38(e-edit a)-.18 F(failed history substitution.)184 564 Q F1
+(histverify)144 576 Q F2 2.133(If set, and)184 588 R F1(readline)4.633 E
 F2 2.133(is being used, the r)4.633 F 2.133
 (esults of history substitution ar)-.18 F 4.634(en)-.18 G(ot)-4.634 E
-.383(immediately passed to the shell parser)184 492 R 5.383(.I)-.74 G
+.383(immediately passed to the shell parser)184 600 R 5.383(.I)-.74 G
 .382(nstead, the r)-5.383 F .382(esulting line is loaded into)-.18 F
-(the)184 504 Q F1(readline)2.5 E F2(editing buf)2.5 E(fer)-.18 E 2.5(,a)
--.74 G(llowing further modi\214cation.)-2.5 E F1(hostcomplete)144 516 Q
-F2 .647(If set, and)184 528 R F1(readline)3.147 E F2 .648
+(the)184 612 Q F1(readline)2.5 E F2(editing buf)2.5 E(fer)-.18 E 2.5(,a)
+-.74 G(llowing further modi\214cation.)-2.5 E F1(hostcomplete)144 624 Q
+F2 .647(If set, and)184 636 R F1(readline)3.147 E F2 .648
 (is being used,)3.147 F F1(bash)3.148 E F2 .648
 (will attempt to perform hostname com-)3.148 F .44(pletion when a wor)
-184 540 R 2.939(dc)-.18 G .439(ontaining a)-2.939 F F1(@)2.939 E F2 .439
+184 648 R 2.939(dc)-.18 G .439(ontaining a)-2.939 F F1(@)2.939 E F2 .439
 (is being completed \(see)2.939 F F1(Completing)2.939 E F2(under)2.939 E
-F4(READLINE)184 552 Q F2 2.5(above\). This)2.25 F
-(is enabled by default.)2.5 E F1(huponexit)144 564 Q F2(If set,)184 576
-Q F1(bash)2.5 E F2(will send)2.5 E F4(SIGHUP)2.5 E F2
+F3(READLINE)184 660 Q F2 2.5(above\). This)2.25 F
+(is enabled by default.)2.5 E F1(huponexit)144 672 Q F2(If set,)184 684
+Q F1(bash)2.5 E F2(will send)2.5 E F3(SIGHUP)2.5 E F2
 (to all jobs when an interactive login shell exits.)2.25 E F1
-(interactive_comments)144 588 Q F2 .26(If set, allow a wor)184 600 R
+(interactive_comments)144 696 Q F2 .26(If set, allow a wor)184 708 R
 2.76(db)-.18 G .26(eginning with)-2.76 F F1(#)2.76 E F2 .26
 (to cause that wor)2.76 F 2.76(da)-.18 G .26(nd all r)-2.76 F .26
 (emaining char)-.18 F(-)-.18 E .512(acters on that line to be ignor)184
-612 R .512(ed in an interactive shell \(see)-.18 F F4(COMMENTS)3.012 E
-F2(above\).)2.762 E(This option is enabled by default.)184 624 Q F1
-(lithist)144 636 Q F2 .513(If set, and the)12.8 F F1(cmdhist)3.013 E F2
-.513(option is enabled, multi-line commands ar)3.013 F 3.013(es)-.18 G
-.513(aved to the)-3.013 F .643(history with embedded newlines rather th\
-an using semicolon separators wher)184 648 R(e)-.18 E(possible.)184 660
-Q F1(login_shell)144 672 Q F2 2.454
-(The shell sets this option if it is started as a login shell \(see)184
-684 R F4(INVOCA)4.954 E(TION)-.828 E F2 2.5(above\). The)184 696 R
-(value may not be changed.)2.5 E F0(GNU Bash-3.0)72 768 Q(2004 June 26)
-147.345 E(58)197.335 E 0 Cg EP
+720 R .512(ed in an interactive shell \(see)-.18 F F3(COMMENTS)3.012 E
+F2(above\).)2.762 E F0(GNU Bash-3.0)72 768 Q(2004 Sep 17)149.01 E(58)199
+E 0 Cg EP
 %%Page: 59 59
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\))
--.35 E/F1 10/Palatino-Bold@0 SF(mailwarn)144 84 Q/F2 10/Palatino-Roman@0
-SF .965(If set, and a \214le that)184 96 R F1(bash)3.465 E F2 .964
-(is checking for mail has been accessed since the last)3.464 F 1.647
-(time it was checked, the message `)184 108 R 1.647(`The mail in)-.37 F
-/F3 10/Palatino-Italic@0 SF(mail\214le)4.147 E F2 1.647(has been r)4.147
+-.35 E/F1 10/Palatino-Roman@0 SF(This option is enabled by default.)184
+84 Q/F2 10/Palatino-Bold@0 SF(lithist)144 96 Q F1 .513(If set, and the)
+12.8 F F2(cmdhist)3.013 E F1 .513
+(option is enabled, multi-line commands ar)3.013 F 3.013(es)-.18 G .513
+(aved to the)-3.013 F .643(history with embedded newlines rather than u\
+sing semicolon separators wher)184 108 R(e)-.18 E(possible.)184 120 Q F2
+(login_shell)144 132 Q F1 2.454
+(The shell sets this option if it is started as a login shell \(see)184
+144 R/F3 9/Palatino-Bold@0 SF(INVOCA)4.954 E(TION)-.828 E F1 2.5
+(above\). The)184 156 R(value may not be changed.)2.5 E F2(mailwarn)144
+168 Q F1 .965(If set, and a \214le that)184 180 R F2(bash)3.465 E F1
+.964(is checking for mail has been accessed since the last)3.464 F 1.647
+(time it was checked, the message `)184 192 R 1.647(`The mail in)-.37 F
+/F4 10/Palatino-Italic@0 SF(mail\214le)4.147 E F1 1.647(has been r)4.147
 F(ead')-.18 E 4.148('i)-.37 G 4.148(sd)-4.148 G(is-)-4.148 E(played.)184
-120 Q F1(no_empty_cmd_completion)144 132 Q F2 .572(If set, and)184 144 R
-F1(readline)3.072 E F2 .572(is being used,)3.072 F F1(bash)3.072 E F2
-.572(will not attempt to sear)3.072 F .572(ch the)-.18 F F1 -.74(PA)
-3.072 G(TH)-.18 E F2(for)3.072 E
+204 Q F2(no_empty_cmd_completion)144 216 Q F1 .572(If set, and)184 228 R
+F2(readline)3.072 E F1 .572(is being used,)3.072 F F2(bash)3.072 E F1
+.572(will not attempt to sear)3.072 F .572(ch the)-.18 F F2 -.74(PA)
+3.072 G(TH)-.18 E F1(for)3.072 E
 (possible completions when completion is attempted on an empty line.)184
-156 Q F1(nocaseglob)144 168 Q F2 1.548(If set,)184 180 R F1(bash)4.048 E
-F2 1.548
+240 Q F2(nocaseglob)144 252 Q F1 1.548(If set,)184 264 R F2(bash)4.048 E
+F1 1.548
 (matches \214lenames in a case\255insensitive fashion when performing)
-4.048 F(pathname expansion \(see)184 192 Q F1(Pathname Expansion)2.5 E
-F2(above\).)2.5 E F1(nullglob)144 204 Q F2 2.34(If set,)184 216 R F1
-(bash)4.84 E F2 2.34(allows patterns which match no \214les \(see)4.84 F
-F1 2.34(Pathname Expansion)4.84 F F2
-(above\) to expand to a null string, rather than themselves.)184 228 Q
-F1(progcomp)144 240 Q F2 1.198(If set, the pr)184 252 R 1.199
-(ogrammable completion facilities \(see)-.18 F F1 1.199
-(Programmable Completion)3.699 F F2(above\) ar)184 264 Q 2.5(ee)-.18 G
-2.5(nabled. This)-2.5 F(option is enabled by default.)2.5 E F1
-(promptvars)144 276 Q F2 2.553(If set, pr)184 288 R 2.553
+4.048 F(pathname expansion \(see)184 276 Q F2(Pathname Expansion)2.5 E
+F1(above\).)2.5 E F2(nullglob)144 288 Q F1 2.34(If set,)184 300 R F2
+(bash)4.84 E F1 2.34(allows patterns which match no \214les \(see)4.84 F
+F2 2.34(Pathname Expansion)4.84 F F1
+(above\) to expand to a null string, rather than themselves.)184 312 Q
+F2(progcomp)144 324 Q F1 1.198(If set, the pr)184 336 R 1.199
+(ogrammable completion facilities \(see)-.18 F F2 1.199
+(Programmable Completion)3.699 F F1(above\) ar)184 348 Q 2.5(ee)-.18 G
+2.5(nabled. This)-2.5 F(option is enabled by default.)2.5 E F2
+(promptvars)144 360 Q F1 2.553(If set, pr)184 372 R 2.553
 (ompt strings under)-.18 F 2.552
 (go parameter expansion, command substitution,)-.18 F 1.007
-(arithmetic expansion, and quote r)184 300 R 1.007
-(emoval after being expanded as described in)-.18 F/F4 9/Palatino-Bold@0
-SF(PROMPTING)184 312 Q F2 2.5(above. This)2.25 F
-(option is enabled by default.)2.5 E F1(restricted_shell)144 324 Q F2
-1.743(The shell sets this option if it is started in r)184 336 R 1.742
-(estricted mode \(see)-.18 F F4(RESTRICTED)4.242 E(SHELL)184 348 Q F2
+(arithmetic expansion, and quote r)184 384 R 1.007
+(emoval after being expanded as described in)-.18 F F3(PROMPTING)184 396
+Q F1 2.5(above. This)2.25 F(option is enabled by default.)2.5 E F2
+(restricted_shell)144 408 Q F1 1.743
+(The shell sets this option if it is started in r)184 420 R 1.742
+(estricted mode \(see)-.18 F F3(RESTRICTED)4.242 E(SHELL)184 432 Q F1
 4.862(below\). The)4.612 F 2.362(value may not be changed.)4.862 F 2.362
 (This is not r)7.362 F 2.362(eset when the)-.18 F .294
-(startup \214les ar)184 360 R 2.794(ee)-.18 G .294
+(startup \214les ar)184 444 R 2.794(ee)-.18 G .294
 (xecuted, allowing the startup \214les to discover whether or not a)
--2.794 F(shell is r)184 372 Q(estricted.)-.18 E F1(shift_verbose)144 384
-Q F2 .527(If set, the)184 396 R F1(shift)3.028 E F2 .528
+-2.794 F(shell is r)184 456 Q(estricted.)-.18 E F2(shift_verbose)144 468
+Q F1 .527(If set, the)184 480 R F2(shift)3.028 E F1 .528
 (builtin prints an err)3.028 F .528
 (or message when the shift count exceeds the)-.18 F
-(number of positional parameters.)184 408 Q F1(sourcepath)144 420 Q F2
-.515(If set, the)184 432 R F1(source)3.015 E F2(\()3.014 E F1(.)A F2
-3.014(\)b)C .514(uiltin uses the value of)-3.014 F F4 -.666(PA)3.014 G
-(TH)-.162 E F2 .514(to \214nd the dir)2.764 F .514(ectory contain-)-.18
-F(ing the \214le supplied as an ar)184 444 Q 2.5(gument. This)-.18 F
-(option is enabled by default.)2.5 E F1(xpg_echo)144 456 Q F2
-(If set, the)184 468 Q F1(echo)2.5 E F2
-(builtin expands backslash-escape sequences by default.)2.5 E F1
-(suspend)108 480 Q F2([)2.5 E F1<ad66>A F2(])A .048
-(Suspend the execution of this shell until it r)144 492 R .048
-(eceives a)-.18 F F4(SIGCONT)2.548 E F2 2.548(signal. The)2.298 F F1
-<ad66>2.548 E F2 .048(option says)2.548 F .327
-(not to complain if this is a login shell; just suspend anyway)144 504 R
+(number of positional parameters.)184 492 Q F2(sourcepath)144 504 Q F1
+.515(If set, the)184 516 R F2(source)3.015 E F1(\()3.014 E F2(.)A F1
+3.014(\)b)C .514(uiltin uses the value of)-3.014 F F3 -.666(PA)3.014 G
+(TH)-.162 E F1 .514(to \214nd the dir)2.764 F .514(ectory contain-)-.18
+F(ing the \214le supplied as an ar)184 528 Q 2.5(gument. This)-.18 F
+(option is enabled by default.)2.5 E F2(xpg_echo)144 540 Q F1
+(If set, the)184 552 Q F2(echo)2.5 E F1
+(builtin expands backslash-escape sequences by default.)2.5 E F2
+(suspend)108 564 Q F1([)2.5 E F2<ad66>A F1(])A .048
+(Suspend the execution of this shell until it r)144 576 R .048
+(eceives a)-.18 F F3(SIGCONT)2.548 E F1 2.548(signal. The)2.298 F F2
+<ad66>2.548 E F1 .048(option says)2.548 F .327
+(not to complain if this is a login shell; just suspend anyway)144 588 R
 5.327(.T)-1.11 G .327(he r)-5.327 F .327(eturn status is 0 unless)-.18 F
-(the shell is a login shell and)144 516 Q F1<ad66>2.5 E F2
-(is not supplied, or if job contr)2.5 E(ol is not enabled.)-.18 E F1
-(test)108 528 Q F3(expr)2.5 E F1([)108 540 Q F3(expr)2.5 E F1(])2.5 E F2
+(the shell is a login shell and)144 600 Q F2<ad66>2.5 E F1
+(is not supplied, or if job contr)2.5 E(ol is not enabled.)-.18 E F2
+(test)108 612 Q F4(expr)2.5 E F2([)108 624 Q F4(expr)2.5 E F2(])2.5 E F1
 .544(Return a status of 0 or 1 depending on the evaluation of the condi\
-tional expr)6.56 F(ession)-.18 E F3(expr)3.044 E F2(.).45 E .789
-(Each operator and operand must be a separate ar)144 552 R 3.288
+tional expr)6.56 F(ession)-.18 E F4(expr)3.044 E F1(.).45 E .789
+(Each operator and operand must be a separate ar)144 636 R 3.288
 (gument. Expr)-.18 F .788(essions ar)-.18 F 3.288(ec)-.18 G .788
-(omposed of)-3.288 F(the primaries described above under)144 564 Q F4
-(CONDITIONAL EXPRESSIONS)2.5 E/F5 9/Palatino-Roman@0 SF(.)A F2(Expr)144
-582 Q .054
+(omposed of)-3.288 F(the primaries described above under)144 648 Q F3
+(CONDITIONAL EXPRESSIONS)2.5 E/F5 9/Palatino-Roman@0 SF(.)A F1(Expr)144
+666 Q .054
 (essions may be combined using the following operators, listed in decr)
--.18 F .055(easing or)-.18 F .055(der of)-.18 F(pr)144 594 Q(ecedence.)
--.18 E F1(!)144 606 Q F3(expr)2.5 E F2 -.78 -.9(Tr u)12.94 H 2.5(ei).9 G
-(f)-2.5 E F3(expr)2.85 E F2(is false.)2.95 E F1(\()144 618 Q F3(expr)2.5
-E F1(\))2.5 E F2 .847(Returns the value of)6.56 F F3(expr)3.347 E F2
+-.18 F .055(easing or)-.18 F .055(der of)-.18 F(pr)144 678 Q(ecedence.)
+-.18 E F2(!)144 690 Q F4(expr)2.5 E F1 -.78 -.9(Tr u)12.94 H 2.5(ei).9 G
+(f)-2.5 E F4(expr)2.85 E F1(is false.)2.95 E F2(\()144 702 Q F4(expr)2.5
+E F2(\))2.5 E F1 .847(Returns the value of)6.56 F F4(expr)3.347 E F1
 5.847(.T)C .847(his may be used to override the normal pr)-5.847 F
-(ecedence)-.18 E(of operators.)180 630 Q F3(expr1)144 642 Q F2<ad>2.5 E
-F1(a)A F3(expr2)2.5 E F2 -.78 -.9(Tr u)180 654 T 2.5(ei).9 G 2.5(fb)-2.5
-G(oth)-2.5 E F3(expr1)2.85 E F2(and)2.5 E F3(expr2)2.85 E F2(ar)2.5 E
-2.5(et)-.18 G -.08(ru)-2.5 G(e.).08 E F3(expr1)144 666 Q F2<ad>2.5 E F1
-(o)A F3(expr2)2.5 E F2 -.78 -.9(Tr u)180 678 T 2.5(ei).9 G 2.5(fe)-2.5 G
-(ither)-2.5 E F3(expr1)2.85 E F2(or)2.5 E F3(expr2)2.85 E F2(is tr)2.5 E
-(ue.)-.08 E F1(test)144 694.8 Q F2(and)3.576 E F1([)3.576 E F2 1.076
-(evaluate conditional expr)3.576 F 1.076(essions using a set of r)-.18 F
-1.076(ules based on the number of)-.08 F(ar)144 706.8 Q(guments.)-.18 E
-F0(GNU Bash-3.0)72 768 Q(2004 June 26)147.345 E(59)197.335 E 0 Cg EP
+(ecedence)-.18 E(of operators.)180 714 Q F0(GNU Bash-3.0)72 768 Q
+(2004 Sep 17)149.01 E(59)199 E 0 Cg EP
 %%Page: 60 60
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\))
--.35 E/F1 10/Palatino-Roman@0 SF 2.5(0a)144 84 S -.18(rg)-2.5 G(uments)
-.18 E(The expr)180 96 Q(ession is false.)-.18 E 2.5(1a)144 108 S -.18
-(rg)-2.5 G(ument).18 E(The expr)180 120 Q(ession is tr)-.18 E
-(ue if and only if the ar)-.08 E(gument is not null.)-.18 E 2.5(2a)144
-132 S -.18(rg)-2.5 G(uments).18 E .209(If the \214rst ar)180 144 R .208
-(gument is)-.18 F/F2 10/Palatino-Bold@0 SF(!)2.708 E F1 2.708(,t)C .208
-(he expr)-2.708 F .208(ession is tr)-.18 F .208
-(ue if and only if the second ar)-.08 F(gument)-.18 E 2.143(is null.)180
-156 R 2.144(If the \214rst ar)7.143 F 2.144
-(gument is one of the unary conditional operators listed)-.18 F 1.402
-(above under)180 168 R/F3 9/Palatino-Bold@0 SF 1.401
-(CONDITIONAL EXPRESSIONS)3.901 F/F4 9/Palatino-Roman@0 SF(,)A F1 1.401
+-.35 E/F1 10/Palatino-Italic@0 SF(expr1)144 84 Q/F2 10/Palatino-Roman@0
+SF<ad>2.5 E/F3 10/Palatino-Bold@0 SF(a)A F1(expr2)2.5 E F2 -.78 -.9
+(Tr u)180 96 T 2.5(ei).9 G 2.5(fb)-2.5 G(oth)-2.5 E F1(expr1)2.85 E F2
+(and)2.5 E F1(expr2)2.85 E F2(ar)2.5 E 2.5(et)-.18 G -.08(ru)-2.5 G(e.)
+.08 E F1(expr1)144 108 Q F2<ad>2.5 E F3(o)A F1(expr2)2.5 E F2 -.78 -.9
+(Tr u)180 120 T 2.5(ei).9 G 2.5(fe)-2.5 G(ither)-2.5 E F1(expr1)2.85 E
+F2(or)2.5 E F1(expr2)2.85 E F2(is tr)2.5 E(ue.)-.08 E F3(test)144 136.8
+Q F2(and)3.576 E F3([)3.576 E F2 1.076(evaluate conditional expr)3.576 F
+1.076(essions using a set of r)-.18 F 1.076(ules based on the number of)
+-.08 F(ar)144 148.8 Q(guments.)-.18 E 2.5(0a)144 166.8 S -.18(rg)-2.5 G
+(uments).18 E(The expr)180 178.8 Q(ession is false.)-.18 E 2.5(1a)144
+190.8 S -.18(rg)-2.5 G(ument).18 E(The expr)180 202.8 Q(ession is tr)
+-.18 E(ue if and only if the ar)-.08 E(gument is not null.)-.18 E 2.5
+(2a)144 214.8 S -.18(rg)-2.5 G(uments).18 E .209(If the \214rst ar)180
+226.8 R .208(gument is)-.18 F F3(!)2.708 E F2 2.708(,t)C .208(he expr)
+-2.708 F .208(ession is tr)-.18 F .208(ue if and only if the second ar)
+-.08 F(gument)-.18 E 2.143(is null.)180 238.8 R 2.144(If the \214rst ar)
+7.143 F 2.144(gument is one of the unary conditional operators listed)
+-.18 F 1.402(above under)180 250.8 R/F4 9/Palatino-Bold@0 SF 1.401
+(CONDITIONAL EXPRESSIONS)3.901 F/F5 9/Palatino-Roman@0 SF(,)A F2 1.401
 (the expr)3.651 F 1.401(ession is tr)-.18 F 1.401(ue if the unary)-.08 F
-1.355(test is tr)180 180 R 3.855(ue. If)-.08 F 1.356(the \214rst ar)
+1.355(test is tr)180 262.8 R 3.855(ue. If)-.08 F 1.356(the \214rst ar)
 3.855 F 1.356(gument is not a valid unary conditional operator)-.18 F
-3.856(,t)-.74 G(he)-3.856 E(expr)180 192 Q(ession is false.)-.18 E 2.5
-(3a)144 204 S -.18(rg)-2.5 G(uments).18 E 1.5(If the second ar)180 216 R
-1.499(gument is one of the binary conditional operators listed above)
--.18 F(under)180 228 Q F3 .64(CONDITIONAL EXPRESSIONS)3.14 F F4(,)A F1
-.64(the r)2.89 F .64(esult of the expr)-.18 F .64(ession is the r)-.18 F
+3.856(,t)-.74 G(he)-3.856 E(expr)180 274.8 Q(ession is false.)-.18 E 2.5
+(3a)144 286.8 S -.18(rg)-2.5 G(uments).18 E 1.5(If the second ar)180
+298.8 R 1.499
+(gument is one of the binary conditional operators listed above)-.18 F
+(under)180 310.8 Q F4 .64(CONDITIONAL EXPRESSIONS)3.14 F F5(,)A F2 .64
+(the r)2.89 F .64(esult of the expr)-.18 F .64(ession is the r)-.18 F
 .641(esult of)-.18 F .529(the binary test using the \214rst and thir)180
-240 R 3.029(da)-.18 G -.18(rg)-3.029 G .528(uments as operands.).18 F
-.528(If the \214rst ar)5.528 F(gu-)-.18 E .106(ment is)180 252 R F2(!)
-2.606 E F1 2.606(,t)C .107(he value is the negation of the two-ar)-2.606
-F .107(gument test using the second and)-.18 F(thir)180 264 Q 4.633(da)
--.18 G -.18(rg)-4.633 G 4.633(uments. If).18 F 2.133(the \214rst ar)
-4.633 F 2.132(gument is exactly)-.18 F F2(\()4.632 E F1 2.132
+322.8 R 3.029(da)-.18 G -.18(rg)-3.029 G .528(uments as operands.).18 F
+.528(If the \214rst ar)5.528 F(gu-)-.18 E .106(ment is)180 334.8 R F3(!)
+2.606 E F2 2.606(,t)C .107(he value is the negation of the two-ar)-2.606
+F .107(gument test using the second and)-.18 F(thir)180 346.8 Q 4.633
+(da)-.18 G -.18(rg)-4.633 G 4.633(uments. If).18 F 2.133(the \214rst ar)
+4.633 F 2.132(gument is exactly)-.18 F F3(\()4.632 E F2 2.132
 (and the thir)4.632 F 4.632(da)-.18 G -.18(rg)-4.632 G 2.132(ument is)
-.18 F(exactly)180 276 Q F2(\))2.925 E F1 2.925(,t)C .426(he r)-2.925 F
+.18 F(exactly)180 358.8 Q F3(\))2.925 E F2 2.925(,t)C .426(he r)-2.925 F
 .426(esult is the one-ar)-.18 F .426(gument test of the second ar)-.18 F
-2.926(gument. Otherwise,)-.18 F .43(the expr)180 288 R .43
-(ession is false.)-.18 F(The)5.43 E F2<ad61>2.93 E F1(and)2.93 E F2
-<ad6f>2.93 E F1 .43(operators ar)2.93 F 2.93(ec)-.18 G(onsider)-2.93 E
-.43(ed binary operators)-.18 F(in this case.)180 300 Q 2.5(4a)144 312 S
--.18(rg)-2.5 G(uments).18 E .668(If the \214rst ar)180 324 R .668
-(gument is)-.18 F F2(!)3.168 E F1 3.168(,t)C .669(he r)-3.168 F .669
+2.926(gument. Otherwise,)-.18 F .43(the expr)180 370.8 R .43
+(ession is false.)-.18 F(The)5.43 E F3<ad61>2.93 E F2(and)2.93 E F3
+<ad6f>2.93 E F2 .43(operators ar)2.93 F 2.93(ec)-.18 G(onsider)-2.93 E
+.43(ed binary operators)-.18 F(in this case.)180 382.8 Q 2.5(4a)144
+394.8 S -.18(rg)-2.5 G(uments).18 E .668(If the \214rst ar)180 406.8 R
+.668(gument is)-.18 F F3(!)3.168 E F2 3.168(,t)C .669(he r)-3.168 F .669
 (esult is the negation of the thr)-.18 F(ee-ar)-.18 E .669(gument expr)
--.18 F(es-)-.18 E .409(sion composed of the r)180 336 R .409
+-.18 F(es-)-.18 E .409(sion composed of the r)180 418.8 R .409
 (emaining ar)-.18 F 2.909(guments. Otherwise,)-.18 F .409(the expr)2.909
-F .409(ession is parsed)-.18 F(and evaluated accor)180 348 Q(ding to pr)
--.18 E(ecedence using the r)-.18 E(ules listed above.)-.08 E 2.5(5o)144
-360 S 2.5(rm)-2.5 G(or)-2.5 E 2.5(ea)-.18 G -.18(rg)-2.5 G(uments).18 E
-.781(The expr)180 372 R .782(ession is parsed and evaluated accor)-.18 F
-.782(ding to pr)-.18 F .782(ecedence using the r)-.18 F(ules)-.08 E
-(listed above.)180 384 Q F2(times)108 400.8 Q F1 .334
+F .409(ession is parsed)-.18 F(and evaluated accor)180 430.8 Q
+(ding to pr)-.18 E(ecedence using the r)-.18 E(ules listed above.)-.08 E
+2.5(5o)144 442.8 S 2.5(rm)-2.5 G(or)-2.5 E 2.5(ea)-.18 G -.18(rg)-2.5 G
+(uments).18 E .781(The expr)180 454.8 R .782
+(ession is parsed and evaluated accor)-.18 F .782(ding to pr)-.18 F .782
+(ecedence using the r)-.18 F(ules)-.08 E(listed above.)180 466.8 Q F3
+(times)108 483.6 Q F2 .334
 (Print the accumulated user and system times for the shell and for pr)
 11.01 F .334(ocesses r)-.18 F .334(un fr)-.08 F .334(om the)-.18 F 2.5
-(shell. The)144 412.8 R -.18(re)2.5 G(turn status is 0.).18 E F2(trap)
-108 429.6 Q F1([)2.5 E F2(\255lp)A F1 2.5(][)C([)-2.5 E/F5 10
-/Palatino-Italic@0 SF(ar)A(g)-.18 E F1(])A F5(sigspec)2.5 E F1(...])2.5
-E .563(The command)144 441.6 R F5(ar)3.523 E(g)-.18 E F1 .563
-(is to be r)3.543 F .563(ead and executed when the shell r)-.18 F .564
-(eceives signal\(s\))-.18 F F5(sigspec)3.064 E F1 5.564(.I).32 G(f)
--5.564 E F5(ar)144.46 453.6 Q(g)-.18 E F1 .153(is absent \(and ther)
-3.133 F 2.653(ei)-.18 G 2.653(sas)-2.653 G(ingle)-2.653 E F5(sigspec)
-2.653 E F1 2.653(\)o)C(r)-2.653 E F2<ad>2.653 E F1 2.653(,e)C .153
-(ach speci\214ed signal is r)-2.653 F .152(eset to its original)-.18 F
-.069(disposition \(the value it had upon entrance to the shell\).)144
-465.6 R(If)5.069 E F5(ar)3.03 E(g)-.18 E F1 .07
-(is the null string the signal)3.05 F .142(speci\214ed by each)144 477.6
-R F5(sigspec)3.052 E F1 .142(is ignor)2.962 F .142
-(ed by the shell and by the commands it invokes.)-.18 F(If)5.141 E F5
-(ar)3.101 E(g)-.18 E F1(is)3.121 E 1.795(not pr)144 489.6 R 1.795
-(esent and)-.18 F F2<ad70>4.295 E F1 1.796
+(shell. The)144 495.6 R -.18(re)2.5 G(turn status is 0.).18 E F3(trap)
+108 512.4 Q F2([)2.5 E F3(\255lp)A F2 2.5(][)C([)-2.5 E F1(ar)A(g)-.18 E
+F2(])A F1(sigspec)2.5 E F2(...])2.5 E .563(The command)144 524.4 R F1
+(ar)3.523 E(g)-.18 E F2 .563(is to be r)3.543 F .563
+(ead and executed when the shell r)-.18 F .564(eceives signal\(s\))-.18
+F F1(sigspec)3.064 E F2 5.564(.I).32 G(f)-5.564 E F1(ar)144.46 536.4 Q
+(g)-.18 E F2 .153(is absent \(and ther)3.133 F 2.653(ei)-.18 G 2.653
+(sas)-2.653 G(ingle)-2.653 E F1(sigspec)2.653 E F2 2.653(\)o)C(r)-2.653
+E F3<ad>2.653 E F2 2.653(,e)C .153(ach speci\214ed signal is r)-2.653 F
+.152(eset to its original)-.18 F .069
+(disposition \(the value it had upon entrance to the shell\).)144 548.4
+R(If)5.069 E F1(ar)3.03 E(g)-.18 E F2 .07(is the null string the signal)
+3.05 F .142(speci\214ed by each)144 560.4 R F1(sigspec)3.052 E F2 .142
+(is ignor)2.962 F .142(ed by the shell and by the commands it invokes.)
+-.18 F(If)5.141 E F1(ar)3.101 E(g)-.18 E F2(is)3.121 E 1.795(not pr)144
+572.4 R 1.795(esent and)-.18 F F3<ad70>4.295 E F2 1.796
 (has been supplied, then the trap commands associated with each)4.295 F
-F5(sigspec)144.41 501.6 Q F1(ar)3.218 E 2.898(ed)-.18 G 2.898
+F1(sigspec)144.41 584.4 Q F2(ar)3.218 E 2.898(ed)-.18 G 2.898
 (isplayed. If)-2.898 F .398(no ar)2.898 F .398(guments ar)-.18 F 2.898
-(es)-.18 G .397(upplied or if only)-2.898 F F2<ad70>2.897 E F1 .397
-(is given,)2.897 F F2(trap)2.897 E F1 .397(prints the)2.897 F .035
-(list of commands associated with each signal.)144 513.6 R(The)5.036 E
-F2<ad6c>2.536 E F1 .036(option causes the shell to print a list)2.536 F
-1.095(of signal names and their corr)144 525.6 R 1.095
-(esponding numbers.)-.18 F(Each)6.095 E F5(sigspec)4.005 E F1 1.094
-(is either a signal name)3.914 F .672(de\214ned in <)144 537.6 R F5
-(signal.h)A F1 .673(>, or a signal number)B 5.673(.S)-.74 G .673
+(es)-.18 G .397(upplied or if only)-2.898 F F3<ad70>2.897 E F2 .397
+(is given,)2.897 F F3(trap)2.897 E F2 .397(prints the)2.897 F .035
+(list of commands associated with each signal.)144 596.4 R(The)5.036 E
+F3<ad6c>2.536 E F2 .036(option causes the shell to print a list)2.536 F
+1.095(of signal names and their corr)144 608.4 R 1.095
+(esponding numbers.)-.18 F(Each)6.095 E F1(sigspec)4.005 E F2 1.094
+(is either a signal name)3.914 F .672(de\214ned in <)144 620.4 R F1
+(signal.h)A F2 .673(>, or a signal number)B 5.673(.S)-.74 G .673
 (ignal names ar)-5.673 F 3.173(ec)-.18 G .673
-(ase insensitive and the SIG)-3.173 F(pr)144 549.6 Q .977
-(e\214x is optional.)-.18 F .976(If a)5.976 F F5(sigspec)3.886 E F1(is)
-3.796 E F3(EXIT)3.476 E F1 .976(\(0\) the command)3.226 F F5(ar)3.936 E
-(g)-.18 E F1 .976(is executed on exit fr)3.956 F .976(om the)-.18 F
-3.404(shell. If)144 561.6 R(a)3.404 E F5(sigspec)3.814 E F1(is)3.724 E
-F3(DEBUG)3.404 E F4(,)A F1 .904(the command)3.154 F F5(ar)3.864 E(g)-.18
-E F1 .905(is executed befor)3.885 F 3.405(ee)-.18 G(very)-3.405 E F5
-.905(simple command)3.405 F F1(,)A F5(for)144 573.6 Q F1(command,)3.016
-E F5(case)3.016 E F1(command,)3.016 E F5(select)3.016 E F1 .515
-(command, every arithmetic)3.016 F F5(for)3.015 E F1 .515
+(ase insensitive and the SIG)-3.173 F(pr)144 632.4 Q .977
+(e\214x is optional.)-.18 F .976(If a)5.976 F F1(sigspec)3.886 E F2(is)
+3.796 E F4(EXIT)3.476 E F2 .976(\(0\) the command)3.226 F F1(ar)3.936 E
+(g)-.18 E F2 .976(is executed on exit fr)3.956 F .976(om the)-.18 F
+3.404(shell. If)144 644.4 R(a)3.404 E F1(sigspec)3.814 E F2(is)3.724 E
+F4(DEBUG)3.404 E F5(,)A F2 .904(the command)3.154 F F1(ar)3.864 E(g)-.18
+E F2 .905(is executed befor)3.885 F 3.405(ee)-.18 G(very)-3.405 E F1
+.905(simple command)3.405 F F2(,)A F1(for)144 656.4 Q F2(command,)3.016
+E F1(case)3.016 E F2(command,)3.016 E F1(select)3.016 E F2 .515
+(command, every arithmetic)3.016 F F1(for)3.015 E F2 .515
 (command, and befor)3.015 F(e)-.18 E 1.001
-(the \214rst command executes in a shell function \(see)144 585.6 R F3
-1.001(SHELL GRAMMAR)3.501 F F1 3.501(above\). Refer)3.251 F(to)3.501 E
-.679(the description of the)144 597.6 R F2(extdebug)3.178 E F1 .678
-(option to the)3.178 F F2(shopt)3.178 E F1 .678
-(builtin for details of its ef)3.178 F .678(fect on the)-.18 F F2(DEBUG)
-144 609.6 Q F1 3.153(trap. If)3.153 F(a)3.153 E F5(sigspec)3.563 E F1
-(is)3.473 E F3(ERR)3.153 E F4(,)A F1 .653(the command)2.903 F F5(ar)
-3.613 E(g)-.18 E F1 .653(is executed whenever a simple com-)3.633 F .241
-(mand has a non\255zer)144 621.6 R 2.741(oe)-.18 G .24
-(xit status, subject to the following conditions.)-2.741 F(The)5.24 E F3
-(ERR)2.74 E F1 .24(trap is not)2.49 F 1.926(executed if the failed comm\
-and is part of the command list immediately following a)144 633.6 R F2
-(while)144 645.6 Q F1(or)2.552 E F2(until)2.552 E F1(keywor)2.552 E .052
-(d, part of the test in an)-.18 F F5(if)2.712 E F1 .052
-(statement, part of a)4.402 F F2(&&)2.552 E F1(or)2.552 E/F6 10/Symbol
-SF<efef>2.552 E F1 .051(list, or if the)2.552 F .092(command's r)144
-657.6 R .092(eturn value is being inverted via)-.18 F F2(!)2.592 E F1
-5.092(.T)C .092(hese ar)-5.092 F 2.592(et)-.18 G .092
-(he same conditions obeyed by)-2.592 F(the)144 669.6 Q F2(errexit)2.825
-E F1 2.825(option. If)2.825 F(a)2.825 E F5(sigspec)3.235 E F1(is)3.145 E
-F3(RETURN)2.825 E F4(,)A F1 .325(the command)2.575 F F5(ar)3.284 E(g)
+(the \214rst command executes in a shell function \(see)144 668.4 R F4
+1.001(SHELL GRAMMAR)3.501 F F2 3.501(above\). Refer)3.251 F(to)3.501 E
+.679(the description of the)144 680.4 R F3(extdebug)3.178 E F2 .678
+(option to the)3.178 F F3(shopt)3.178 E F2 .678
+(builtin for details of its ef)3.178 F .678(fect on the)-.18 F F3(DEBUG)
+144 692.4 Q F2 3.153(trap. If)3.153 F(a)3.153 E F1(sigspec)3.563 E F2
+(is)3.473 E F4(ERR)3.153 E F5(,)A F2 .653(the command)2.903 F F1(ar)
+3.613 E(g)-.18 E F2 .653(is executed whenever a simple com-)3.633 F .241
+(mand has a non\255zer)144 704.4 R 2.741(oe)-.18 G .24
+(xit status, subject to the following conditions.)-2.741 F(The)5.24 E F4
+(ERR)2.74 E F2 .24(trap is not)2.49 F 1.926(executed if the failed comm\
+and is part of the command list immediately following a)144 716.4 R F3
+(while)144 728.4 Q F2(or)2.552 E F3(until)2.552 E F2(keywor)2.552 E .052
+(d, part of the test in an)-.18 F F1(if)2.712 E F2 .052
+(statement, part of a)4.402 F F3(&&)2.552 E F2(or)2.552 E/F6 10/Symbol
+SF<efef>2.552 E F2 .051(list, or if the)2.552 F F0(GNU Bash-3.0)72 768 Q
+(2004 Sep 17)149.01 E(60)199 E 0 Cg EP
+%%Page: 61 61
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\))
+-.35 E/F1 10/Palatino-Roman@0 SF .092(command's r)144 84 R .092
+(eturn value is being inverted via)-.18 F/F2 10/Palatino-Bold@0 SF(!)
+2.592 E F1 5.092(.T)C .092(hese ar)-5.092 F 2.592(et)-.18 G .092
+(he same conditions obeyed by)-2.592 F(the)144 96 Q F2(errexit)2.825 E
+F1 2.825(option. If)2.825 F(a)2.825 E/F3 10/Palatino-Italic@0 SF
+(sigspec)3.235 E F1(is)3.145 E/F4 9/Palatino-Bold@0 SF(RETURN)2.825 E/F5
+9/Palatino-Roman@0 SF(,)A F1 .325(the command)2.575 F F3(ar)3.284 E(g)
 -.18 E F1 .324(is executed each time a shell)3.304 F 1.95
-(function or a script executed with the)144 681.6 R F2(.)4.451 E F1(or)
+(function or a script executed with the)144 108 R F2(.)4.451 E F1(or)
 4.451 E F2(source)4.451 E F1 1.951(builtins \214nishes executing.)4.451
-F(Signals)6.951 E(ignor)144 693.6 Q .847
+F(Signals)6.951 E(ignor)144 120 Q .847
 (ed upon entry to the shell cannot be trapped or r)-.18 F 3.346(eset. T)
 -.18 F .846(rapped signals ar)-.9 F 3.346(er)-.18 G .846(eset to)-3.526
-F .298(their original values in a child pr)144 705.6 R .299
+F .298(their original values in a child pr)144 132 R .299
 (ocess when it is cr)-.18 F 2.799(eated. The)-.18 F -.18(re)2.799 G .299
-(turn status is false if any).18 F F5(sigspec)144.41 717.6 Q F1
+(turn status is false if any).18 F F3(sigspec)144.41 144 Q F1
 (is invalid; otherwise)2.82 E F2(trap)2.5 E F1 -.18(re)2.5 G(turns tr)
-.18 E(ue.)-.08 E F0(GNU Bash-3.0)72 768 Q(2004 June 26)147.345 E(60)
-197.335 E 0 Cg EP
-%%Page: 61 61
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\))
--.35 E/F1 10/Palatino-Bold@0 SF(type)108 84 Q/F2 10/Palatino-Roman@0 SF
-([)2.5 E F1(\255aftpP)A F2(])A/F3 10/Palatino-Italic@0 SF(name)2.5 E F2
-([)2.5 E F3(name)A F2(...])2.5 E -.55(Wi)144 96 S 1.476
-(th no options, indicate how each).55 F F3(name)4.236 E F2 1.476
+.18 E(ue.)-.08 E F2(type)108 160.8 Q F1([)2.5 E F2(\255aftpP)A F1(])A F3
+(name)2.5 E F1([)2.5 E F3(name)A F1(...])2.5 E -.55(Wi)144 172.8 S 1.476
+(th no options, indicate how each).55 F F3(name)4.236 E F1 1.476
 (would be interpr)4.326 F 1.475(eted if used as a command)-.18 F 2.725
-(name. If)144 108 R(the)2.725 E F1<ad74>2.725 E F2 .225(option is used,)
-2.725 F F1(type)2.725 E F2 .225(prints a string which is one of)2.725 F
-F3(alias)2.726 E F2(,).06 E F3(keyword)2.726 E F2(,).33 E F3(function)
-2.726 E F2(,).08 E F3(builtin)144 120 Q F2 2.556(,o).08 G(r)-2.556 E F3
-(\214le)4.676 E F2(if)2.906 E F3(name)2.816 E F2 .056
-(is an alias, shell r)2.906 F .056(eserved wor)-.18 F .055
-(d, function, builtin, or disk \214le, r)-.18 F(espec-)-.18 E(tively)144
-132 Q 6.634(.I)-1.11 G 4.134(ft)-6.634 G(he)-4.134 E F3(name)4.394 E F2
-1.635
+(name. If)144 184.8 R(the)2.725 E F2<ad74>2.725 E F1 .225
+(option is used,)2.725 F F2(type)2.725 E F1 .225
+(prints a string which is one of)2.725 F F3(alias)2.726 E F1(,).06 E F3
+(keyword)2.726 E F1(,).33 E F3(function)2.726 E F1(,).08 E F3(builtin)
+144 196.8 Q F1 2.556(,o).08 G(r)-2.556 E F3(\214le)4.676 E F1(if)2.906 E
+F3(name)2.816 E F1 .056(is an alias, shell r)2.906 F .056(eserved wor)
+-.18 F .055(d, function, builtin, or disk \214le, r)-.18 F(espec-)-.18 E
+(tively)144 208.8 Q 6.634(.I)-1.11 G 4.134(ft)-6.634 G(he)-4.134 E F3
+(name)4.394 E F1 1.635
 (is not found, then nothing is printed, and an exit status of false is)
-4.484 F -.18(re)144 144 S 2.523(turned. If).18 F(the)2.523 E F1<ad70>
-2.523 E F2 .023(option is used,)2.523 F F1(type)2.523 E F2 .023
+4.484 F -.18(re)144 220.8 S 2.523(turned. If).18 F(the)2.523 E F2<ad70>
+2.523 E F1 .023(option is used,)2.523 F F2(type)2.523 E F1 .023
 (either r)2.523 F .023(eturns the name of the disk \214le that would)
--.18 F 1.086(be executed if)144 156 R F3(name)3.846 E F2(wer)3.936 E
+-.18 F 1.086(be executed if)144 232.8 R F3(name)3.846 E F1(wer)3.936 E
 3.586(es)-.18 G 1.086(peci\214ed as a command name, or nothing if)-3.586
-F/F4 10/Courier@0 SF 1.086(type -t name)3.586 F F2 .016(would not r)144
-168 R(eturn)-.18 E F3(\214le)2.516 E F2 5.016(.T).35 G(he)-5.016 E F1
-<ad50>2.516 E F2 .016(option for)2.516 F .016(ces a)-.18 F/F5 9
-/Palatino-Bold@0 SF -.666(PA)2.515 G(TH)-.162 E F2(sear)2.265 E .015
-(ch for each)-.18 F F3(name)2.515 E F2 2.515(,e)C .015(ven if)-2.515 F
-F4 .015(type -t)2.515 F(name)144 180 Q F2 .645(would not r)3.145 F
-(eturn)-.18 E F3(\214le)3.145 E F2 5.645(.I).35 G 3.145(fac)-5.645 G
-.645(ommand is hashed,)-3.145 F F1<ad70>3.145 E F2(and)3.145 E F1<ad50>
-3.145 E F2 .645(print the hashed value,)3.145 F .411
-(not necessarily the \214le that appears \214rst in)144 192 R F5 -.666
-(PA)2.911 G(TH)-.162 E/F6 9/Palatino-Roman@0 SF(.)A F2 .411(If the)4.911
-F F1<ad61>2.911 E F2 .411(option is used,)2.911 F F1(type)2.91 E F2 .41
-(prints all)2.91 F .164(of the places that contain an executable named)
-144 204 R F3(name)2.664 E F2 5.164(.T).35 G .164
-(his includes aliases and functions,)-5.164 F .73(if and only if the)144
-216 R F1<ad70>3.23 E F2 .73(option is not also used.)3.23 F .73
+F/F6 10/Courier@0 SF 1.086(type -t name)3.586 F F1 .016(would not r)144
+244.8 R(eturn)-.18 E F3(\214le)2.516 E F1 5.016(.T).35 G(he)-5.016 E F2
+<ad50>2.516 E F1 .016(option for)2.516 F .016(ces a)-.18 F F4 -.666(PA)
+2.515 G(TH)-.162 E F1(sear)2.265 E .015(ch for each)-.18 F F3(name)2.515
+E F1 2.515(,e)C .015(ven if)-2.515 F F6 .015(type -t)2.515 F(name)144
+256.8 Q F1 .645(would not r)3.145 F(eturn)-.18 E F3(\214le)3.145 E F1
+5.645(.I).35 G 3.145(fac)-5.645 G .645(ommand is hashed,)-3.145 F F2
+<ad70>3.145 E F1(and)3.145 E F2<ad50>3.145 E F1 .645
+(print the hashed value,)3.145 F .411
+(not necessarily the \214le that appears \214rst in)144 268.8 R F4 -.666
+(PA)2.911 G(TH)-.162 E F5(.)A F1 .411(If the)4.911 F F2<ad61>2.911 E F1
+.411(option is used,)2.911 F F2(type)2.91 E F1 .41(prints all)2.91 F
+.164(of the places that contain an executable named)144 280.8 R F3(name)
+2.664 E F1 5.164(.T).35 G .164(his includes aliases and functions,)
+-5.164 F .73(if and only if the)144 292.8 R F2<ad70>3.23 E F1 .73
+(option is not also used.)3.23 F .73
 (The table of hashed commands is not con-)5.73 F .497(sulted when using)
-144 228 R F1<ad61>2.998 E F2 5.498(.T)C(he)-5.498 E F1<ad66>2.998 E F2
+144 304.8 R F2<ad61>2.998 E F1 5.498(.T)C(he)-5.498 E F2<ad66>2.998 E F1
 .498(option suppr)2.998 F .498(esses shell function lookup, as with the)
--.18 F F1(com-)2.998 E(mand)144 240 Q F2(builtin.)4.558 E F1(type)7.058
-E F2 -.18(re)4.558 G 2.058(turns tr).18 F 2.057(ue if any of the ar)-.08
-F 2.057(guments ar)-.18 F 4.557(ef)-.18 G 2.057(ound, false if none ar)
--4.557 F(e)-.18 E(found.)144 252 Q F1(ulimit)108 268.8 Q F2([)2.5 E F1
-(\255SHacd\215mnpstuv)A F2([)2.5 E F3(limit)A F2(]])A(Pr)144 280.8 Q
-.061(ovides contr)-.18 F .061(ol over the r)-.18 F(esour)-.18 E .061
+-.18 F F2(com-)2.998 E(mand)144 316.8 Q F1(builtin.)4.558 E F2(type)
+7.058 E F1 -.18(re)4.558 G 2.058(turns tr).18 F 2.057
+(ue if any of the ar)-.08 F 2.057(guments ar)-.18 F 4.557(ef)-.18 G
+2.057(ound, false if none ar)-4.557 F(e)-.18 E(found.)144 328.8 Q F2
+(ulimit)108 345.6 Q F1([)2.5 E F2(\255SHacd\215mnpstuv)A F1([)2.5 E F3
+(limit)A F1(]])A(Pr)144 357.6 Q .061(ovides contr)-.18 F .061
+(ol over the r)-.18 F(esour)-.18 E .061
 (ces available to the shell and to pr)-.18 F .062
 (ocesses started by it, on)-.18 F 1.497(systems that allow such contr)
-144 292.8 R 3.997(ol. The)-.18 F F1<ad48>3.997 E F2(and)3.997 E F1<ad53>
-3.997 E F2 1.496(options specify that the har)3.997 F 3.996(do)-.18 G
+144 369.6 R 3.997(ol. The)-.18 F F2<ad48>3.997 E F1(and)3.997 E F2<ad53>
+3.997 E F1 1.496(options specify that the har)3.997 F 3.996(do)-.18 G
 3.996(rs)-3.996 G(oft)-3.996 E .884(limit is set for the given r)144
-304.8 R(esour)-.18 E 3.384(ce. A)-.18 F(har)3.384 E 3.384(dl)-.18 G .884
+381.6 R(esour)-.18 E 3.384(ce. A)-.18 F(har)3.384 E 3.384(dl)-.18 G .884
 (imit cannot be incr)-3.384 F .884(eased once it is set; a soft)-.18 F
-.089(limit may be incr)144 316.8 R .088
+.089(limit may be incr)144 393.6 R .088
 (eased up to the value of the har)-.18 F 2.588(dl)-.18 G 2.588(imit. If)
--2.588 F(neither)2.588 E F1<ad48>2.588 E F2(nor)2.588 E F1<ad53>2.588 E
-F2 .088(is speci\214ed,)2.588 F .162(both the soft and har)144 328.8 R
+-2.588 F(neither)2.588 E F2<ad48>2.588 E F1(nor)2.588 E F2<ad53>2.588 E
+F1 .088(is speci\214ed,)2.588 F .162(both the soft and har)144 405.6 R
 2.662(dl)-.18 G .162(imits ar)-2.662 F 2.662(es)-.18 G 2.663(et. The)
--2.662 F .163(value of)2.663 F F3(limit)2.803 E F2 .163
+-2.662 F .163(value of)2.663 F F3(limit)2.803 E F1 .163
 (can be a number in the unit speci-)2.933 F .176(\214ed for the r)144
-340.8 R(esour)-.18 E .176(ce or one of the special values)-.18 F F1
-(hard)2.676 E F2(,)A F1(soft)2.675 E F2 2.675(,o)C(r)-2.675 E F1
-(unlimited)2.675 E F2 2.675(,w)C .175(hich stand for)-2.675 F .242
-(the curr)144 352.8 R .242(ent har)-.18 F 2.742(dl)-.18 G .242
+417.6 R(esour)-.18 E .176(ce or one of the special values)-.18 F F2
+(hard)2.676 E F1(,)A F2(soft)2.675 E F1 2.675(,o)C(r)-2.675 E F2
+(unlimited)2.675 E F1 2.675(,w)C .175(hich stand for)-2.675 F .242
+(the curr)144 429.6 R .242(ent har)-.18 F 2.742(dl)-.18 G .242
 (imit, the curr)-2.742 F .243(ent soft limit, and no limit, r)-.18 F
-(espectively)-.18 E 5.243(.I)-1.11 G(f)-5.243 E F3(limit)2.883 E F2 .243
-(is omitted,)3.013 F .082(the curr)144 364.8 R .081
+(espectively)-.18 E 5.243(.I)-1.11 G(f)-5.243 E F3(limit)2.883 E F1 .243
+(is omitted,)3.013 F .082(the curr)144 441.6 R .081
 (ent value of the soft limit of the r)-.18 F(esour)-.18 E .081
-(ce is printed, unless the)-.18 F F1<ad48>2.581 E F2 .081
-(option is given.)2.581 F .329(When mor)144 376.8 R 2.829(et)-.18 G .329
+(ce is printed, unless the)-.18 F F2<ad48>2.581 E F1 .081
+(option is given.)2.581 F .329(When mor)144 453.6 R 2.829(et)-.18 G .329
 (han one r)-2.829 F(esour)-.18 E .329
 (ce is speci\214ed, the limit name and unit ar)-.18 F 2.83(ep)-.18 G .33
 (rinted befor)-2.83 F 2.83(et)-.18 G(he)-2.83 E 2.5(value. Other)144
-388.8 R(options ar)2.5 E 2.5(ei)-.18 G(nterpr)-2.5 E(eted as follows:)
--.18 E F1<ad61>144 400.8 Q F2(All curr)24.94 E(ent limits ar)-.18 E 2.5
-(er)-.18 G(eported)-2.68 E F1<ad63>144 412.8 Q F2
+465.6 R(options ar)2.5 E 2.5(ei)-.18 G(nterpr)-2.5 E(eted as follows:)
+-.18 E F2<ad61>144 477.6 Q F1(All curr)24.94 E(ent limits ar)-.18 E 2.5
+(er)-.18 G(eported)-2.68 E F2<ad63>144 489.6 Q F1
 (The maximum size of cor)25.5 E 2.5<658c>-.18 G(les cr)-2.5 E(eated)-.18
-E F1<ad64>144 424.8 Q F2(The maximum size of a pr)23.83 E
-(ocess's data segment)-.18 E F1<ad66>144 436.8 Q F2
-(The maximum size of \214les cr)26.05 E(eated by the shell)-.18 E F1
-<ad6c>144 448.8 Q F2(The maximum size that may be locked into memory)
-26.61 E F1<ad6d>144 460.8 Q F2(The maximum r)21.05 E(esident set size)
--.18 E F1<ad6e>144 472.8 Q F2 .958(The maximum number of open \214le de\
+E F2<ad64>144 501.6 Q F1(The maximum size of a pr)23.83 E
+(ocess's data segment)-.18 E F2<ad66>144 513.6 Q F1
+(The maximum size of \214les cr)26.05 E(eated by the shell)-.18 E F2
+<ad6c>144 525.6 Q F1(The maximum size that may be locked into memory)
+26.61 E F2<ad6d>144 537.6 Q F1(The maximum r)21.05 E(esident set size)
+-.18 E F2<ad6e>144 549.6 Q F1 .958(The maximum number of open \214le de\
 scriptors \(most systems do not allow this)23.83 F(value to be set\))180
-484.8 Q F1<ad70>144 496.8 Q F2
-(The pipe size in 512-byte blocks \(this may not be set\))23.83 E F1
-<ad73>144 508.8 Q F2(The maximum stack size)25.5 E F1<ad74>144 520.8 Q
-F2(The maximum amount of cpu time in seconds)26.61 E F1<ad75>144 532.8 Q
-F2(The maximum number of pr)23.83 E(ocesses available to a single user)
--.18 E F1<ad76>144 544.8 Q F2
+561.6 Q F2<ad70>144 573.6 Q F1
+(The pipe size in 512-byte blocks \(this may not be set\))23.83 E F2
+<ad73>144 585.6 Q F1(The maximum stack size)25.5 E F2<ad74>144 597.6 Q
+F1(The maximum amount of cpu time in seconds)26.61 E F2<ad75>144 609.6 Q
+F1(The maximum number of pr)23.83 E(ocesses available to a single user)
+-.18 E F2<ad76>144 621.6 Q F1
 (The maximum amount of virtual memory available to the shell)24.38 E(If)
-144 561.6 Q F3(limit)4.15 E F2 1.51
+144 638.4 Q F3(limit)4.15 E F1 1.51
 (is given, it is the new value of the speci\214ed r)4.28 F(esour)-.18 E
-1.511(ce \(the)-.18 F F1<ad61>4.011 E F2 1.511(option is display)4.011 F
-4.315(only\). If)144 573.6 R 1.815(no option is given, then)4.315 F F1
-<ad66>4.315 E F2 1.815(is assumed.)4.315 F -.92(Va)6.815 G 1.815
+1.511(ce \(the)-.18 F F2<ad61>4.011 E F1 1.511(option is display)4.011 F
+4.315(only\). If)144 650.4 R 1.815(no option is given, then)4.315 F F2
+<ad66>4.315 E F1 1.815(is assumed.)4.315 F -.92(Va)6.815 G 1.815
 (lues ar).92 F 4.315(ei)-.18 G 4.315(n1)-4.315 G 1.815(024-byte incr)
--4.315 F(ements,)-.18 E .972(except for)144 585.6 R F1<ad74>3.473 E F2
-3.473(,w)C .973(hich is in seconds,)-3.473 F F1<ad70>3.473 E F2 3.473
-(,w)C .973(hich is in units of 512-byte blocks, and)-3.473 F F1<ad6e>
-3.473 E F2(and)3.473 E F1<ad75>144 597.6 Q F2 3.518(,w)C 1.018(hich ar)
+-4.315 F(ements,)-.18 E .972(except for)144 662.4 R F2<ad74>3.473 E F1
+3.473(,w)C .973(hich is in seconds,)-3.473 F F2<ad70>3.473 E F1 3.473
+(,w)C .973(hich is in units of 512-byte blocks, and)-3.473 F F2<ad6e>
+3.473 E F1(and)3.473 E F2<ad75>144 674.4 Q F1 3.518(,w)C 1.018(hich ar)
 -3.518 F 3.518(eu)-.18 G 1.018(nscaled values.)-3.518 F 1.017(The r)
 6.018 F 1.017(eturn status is 0 unless an invalid option or ar)-.18 F
-(gu-)-.18 E(ment is supplied, or an err)144 609.6 Q
-(or occurs while setting a new limit.)-.18 E F1(umask)108 626.4 Q F2([)
-2.5 E F1<ad70>A F2 2.5(][)C F1<ad53>-2.5 E F2 2.5(][)C F3(mode)-2.5 E F2
-(])A .535(The user \214le-cr)144 638.4 R .535(eation mask is set to)-.18
-F F3(mode)3.035 E F2 5.535(.I).35 G(f)-5.535 E F3(mode)3.295 E F2 .536
+(gu-)-.18 E(ment is supplied, or an err)144 686.4 Q
+(or occurs while setting a new limit.)-.18 E F2(umask)108 703.2 Q F1([)
+2.5 E F2<ad70>A F1 2.5(][)C F2<ad53>-2.5 E F1 2.5(][)C F3(mode)-2.5 E F1
+(])A .535(The user \214le-cr)144 715.2 R .535(eation mask is set to)-.18
+F F3(mode)3.035 E F1 5.535(.I).35 G(f)-5.535 E F3(mode)3.295 E F1 .536
 (begins with a digit, it is interpr)3.385 F .536(eted as)-.18 F 1.827
-(an octal number; otherwise it is interpr)144 650.4 R 1.826
-(eted as a symbolic mode mask similar to that)-.18 F .95(accepted by)144
-662.4 R F3(chmod)3.45 E F2 3.45(\(1\). If).33 F F3(mode)3.71 E F2 .951
-(is omitted, the curr)3.8 F .951(ent value of the mask is printed.)-.18
-F(The)5.951 E F1<ad53>144 674.4 Q F2 .607(option causes the mask to be \
-printed in symbolic form; the default output is an octal)3.107 F(number)
-144 686.4 Q 6.02(.I)-.74 G 3.52(ft)-6.02 G(he)-3.52 E F1<ad70>3.52 E F2
-1.02(option is supplied, and)3.52 F F3(mode)3.78 E F2 1.02
-(is omitted, the output is in a form that)3.87 F .237(may be r)144 698.4
-R .237(eused as input.)-.18 F .237(The r)5.237 F .236
-(eturn status is 0 if the mode was successfully changed or if)-.18 F(no)
-144 710.4 Q F3(mode)2.5 E F2(ar)2.5 E
-(gument was supplied, and false otherwise.)-.18 E F0(GNU Bash-3.0)72 768
-Q(2004 June 26)147.345 E(61)197.335 E 0 Cg EP
+(an octal number; otherwise it is interpr)144 727.2 R 1.826
+(eted as a symbolic mode mask similar to that)-.18 F F0(GNU Bash-3.0)72
+768 Q(2004 Sep 17)149.01 E(61)199 E 0 Cg EP
 %%Page: 62 62
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\))
--.35 E/F1 10/Palatino-Bold@0 SF(unalias)108 84 Q/F2 10/Palatino-Roman@0
-SF<5bad>2.5 E F1(a)A F2 2.5(][)C/F3 10/Palatino-Italic@0 SF(name)-2.5 E
-F2(...])2.5 E .718(Remove each)144 96 R F3(name)3.218 E F2(fr)3.218 E
-.719(om the list of de\214ned aliases.)-.18 F(If)5.719 E F1<ad61>3.219 E
-F2 .719(is supplied, all alias de\214nitions)3.219 F(ar)144 108 Q 2.5
-(er)-.18 G 2.5(emoved. The)-2.68 F -.18(re)2.5 G(turn value is tr).18 E
-(ue unless a supplied)-.08 E F3(name)2.76 E F2
-(is not a de\214ned alias.)2.85 E F1(unset)108 124.8 Q F2<5bad>2.5 E F1
-(fv)A F2 2.5(][)C F3(name)-2.5 E F2(...])2.5 E 1.61(For each)144 136.8 R
-F3(name)4.11 E F2 4.11(,r).35 G 1.61(emove the corr)-4.29 F 1.61
+-.35 E/F1 10/Palatino-Roman@0 SF .95(accepted by)144 84 R/F2 10
+/Palatino-Italic@0 SF(chmod)3.45 E F1 3.45(\(1\). If).33 F F2(mode)3.71
+E F1 .951(is omitted, the curr)3.8 F .951
+(ent value of the mask is printed.)-.18 F(The)5.951 E/F3 10
+/Palatino-Bold@0 SF<ad53>144 96 Q F1 .607(option causes the mask to be \
+printed in symbolic form; the default output is an octal)3.107 F(number)
+144 108 Q 6.02(.I)-.74 G 3.52(ft)-6.02 G(he)-3.52 E F3<ad70>3.52 E F1
+1.02(option is supplied, and)3.52 F F2(mode)3.78 E F1 1.02
+(is omitted, the output is in a form that)3.87 F .237(may be r)144 120 R
+.237(eused as input.)-.18 F .237(The r)5.237 F .236
+(eturn status is 0 if the mode was successfully changed or if)-.18 F(no)
+144 132 Q F2(mode)2.5 E F1(ar)2.5 E
+(gument was supplied, and false otherwise.)-.18 E F3(unalias)108 148.8 Q
+F1<5bad>2.5 E F3(a)A F1 2.5(][)C F2(name)-2.5 E F1(...])2.5 E .718
+(Remove each)144 160.8 R F2(name)3.218 E F1(fr)3.218 E .719
+(om the list of de\214ned aliases.)-.18 F(If)5.719 E F3<ad61>3.219 E F1
+.719(is supplied, all alias de\214nitions)3.219 F(ar)144 172.8 Q 2.5(er)
+-.18 G 2.5(emoved. The)-2.68 F -.18(re)2.5 G(turn value is tr).18 E
+(ue unless a supplied)-.08 E F2(name)2.76 E F1
+(is not a de\214ned alias.)2.85 E F3(unset)108 189.6 Q F1<5bad>2.5 E F3
+(fv)A F1 2.5(][)C F2(name)-2.5 E F1(...])2.5 E 1.61(For each)144 201.6 R
+F2(name)4.11 E F1 4.11(,r).35 G 1.61(emove the corr)-4.29 F 1.61
 (esponding variable or function.)-.18 F 1.61(If no options ar)6.61 F
-4.11(es)-.18 G(up-)-4.11 E .473(plied, or the)144 148.8 R F1<ad76>2.973
-E F2 .473(option is given, each)2.973 F F3(name)3.233 E F2 -.18(re)3.323
+4.11(es)-.18 G(up-)-4.11 E .473(plied, or the)144 213.6 R F3<ad76>2.973
+E F1 .473(option is given, each)2.973 F F2(name)3.233 E F1 -.18(re)3.323
 G .474(fers to a shell variable.).18 F .474(Read-only variables)5.474 F
-.48(may not be unset.)144 160.8 R(If)5.48 E F1<ad66>2.98 E F2 .48
-(is specifed, each)2.98 F F3(name)3.24 E F2 -.18(re)3.33 G .48
+.48(may not be unset.)144 225.6 R(If)5.48 E F3<ad66>2.98 E F1 .48
+(is specifed, each)2.98 F F2(name)3.24 E F1 -.18(re)3.33 G .48
 (fers to a shell function, and the function).18 F .405
-(de\214nition is r)144 172.8 R 2.905(emoved. Each)-.18 F .405
+(de\214nition is r)144 237.6 R 2.905(emoved. Each)-.18 F .405
 (unset variable or function is r)2.905 F .405(emoved fr)-.18 F .405
 (om the envir)-.18 F(onment)-.18 E 1.475(passed to subsequent commands.)
-144 184.8 R 1.475(If any of)6.475 F/F4 9/Palatino-Bold@0 SF(RANDOM)3.975
+144 249.6 R 1.475(If any of)6.475 F/F4 9/Palatino-Bold@0 SF(RANDOM)3.975
 E/F5 9/Palatino-Roman@0 SF(,)A F4(SECONDS)3.725 E F5(,)A F4(LINENO)3.724
-E F5(,)A F4(HISTCMD)3.724 E F5(,)A F4(FUNCNAME)144 196.8 Q F5(,)A F4
-(GROUPS)2.803 E F5(,)A F2(or)2.803 E F4(DIRST)3.053 E(ACK)-.828 E F2(ar)
+E F5(,)A F4(HISTCMD)3.724 E F5(,)A F4(FUNCNAME)144 261.6 Q F5(,)A F4
+(GROUPS)2.803 E F5(,)A F1(or)2.803 E F4(DIRST)3.053 E(ACK)-.828 E F1(ar)
 2.803 E 3.053(eu)-.18 G .553(nset, they lose their special pr)-3.053 F
-.553(operties, even if)-.18 F(they ar)144 208.8 Q 2.5(es)-.18 G
+.553(operties, even if)-.18 F(they ar)144 273.6 Q 2.5(es)-.18 G
 (ubsequently r)-2.5 E 2.5(eset. The)-.18 F(exit status is tr)2.5 E
-(ue unless a)-.08 E F3(name)2.76 E F2(is r)2.85 E(eadonly)-.18 E(.)-1.11
-E F1(wait)108 225.6 Q F2([)2.5 E F3(n)A F2(])A -.92(Wa)144 237.6 S .299
+(ue unless a)-.08 E F2(name)2.76 E F1(is r)2.85 E(eadonly)-.18 E(.)-1.11
+E F3(wait)108 290.4 Q F1([)2.5 E F2(n)A F1(])A -.92(Wa)144 302.4 S .299
 (it for the speci\214ed pr).92 F .298(ocess and r)-.18 F .298
-(eturn its termination status.)-.18 F F3(n)5.558 E F2 .298(may be a pr)
-2.878 F .298(ocess ID or)-.18 F 2.798(aj)144 249.6 S .298
+(eturn its termination status.)-.18 F F2(n)5.558 E F1 .298(may be a pr)
+2.878 F .298(ocess ID or)-.18 F 2.798(aj)144 314.4 S .298
 (ob speci\214cation; if a job spec is given, all pr)-2.798 F .298
 (ocesses in that job's pipeline ar)-.18 F 2.799(ew)-.18 G .299
-(aited for)-2.799 F(.)-.74 E(If)144 261.6 Q F3(n)2.78 E F2 .02
+(aited for)-2.799 F(.)-.74 E(If)144 326.4 Q F2(n)2.78 E F1 .02
 (is not given, all curr)2.6 F .02(ently active child pr)-.18 F .02
 (ocesses ar)-.18 F 2.52(ew)-.18 G .02(aited for)-2.52 F 2.52(,a)-.74 G
-.02(nd the r)-2.52 F .02(eturn status is)-.18 F(zer)144 273.6 Q 3.137
-(o. If)-.18 F F3(n)3.397 E F2 .637(speci\214es a non-existent pr)3.217 F
+.02(nd the r)-2.52 F .02(eturn status is)-.18 F(zer)144 338.4 Q 3.137
+(o. If)-.18 F F2(n)3.397 E F1 .637(speci\214es a non-existent pr)3.217 F
 .637(ocess or job, the r)-.18 F .638(eturn status is 127.)-.18 F .638
-(Otherwise, the)5.638 F -.18(re)144 285.6 S
+(Otherwise, the)5.638 F -.18(re)144 350.4 S
 (turn status is the exit status of the last pr).18 E
 (ocess or job waited for)-.18 E(.)-.74 E/F6 10.95/Palatino-Bold@0 SF
-(RESTRICTED SHELL)72 302.4 Q F2(If)108 314.4 Q F1(bash)4.639 E F2 2.139
-(is started with the name)4.639 F F1(rbash)4.638 E F2 4.638(,o)C 4.638
-(rt)-4.638 G(he)-4.638 E F1<ad72>4.638 E F2 2.138
+(RESTRICTED SHELL)72 367.2 Q F1(If)108 379.2 Q F3(bash)4.639 E F1 2.139
+(is started with the name)4.639 F F3(rbash)4.638 E F1 4.638(,o)C 4.638
+(rt)-4.638 G(he)-4.638 E F3<ad72>4.638 E F1 2.138
 (option is supplied at invocation, the shell)4.638 F .618(becomes r)108
-326.4 R 3.118(estricted. A)-.18 F -.18(re)3.118 G .618
+391.2 R 3.118(estricted. A)-.18 F -.18(re)3.118 G .618
 (stricted shell is used to set up an envir).18 F .618(onment mor)-.18 F
 3.118(ec)-.18 G(ontr)-3.118 E .618(olled than the)-.18 F(standar)108
-338.4 Q 4.198(ds)-.18 G 4.198(hell. It)-4.198 F 1.697
-(behaves identically to)4.197 F F1(bash)4.197 E F2 1.697
+403.2 Q 4.198(ds)-.18 G 4.198(hell. It)-4.198 F 1.697
+(behaves identically to)4.197 F F3(bash)4.197 E F1 1.697
 (with the exception that the following ar)4.197 F 4.197(ed)-.18 G(isal-)
--4.197 E(lowed or not performed:)108 350.4 Q 29.94<8363>108 367.2 S
-(hanging dir)-29.94 E(ectories with)-.18 E F1(cd)2.5 E F2 29.94<8373>108
-384 S(etting or unsetting the values of)-29.94 E F1(SHELL)2.5 E F2(,)A
-F1 -.74(PA)2.5 G(TH)-.18 E F2(,)A F1(ENV)2.5 E F2 2.5(,o)C(r)-2.5 E F1
-(BASH_ENV)2.5 E F2 29.94<8373>108 400.8 S
-(pecifying command names containing)-29.94 E F1(/)2.5 E F2 29.94<8373>
-108 417.6 S(pecifying a \214le name containing a)-29.94 E F1(/)2.5 E F2
-(as an ar)2.5 E(gument to the)-.18 E F1(.)2.5 E F2(builtin command)5 E
-29.94<8353>108 434.4 S 1.564
+-4.197 E(lowed or not performed:)108 415.2 Q 29.94<8363>108 432 S
+(hanging dir)-29.94 E(ectories with)-.18 E F3(cd)2.5 E F1 29.94<8373>108
+448.8 S(etting or unsetting the values of)-29.94 E F3(SHELL)2.5 E F1(,)A
+F3 -.74(PA)2.5 G(TH)-.18 E F1(,)A F3(ENV)2.5 E F1 2.5(,o)C(r)-2.5 E F3
+(BASH_ENV)2.5 E F1 29.94<8373>108 465.6 S
+(pecifying command names containing)-29.94 E F3(/)2.5 E F1 29.94<8373>
+108 482.4 S(pecifying a \214le name containing a)-29.94 E F3(/)2.5 E F1
+(as an ar)2.5 E(gument to the)-.18 E F3(.)2.5 E F1(builtin command)5 E
+29.94<8353>108 499.2 S 1.564
 (pecifying a \214lename containing a slash as an ar)-29.94 F 1.565
-(gument to the)-.18 F F1<ad70>4.065 E F2 1.565(option to the)4.065 F F1
-(hash)4.065 E F2(builtin command)144 446.4 Q 29.94<8369>108 463.2 S
+(gument to the)-.18 F F3<ad70>4.065 E F1 1.565(option to the)4.065 F F3
+(hash)4.065 E F1(builtin command)144 511.2 Q 29.94<8369>108 528 S
 (mporting function de\214nitions fr)-29.94 E(om the shell envir)-.18 E
-(onment at startup)-.18 E 29.94<8370>108 480 S(arsing the value of)
--29.94 E F1(SHELLOPTS)2.5 E F2(fr)2.5 E(om the shell envir)-.18 E
-(onment at startup)-.18 E 29.94<8372>108 496.8 S(edir)-30.12 E
+(onment at startup)-.18 E 29.94<8370>108 544.8 S(arsing the value of)
+-29.94 E F3(SHELLOPTS)2.5 E F1(fr)2.5 E(om the shell envir)-.18 E
+(onment at startup)-.18 E 29.94<8372>108 561.6 S(edir)-30.12 E
 (ecting output using the >, >|, <>, >&, &>, and >> r)-.18 E(edir)-.18 E
-(ection operators)-.18 E 29.94<8375>108 513.6 S(sing the)-29.94 E F1
-(exec)2.5 E F2(builtin command to r)2.5 E
-(eplace the shell with another command)-.18 E 29.94<8361>108 530.4 S
-1.208(dding or deleting builtin commands with the)-29.94 F F1<ad66>3.708
-E F2(and)3.708 E F1<ad64>3.708 E F2 1.208(options to the)3.708 F F1
-(enable)3.707 E F2(builtin)3.707 E(command)144 542.4 Q 29.94<8355>108
-559.2 S(sing the)-29.94 E F1(enable)2.5 E F2
+(ection operators)-.18 E 29.94<8375>108 578.4 S(sing the)-29.94 E F3
+(exec)2.5 E F1(builtin command to r)2.5 E
+(eplace the shell with another command)-.18 E 29.94<8361>108 595.2 S
+1.208(dding or deleting builtin commands with the)-29.94 F F3<ad66>3.708
+E F1(and)3.708 E F3<ad64>3.708 E F1 1.208(options to the)3.708 F F3
+(enable)3.707 E F1(builtin)3.707 E(command)144 607.2 Q 29.94<8355>108
+624 S(sing the)-29.94 E F3(enable)2.5 E F1
 (builtin command to enable disabled shell builtins)2.5 E 29.94<8373>108
-576 S(pecifying the)-29.94 E F1<ad70>2.5 E F2(option to the)2.5 E F1
-(command)2.5 E F2(builtin command)2.5 E 29.94<8374>108 592.8 S
-(urning of)-29.94 E 2.5(fr)-.18 G(estricted mode with)-2.68 E F1(set +r)
-2.5 E F2(or)2.5 E F1(set +o restricted)2.5 E F2(.)A(These r)108 609.6 Q
+640.8 S(pecifying the)-29.94 E F3<ad70>2.5 E F1(option to the)2.5 E F3
+(command)2.5 E F1(builtin command)2.5 E 29.94<8374>108 657.6 S
+(urning of)-29.94 E 2.5(fr)-.18 G(estricted mode with)-2.68 E F3(set +r)
+2.5 E F1(or)2.5 E F3(set +o restricted)2.5 E F1(.)A(These r)108 674.4 Q
 (estrictions ar)-.18 E 2.5(ee)-.18 G(nfor)-2.5 E
 (ced after any startup \214les ar)-.18 E 2.5(er)-.18 G(ead.)-2.68 E
 1.694
 (When a command that is found to be a shell script is executed \(see)108
-626.4 R F4 1.694(COMMAND EXECUTION)4.194 F F2(above\),)108 638.4 Q F1
-(rbash)2.5 E F2(turns of)2.5 E 2.5(fa)-.18 G(ny r)-2.5 E
-(estrictions in the shell spawned to execute the script.)-.18 E F6
-(SEE ALSO)72 655.2 Q F3(Bash Refer)108 667.2 Q(ence Manual)-.18 E F2 2.5
-(,B)C(rian Fox and Chet Ramey)-2.5 E F3(The Gnu Readline Library)108
-679.2 Q F2 2.5(,B)C(rian Fox and Chet Ramey)-2.5 E F3
-(The Gnu History Library)108 691.2 Q F2 2.5(,B)C
-(rian Fox and Chet Ramey)-2.5 E F3(Portable Operating System Interface \
-\(POSIX\) Part 2: Shell and Utilities)108 703.2 Q F2 2.5(,I)C(EEE)-2.5 E
-F0(GNU Bash-3.0)72 768 Q(2004 June 26)147.345 E(62)197.335 E 0 Cg EP
+691.2 R F4 1.694(COMMAND EXECUTION)4.194 F F1(above\),)108 703.2 Q F3
+(rbash)2.5 E F1(turns of)2.5 E 2.5(fa)-.18 G(ny r)-2.5 E
+(estrictions in the shell spawned to execute the script.)-.18 E F0
+(GNU Bash-3.0)72 768 Q(2004 Sep 17)149.01 E(62)199 E 0 Cg EP
 %%Page: 63 63
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\))
--.35 E/F1 10/Palatino-Italic@0 SF(sh)108 84 Q/F2 10/Palatino-Roman@0 SF
-(\(1\),)A F1(ksh)2.5 E F2(\(1\),)A F1(csh)2.5 E F2(\(1\))A F1(emacs)108
-96 Q F2(\(1\),)A F1(vi)2.5 E F2(\(1\))A F1 -.18(re)108 108 S(adline).18
-E F2(\(3\))A/F3 10.95/Palatino-Bold@0 SF(FILES)72 124.8 Q F1(/bin/bash)
-109.666 136.8 Q F2(The)144 148.8 Q/F4 10/Palatino-Bold@0 SF(bash)2.5 E
-F2(executable)2.5 E F1(/etc/pr)109.666 160.8 Q(o\214le)-.18 E F2
+-.35 E/F1 10.95/Palatino-Bold@0 SF(SEE ALSO)72 84 Q/F2 10
+/Palatino-Italic@0 SF(Bash Refer)108 96 Q(ence Manual)-.18 E/F3 10
+/Palatino-Roman@0 SF 2.5(,B)C(rian Fox and Chet Ramey)-2.5 E F2
+(The Gnu Readline Library)108 108 Q F3 2.5(,B)C(rian Fox and Chet Ramey)
+-2.5 E F2(The Gnu History Library)108 120 Q F3 2.5(,B)C
+(rian Fox and Chet Ramey)-2.5 E F2(Portable Operating System Interface \
+\(POSIX\) Part 2: Shell and Utilities)108 132 Q F3 2.5(,I)C(EEE)-2.5 E
+F2(sh)108 144 Q F3(\(1\),)A F2(ksh)2.5 E F3(\(1\),)A F2(csh)2.5 E F3
+(\(1\))A F2(emacs)108 156 Q F3(\(1\),)A F2(vi)2.5 E F3(\(1\))A F2 -.18
+(re)108 168 S(adline).18 E F3(\(3\))A F1(FILES)72 184.8 Q F2(/bin/bash)
+109.666 196.8 Q F3(The)144 208.8 Q/F4 10/Palatino-Bold@0 SF(bash)2.5 E
+F3(executable)2.5 E F2(/etc/pr)109.666 220.8 Q(o\214le)-.18 E F3
 (The systemwide initialization \214le, executed for login shells)144
-172.8 Q F1(~/.bash_pr)109.666 184.8 Q(o\214le)-.18 E F2
-(The personal initialization \214le, executed for login shells)144 196.8
-Q F1(~/.bashr)109.666 208.8 Q(c)-.18 E F2(The individual per)144 220.8 Q
-(-interactive-shell startup \214le)-.18 E F1(~/.bash_logout)109.666
-232.8 Q F2(The individual login shell cleanup \214le, executed when a l\
-ogin shell exits)144 244.8 Q F1(~/.inputr)109.666 256.8 Q(c)-.18 E F2
-(Individual)144 268.8 Q F1 -.18(re)2.5 G(adline).18 E F2
-(initialization \214le)2.5 E F3(AUTHORS)72 285.6 Q F2(Brian Fox, Fr)108
-297.6 Q(ee Softwar)-.18 E 2.5(eF)-.18 G(oundation)-2.5 E(bfox@gnu.or)108
-309.6 Q(g)-.18 E(Chet Ramey)108 326.4 Q 2.5(,C)-1.11 G(ase W)-2.5 E
-(estern Reserve University)-.92 E(chet@po.CWRU.Edu)108 338.4 Q F3
-(BUG REPOR)72 355.2 Q(TS)-.602 E F2 .481(If you \214nd a bug in)108
-367.2 R F4(bash,)2.981 E F2 .481(you should r)2.981 F .481(eport it.)
+232.8 Q F2(~/.bash_pr)109.666 244.8 Q(o\214le)-.18 E F3
+(The personal initialization \214le, executed for login shells)144 256.8
+Q F2(~/.bashr)109.666 268.8 Q(c)-.18 E F3(The individual per)144 280.8 Q
+(-interactive-shell startup \214le)-.18 E F2(~/.bash_logout)109.666
+292.8 Q F3(The individual login shell cleanup \214le, executed when a l\
+ogin shell exits)144 304.8 Q F2(~/.inputr)109.666 316.8 Q(c)-.18 E F3
+(Individual)144 328.8 Q F2 -.18(re)2.5 G(adline).18 E F3
+(initialization \214le)2.5 E F1(AUTHORS)72 345.6 Q F3(Brian Fox, Fr)108
+357.6 Q(ee Softwar)-.18 E 2.5(eF)-.18 G(oundation)-2.5 E(bfox@gnu.or)108
+369.6 Q(g)-.18 E(Chet Ramey)108 386.4 Q 2.5(,C)-1.11 G(ase W)-2.5 E
+(estern Reserve University)-.92 E(chet@po.CWRU.Edu)108 398.4 Q F1
+(BUG REPOR)72 415.2 Q(TS)-.602 E F3 .481(If you \214nd a bug in)108
+427.2 R F4(bash,)2.981 E F3 .481(you should r)2.981 F .481(eport it.)
 -.18 F .481(But \214rst, you should make sur)5.481 F 2.981(et)-.18 G
 .481(hat it r)-2.981 F .481(eally is a)-.18 F .459
-(bug, and that it appears in the latest version of)108 379.2 R F4(bash)
-2.959 E F2 5.459(.T)C .459(he latest version is always available fr)
--5.459 F(om)-.18 E F1(ftp://ftp.gnu.or)108 391.2 Q(g/pub/bash/)-.18 E F2
+(bug, and that it appears in the latest version of)108 439.2 R F4(bash)
+2.959 E F3 5.459(.T)C .459(he latest version is always available fr)
+-5.459 F(om)-.18 E F2(ftp://ftp.gnu.or)108 451.2 Q(g/pub/bash/)-.18 E F3
 (.)A .558(Once you have determined that a bug actually exists, use the)
-108 408 R F1(bashbug)3.188 E F2 .558(command to submit a bug)3.538 F
--.18(re)108 420 S 3.161(port. If).18 F .662(you have a \214x, you ar)
+108 468 R F2(bashbug)3.188 E F3 .558(command to submit a bug)3.538 F
+-.18(re)108 480 S 3.161(port. If).18 F .662(you have a \214x, you ar)
 3.161 F 3.162(ee)-.18 G .662(ncouraged to mail that as well!)-3.162 F
-.662(Suggestions and `philosophi-)5.662 F 3.731(cal' bug r)108 432 R
-3.731(eports may be mailed to)-.18 F F1(bug-bash@gnu.or)6.231 E(g)-.18 E
-F2 3.73(or posted to the Usenet newsgr)6.231 F(oup)-.18 E F4
-(gnu.bash.bug)108 444 Q F2(.)A(ALL bug r)108 460.8 Q
-(eports should include:)-.18 E(The version number of)108 477.6 Q F4
-(bash)2.5 E F2(The har)108 489.6 Q(dwar)-.18 E 2.5(ea)-.18 G
-(nd operating system)-2.5 E(The compiler used to compile)108 501.6 Q 2.5
-(Ad)108 513.6 S(escription of the bug behaviour)-2.5 E 2.5(As)108 525.6
+.662(Suggestions and `philosophi-)5.662 F 3.731(cal' bug r)108 492 R
+3.731(eports may be mailed to)-.18 F F2(bug-bash@gnu.or)6.231 E(g)-.18 E
+F3 3.73(or posted to the Usenet newsgr)6.231 F(oup)-.18 E F4
+(gnu.bash.bug)108 504 Q F3(.)A(ALL bug r)108 520.8 Q
+(eports should include:)-.18 E(The version number of)108 537.6 Q F4
+(bash)2.5 E F3(The har)108 549.6 Q(dwar)-.18 E 2.5(ea)-.18 G
+(nd operating system)-2.5 E(The compiler used to compile)108 561.6 Q 2.5
+(Ad)108 573.6 S(escription of the bug behaviour)-2.5 E 2.5(As)108 585.6
 S(hort script or `r)-2.5 E(ecipe' which exer)-.18 E(cises the bug)-.18 E
-F1(bashbug)108.13 542.4 Q F2 1.316(inserts the \214rst thr)4.296 F 1.316
+F2(bashbug)108.13 602.4 Q F3 1.316(inserts the \214rst thr)4.296 F 1.316
 (ee items automatically into the template it pr)-.18 F 1.316
-(ovides for \214ling a bug)-.18 F -.18(re)108 554.4 S(port.).18 E 7.698
-(Comments and bug r)108 571.2 R 7.697
+(ovides for \214ling a bug)-.18 F -.18(re)108 614.4 S(port.).18 E 7.698
+(Comments and bug r)108 631.2 R 7.697
 (eports concerning this manual page should be dir)-.18 F 7.697(ected to)
--.18 F F1(chet@po.CWRU.Edu)108 583.2 Q F2(.).06 E F3(BUGS)72 600 Q F2
-(It's too big and too slow)108 612 Q(.)-.92 E(Ther)108 628.8 Q 2.832(ea)
+-.18 F F2(chet@po.CWRU.Edu)108 643.2 Q F3(.).06 E F1(BUGS)72 660 Q F3
+(It's too big and too slow)108 672 Q(.)-.92 E(Ther)108 688.8 Q 2.832(ea)
 -.18 G .692 -.18(re s)-2.832 H .332(ome subtle dif).18 F(fer)-.18 E .332
-(ences between)-.18 F F4(bash)2.832 E F2 .332
-(and traditional versions of)2.832 F F4(sh)2.832 E F2 2.832(,m)C .333
-(ostly because of)-2.832 F(the)108 640.8 Q/F5 9/Palatino-Bold@0 SF
-(POSIX)2.5 E F2(speci\214cation.)2.25 E(Aliases ar)108 657.6 Q 2.5(ec)
--.18 G(onfusing in some uses.)-2.5 E
-(Shell builtin commands and functions ar)108 674.4 Q 2.5(en)-.18 G
-(ot stoppable/r)-2.5 E(estartable.)-.18 E .463
-(Compound commands and command sequences of the form `a ; b ; c' ar)108
-691.2 R 2.962(en)-.18 G .462(ot handled gracefully)-2.962 F 1.256
-(when pr)108 703.2 R 1.257(ocess suspension is attempted.)-.18 F 1.257
-(When a pr)6.257 F 1.257(ocess is stopped, the shell immediately exe-)
--.18 F .374(cutes the next command in the sequence.)108 715.2 R .373
-(It suf)5.373 F .373(\214ces to place the sequence of commands between)
--.18 F(par)108 727.2 Q(entheses to for)-.18 E
-(ce it into a subshell, which may be stopped as a unit.)-.18 E F0
-(GNU Bash-3.0)72 768 Q(2004 June 26)147.345 E(63)197.335 E 0 Cg EP
+(ences between)-.18 F F4(bash)2.832 E F3 .332
+(and traditional versions of)2.832 F F4(sh)2.832 E F3 2.832(,m)C .333
+(ostly because of)-2.832 F(the)108 700.8 Q/F5 9/Palatino-Bold@0 SF
+(POSIX)2.5 E F3(speci\214cation.)2.25 E(Aliases ar)108 717.6 Q 2.5(ec)
+-.18 G(onfusing in some uses.)-2.5 E F0(GNU Bash-3.0)72 768 Q
+(2004 Sep 17)149.01 E(63)199 E 0 Cg EP
 %%Page: 64 64
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 389.54(SH\(1\) B).35 F(ASH\(1\))
--.35 E/F1 10/Palatino-Roman@0 SF .95(Commands inside of)108 84 R/F2 10
-/Palatino-Bold@0 SF($\()3.451 E F1(...)A F2(\))A F1 .951
-(command substitution ar)3.451 F 3.451(en)-.18 G .951
-(ot parsed until substitution is attempted.)-3.451 F 2.132
-(This will delay err)108 96 R 2.132(or r)-.18 F 2.131
+-.35 E/F1 10/Palatino-Roman@0 SF
+(Shell builtin commands and functions ar)108 84 Q 2.5(en)-.18 G
+(ot stoppable/r)-2.5 E(estartable.)-.18 E .463
+(Compound commands and command sequences of the form `a ; b ; c' ar)108
+100.8 R 2.962(en)-.18 G .462(ot handled gracefully)-2.962 F 1.256
+(when pr)108 112.8 R 1.257(ocess suspension is attempted.)-.18 F 1.257
+(When a pr)6.257 F 1.257(ocess is stopped, the shell immediately exe-)
+-.18 F .374(cutes the next command in the sequence.)108 124.8 R .373
+(It suf)5.373 F .373(\214ces to place the sequence of commands between)
+-.18 F(par)108 136.8 Q(entheses to for)-.18 E
+(ce it into a subshell, which may be stopped as a unit.)-.18 E .95
+(Commands inside of)108 153.6 R/F2 10/Palatino-Bold@0 SF($\()3.451 E F1
+(...)A F2(\))A F1 .951(command substitution ar)3.451 F 3.451(en)-.18 G
+.951(ot parsed until substitution is attempted.)-3.451 F 2.132
+(This will delay err)108 165.6 R 2.132(or r)-.18 F 2.131
 (eporting until some time after the command is enter)-.18 F 4.631
-(ed. For)-.18 F(example,)4.631 E .43(unmatched par)108 108 R .431
+(ed. For)-.18 F(example,)4.631 E .43(unmatched par)108 177.6 R .431
 (entheses, even inside shell comments, will r)-.18 F .431(esult in err)
--.18 F .431(or messages while the con-)-.18 F(str)108 120 Q
+-.18 F .431(or messages while the con-)-.18 F(str)108 189.6 Q
 (uct is being r)-.08 E(ead.)-.18 E
-(Array variables may not \(yet\) be exported.)108 136.8 Q F0
-(GNU Bash-3.0)72 768 Q(2004 June 26)147.345 E(64)197.335 E 0 Cg EP
+(Array variables may not \(yet\) be exported.)108 206.4 Q F0
+(GNU Bash-3.0)72 768 Q(2004 Sep 17)149.01 E(64)199 E 0 Cg EP
 %%Trailer
 end
 %%EOF
index d0c144214c148299f2b1eec065e44385e3901cdd..ad8bb4c490ce87a21d030bf60d9ddc949b61b1f1 100644 (file)
Binary files a/doc/bashref.dvi and b/doc/bashref.dvi differ
index ae5e6f4f1eb0abae866ae5880636479068ed857b..4a6e76933de95b794dd7fcc7029d9c331bb22e5d 100644 (file)
@@ -1,6 +1,6 @@
 <HTML>
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<!-- Created on August, 30  2004 by texi2html 1.64 -->
+<!-- Created on September, 21  2004 by texi2html 1.64 -->
 <!-- 
 Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
             Karl Berry  <karl@freefriends.org>
@@ -33,10 +33,10 @@ Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
 <H1>Bash Reference Manual</H1></P><P>
 
 This text is a brief description of the features that are present in
-the Bash shell (version 3.0, 27 August 2004)..
+the Bash shell (version 3.0, 17 September 2004)..
 </P><P>
 
-This is Edition 3.0, last updated 27 August 2004,
+This is Edition 3.0, last updated 17 September 2004,
 of <CITE>The GNU Bash Reference Manual</CITE>,
 for <CODE>Bash</CODE>, Version 3.0.
 </P><P>
@@ -5655,8 +5655,8 @@ The command argument to the <SAMP>`-c'</SAMP> invocation option.
 An array variable whose members are the line numbers in source files
 corresponding to each member of <VAR>FUNCNAME</VAR>.
 <CODE>${BASH_LINENO[$i]}</CODE> is the line number in the source file where
-<CODE>${FUNCNAME[$i + 1]}</CODE> was called.
-The corresponding source file name is <CODE>${BASH_SOURCE[$i + 1]}</CODE>.
+<CODE>${FUNCNAME[$i]}</CODE> was called.
+The corresponding source file name is <CODE>${BASH_SOURCE[$i]}</CODE>.
 Use <CODE>LINENO</CODE> to obtain the current line number.
 <P>
 
@@ -10744,6 +10744,14 @@ shell functions specified with <SAMP>`-F'</SAMP>.
 <DT><CODE>nospace</CODE>
 <DD>Tell Readline not to append a space (the default) to words completed at
 the end of the line.
+<P>
+
+<DT><CODE>plusdirs</CODE>
+<DD>After any matches defined by the compspec are generated, 
+directory name completion is attempted and any
+matches are added to the results of the other actions.
+<P>
+
 </DL>
 <P>
 
@@ -15051,7 +15059,7 @@ to permit their use in free software.
 <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD>
 </TR></TABLE>
 <H1>About this document</H1>
-This document was generated by <I>Chet Ramey</I> on <I>August, 30  2004</I>
+This document was generated by <I>Chet Ramey</I> on <I>September, 21  2004</I>
 using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
 "><I>texi2html</I></A>
 <P></P>  
@@ -15213,7 +15221,7 @@ the following structure:
 <BR>  
 <FONT SIZE="-1">
 This document was generated
-by <I>Chet Ramey</I> on <I>August, 30  2004</I>
+by <I>Chet Ramey</I> on <I>September, 21  2004</I>
 using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
 "><I>texi2html</I></A>
 
index 2d05923fdd1472526a7d2c3d32a954e01324aa34..e8e13898366a8cfa9dcb5196833d5d795e34842f 100644 (file)
@@ -1,11 +1,11 @@
 This is bashref.info, produced by makeinfo version 4.7 from
-/Users/chet/src/bash/src/doc/bashref.texi.
+/usr/homes/chet/src/bash/src/doc/bashref.texi.
 
    This text is a brief description of the features that are present in
-the Bash shell (version 3.0, 27 August 2004).
+the Bash shell (version 3.0, 17 September 2004).
 
-   This is Edition 3.0, last updated 27 August 2004, of `The GNU Bash
-Reference Manual', for `Bash', Version 3.0.
+   This is Edition 3.0, last updated 17 September 2004, of `The GNU
+Bash Reference Manual', for `Bash', Version 3.0.
 
    Copyright (C) 1988-2004 Free Software Foundation, Inc.
 
@@ -37,10 +37,10 @@ Bash Features
 *************
 
 This text is a brief description of the features that are present in
-the Bash shell (version 3.0, 27 August 2004)..
+the Bash shell (version 3.0, 17 September 2004)..
 
-   This is Edition 3.0, last updated 27 August 2004, of `The GNU Bash
-Reference Manual', for `Bash', Version 3.0.
+   This is Edition 3.0, last updated 17 September 2004, of `The GNU
+Bash Reference Manual', for `Bash', Version 3.0.
 
    Bash contains features that appear in other popular shells, and some
 features that only appear in Bash.  Some of the shells that Bash has
@@ -3721,9 +3721,9 @@ Variables::).
      An array variable whose members are the line numbers in source
      files corresponding to each member of FUNCNAME.
      `${BASH_LINENO[$i]}' is the line number in the source file where
-     `${FUNCNAME[$i + 1]}' was called.  The corresponding source file
-     name is `${BASH_SOURCE[$i + 1]}'.  Use `LINENO' to obtain the
-     current line number.
+     `${FUNCNAME[$i]}' was called.  The corresponding source file name
+     is `${BASH_SOURCE[$i]}'.  Use `LINENO' to obtain the current line
+     number.
 
 `BASH_REMATCH'
      An array variable whose members are assigned by the `=~' binary
@@ -7086,6 +7086,12 @@ completion facilities.
                Tell Readline not to append a space (the default) to
                words completed at the end of the line.
 
+         `plusdirs'
+               After any matches defined by the compspec are generated,
+               directory name completion is attempted and any matches
+               are added to the results of the other actions.
+
+
     `-A ACTION'
           The ACTION may be one of the following to generate a list of
           possible completions:
@@ -9326,7 +9332,7 @@ Concept Index
 * history list:                          Bash History Facilities.
                                                               (line   6)
 * History, how to use:                   Programmable Completion Builtins.
-                                                              (line 203)
+                                                              (line 209)
 * identifier:                            Definitions.         (line  49)
 * initialization file, readline:         Readline Init File.  (line   6)
 * installation:                          Basic Installation.  (line   6)
@@ -9403,129 +9409,129 @@ Concept Index
 
 \1f
 Tag Table:
-Node: Top\7f1353
-Node: Introduction\7f3493
-Node: What is Bash?\7f3722
-Node: What is a shell?\7f4815
-Node: Definitions\7f7356
-Node: Basic Shell Features\7f10097
-Node: Shell Syntax\7f11316
-Node: Shell Operation\7f12348
-Node: Quoting\7f13642
-Node: Escape Character\7f14916
-Node: Single Quotes\7f15401
-Node: Double Quotes\7f15749
-Node: ANSI-C Quoting\7f16775
-Node: Locale Translation\7f17731
-Node: Comments\7f18627
-Node: Shell Commands\7f19241
-Node: Simple Commands\7f20007
-Node: Pipelines\7f20638
-Node: Lists\7f22513
-Node: Compound Commands\7f24144
-Node: Looping Constructs\7f24928
-Node: Conditional Constructs\7f27375
-Node: Command Grouping\7f34442
-Node: Shell Functions\7f35891
-Node: Shell Parameters\7f40159
-Node: Positional Parameters\7f41740
-Node: Special Parameters\7f42640
-Node: Shell Expansions\7f45565
-Node: Brace Expansion\7f47490
-Node: Tilde Expansion\7f49815
-Node: Shell Parameter Expansion\7f52156
-Node: Command Substitution\7f59419
-Node: Arithmetic Expansion\7f60752
-Node: Process Substitution\7f61602
-Node: Word Splitting\7f62652
-Node: Filename Expansion\7f64113
-Node: Pattern Matching\7f66249
-Node: Quote Removal\7f69582
-Node: Redirections\7f69877
-Node: Executing Commands\7f77456
-Node: Simple Command Expansion\7f78131
-Node: Command Search and Execution\7f80061
-Node: Command Execution Environment\7f82067
-Node: Environment\7f84838
-Node: Exit Status\7f86498
-Node: Signals\7f87702
-Node: Shell Scripts\7f89666
-Node: Shell Builtin Commands\7f92184
-Node: Bourne Shell Builtins\7f93763
-Node: Bash Builtins\7f110716
-Node: The Set Builtin\7f138843
-Node: Special Builtins\7f147066
-Node: Shell Variables\7f148043
-Node: Bourne Shell Variables\7f148483
-Node: Bash Variables\7f150464
-Node: Bash Features\7f170179
-Node: Invoking Bash\7f171062
-Node: Bash Startup Files\7f176881
-Node: Interactive Shells\7f181739
-Node: What is an Interactive Shell?\7f182149
-Node: Is this Shell Interactive?\7f182799
-Node: Interactive Shell Behavior\7f183614
-Node: Bash Conditional Expressions\7f186890
-Node: Shell Arithmetic\7f190469
-Node: Aliases\7f193214
-Node: Arrays\7f195782
-Node: The Directory Stack\7f199049
-Node: Directory Stack Builtins\7f199763
-Node: Printing a Prompt\7f202654
-Node: The Restricted Shell\7f205368
-Node: Bash POSIX Mode\7f207200
-Node: Job Control\7f214533
-Node: Job Control Basics\7f215000
-Node: Job Control Builtins\7f219290
-Node: Job Control Variables\7f223633
-Node: Command Line Editing\7f224791
-Node: Introduction and Notation\7f225790
-Node: Readline Interaction\7f227412
-Node: Readline Bare Essentials\7f228603
-Node: Readline Movement Commands\7f230392
-Node: Readline Killing Commands\7f231357
-Node: Readline Arguments\7f233277
-Node: Searching\7f234321
-Node: Readline Init File\7f236507
-Node: Readline Init File Syntax\7f237566
-Node: Conditional Init Constructs\7f249219
-Node: Sample Init File\7f251752
-Node: Bindable Readline Commands\7f254869
-Node: Commands For Moving\7f256076
-Node: Commands For History\7f256937
-Node: Commands For Text\7f259838
-Node: Commands For Killing\7f262511
-Node: Numeric Arguments\7f264653
-Node: Commands For Completion\7f265792
-Node: Keyboard Macros\7f269385
-Node: Miscellaneous Commands\7f269956
-Node: Readline vi Mode\7f275267
-Node: Programmable Completion\7f276181
-Node: Programmable Completion Builtins\7f281993
-Node: Using History Interactively\7f289363
-Node: Bash History Facilities\7f290043
-Node: Bash History Builtins\7f292738
-Node: History Interaction\7f296595
-Node: Event Designators\7f299151
-Node: Word Designators\7f300166
-Node: Modifiers\7f301805
-Node: Installing Bash\7f303211
-Node: Basic Installation\7f304348
-Node: Compilers and Options\7f307040
-Node: Compiling For Multiple Architectures\7f307781
-Node: Installation Names\7f309445
-Node: Specifying the System Type\7f310263
-Node: Sharing Defaults\7f310979
-Node: Operation Controls\7f311652
-Node: Optional Features\7f312610
-Node: Reporting Bugs\7f320889
-Node: Major Differences From The Bourne Shell\7f322083
-Node: Copying This Manual\7f337855
-Node: GNU Free Documentation License\7f338131
-Node: Builtin Index\7f360537
-Node: Reserved Word Index\7f367086
-Node: Variable Index\7f369522
-Node: Function Index\7f380241
-Node: Concept Index\7f386961
+Node: Top\7f1363
+Node: Introduction\7f3509
+Node: What is Bash?\7f3738
+Node: What is a shell?\7f4831
+Node: Definitions\7f7372
+Node: Basic Shell Features\7f10113
+Node: Shell Syntax\7f11332
+Node: Shell Operation\7f12364
+Node: Quoting\7f13658
+Node: Escape Character\7f14932
+Node: Single Quotes\7f15417
+Node: Double Quotes\7f15765
+Node: ANSI-C Quoting\7f16791
+Node: Locale Translation\7f17747
+Node: Comments\7f18643
+Node: Shell Commands\7f19257
+Node: Simple Commands\7f20023
+Node: Pipelines\7f20654
+Node: Lists\7f22529
+Node: Compound Commands\7f24160
+Node: Looping Constructs\7f24944
+Node: Conditional Constructs\7f27391
+Node: Command Grouping\7f34458
+Node: Shell Functions\7f35907
+Node: Shell Parameters\7f40175
+Node: Positional Parameters\7f41756
+Node: Special Parameters\7f42656
+Node: Shell Expansions\7f45581
+Node: Brace Expansion\7f47506
+Node: Tilde Expansion\7f49831
+Node: Shell Parameter Expansion\7f52172
+Node: Command Substitution\7f59435
+Node: Arithmetic Expansion\7f60768
+Node: Process Substitution\7f61618
+Node: Word Splitting\7f62668
+Node: Filename Expansion\7f64129
+Node: Pattern Matching\7f66265
+Node: Quote Removal\7f69598
+Node: Redirections\7f69893
+Node: Executing Commands\7f77472
+Node: Simple Command Expansion\7f78147
+Node: Command Search and Execution\7f80077
+Node: Command Execution Environment\7f82083
+Node: Environment\7f84854
+Node: Exit Status\7f86514
+Node: Signals\7f87718
+Node: Shell Scripts\7f89682
+Node: Shell Builtin Commands\7f92200
+Node: Bourne Shell Builtins\7f93779
+Node: Bash Builtins\7f110732
+Node: The Set Builtin\7f138859
+Node: Special Builtins\7f147082
+Node: Shell Variables\7f148059
+Node: Bourne Shell Variables\7f148499
+Node: Bash Variables\7f150480
+Node: Bash Features\7f170187
+Node: Invoking Bash\7f171070
+Node: Bash Startup Files\7f176889
+Node: Interactive Shells\7f181747
+Node: What is an Interactive Shell?\7f182157
+Node: Is this Shell Interactive?\7f182807
+Node: Interactive Shell Behavior\7f183622
+Node: Bash Conditional Expressions\7f186898
+Node: Shell Arithmetic\7f190477
+Node: Aliases\7f193222
+Node: Arrays\7f195790
+Node: The Directory Stack\7f199057
+Node: Directory Stack Builtins\7f199771
+Node: Printing a Prompt\7f202662
+Node: The Restricted Shell\7f205376
+Node: Bash POSIX Mode\7f207208
+Node: Job Control\7f214541
+Node: Job Control Basics\7f215008
+Node: Job Control Builtins\7f219298
+Node: Job Control Variables\7f223641
+Node: Command Line Editing\7f224799
+Node: Introduction and Notation\7f225798
+Node: Readline Interaction\7f227420
+Node: Readline Bare Essentials\7f228611
+Node: Readline Movement Commands\7f230400
+Node: Readline Killing Commands\7f231365
+Node: Readline Arguments\7f233285
+Node: Searching\7f234329
+Node: Readline Init File\7f236515
+Node: Readline Init File Syntax\7f237574
+Node: Conditional Init Constructs\7f249227
+Node: Sample Init File\7f251760
+Node: Bindable Readline Commands\7f254877
+Node: Commands For Moving\7f256084
+Node: Commands For History\7f256945
+Node: Commands For Text\7f259846
+Node: Commands For Killing\7f262519
+Node: Numeric Arguments\7f264661
+Node: Commands For Completion\7f265800
+Node: Keyboard Macros\7f269393
+Node: Miscellaneous Commands\7f269964
+Node: Readline vi Mode\7f275275
+Node: Programmable Completion\7f276189
+Node: Programmable Completion Builtins\7f282001
+Node: Using History Interactively\7f289597
+Node: Bash History Facilities\7f290277
+Node: Bash History Builtins\7f292972
+Node: History Interaction\7f296829
+Node: Event Designators\7f299385
+Node: Word Designators\7f300400
+Node: Modifiers\7f302039
+Node: Installing Bash\7f303445
+Node: Basic Installation\7f304582
+Node: Compilers and Options\7f307274
+Node: Compiling For Multiple Architectures\7f308015
+Node: Installation Names\7f309679
+Node: Specifying the System Type\7f310497
+Node: Sharing Defaults\7f311213
+Node: Operation Controls\7f311886
+Node: Optional Features\7f312844
+Node: Reporting Bugs\7f321123
+Node: Major Differences From The Bourne Shell\7f322317
+Node: Copying This Manual\7f338089
+Node: GNU Free Documentation License\7f338365
+Node: Builtin Index\7f360771
+Node: Reserved Word Index\7f367320
+Node: Variable Index\7f369756
+Node: Function Index\7f380475
+Node: Concept Index\7f387195
 \1f
 End Tag Table
index c61595e4bc71a11dc65a493819c0271f84bc81da..00afc5e60f0de5235390d4f576b803d29069ed87 100644 (file)
@@ -1,6 +1,6 @@
-This is TeX, Version 3.14159 (Web2C 7.4.5) (format=tex 2003.12.31)  30 AUG 2004 08:27
-**/Users/chet/src/bash/src/doc/bashref.texi
-(/Users/chet/src/bash/src/doc/bashref.texi (./texinfo.tex
+This is TeX, Version 3.14159 (Web2C 7.4.5) (format=tex 2003.12.31)  21 SEP 2004 11:57
+**/usr/homes/chet/src/bash/src/doc/bashref.texi
+(/usr/homes/chet/src/bash/src/doc/bashref.texi (./texinfo.tex
 Loading texinfo [version 2003-02-03.16]: Basics,
 \bindingoffset=\dimen16
 \normaloffset=\dimen17
@@ -266,8 +266,8 @@ the file
 
 [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78]
 Chapter 7 [79] [80] [81] [82] [83]
-(/Users/chet/src/bash/src/lib/readline/doc/rluser.texi Chapter 8 [84] [85]
-[86] [87] [88] [89]
+(/usr/homes/chet/src/bash/src/lib/readline/doc/rluser.texi Chapter 8 [84]
+[85] [86] [87] [88] [89]
 Underfull \hbox (badness 5231) in paragraph at lines 488--504
  @texttt emacs-meta[]@textrm , @texttt emacs-ctlx[]@textrm , @texttt vi[]@textr
 m , @texttt vi-move[]@textrm , @texttt vi-command[]@textrm , and
@@ -307,7 +307,7 @@ tttsl ac-tion@texttt ] [-G @textttsl glob-
 .etc.
 
 [107] [108]
-Underfull \hbox (badness 2753) in paragraph at lines 1742--1745
+Underfull \hbox (badness 2753) in paragraph at lines 1748--1751
  @texttt hostname[]@textrm Hostnames, as taken from the file spec-i-fied by
 
 @hbox(7.60416+2.12917)x433.62, glue set 3.02202
@@ -318,7 +318,7 @@ Underfull \hbox (badness 2753) in paragraph at lines 1742--1745
 .@texttt o
 .etc.
 
-[109]) (/Users/chet/src/bash/src/lib/readline/doc/hsuser.texi Chapter 9
+[109]) (/usr/homes/chet/src/bash/src/lib/readline/doc/hsuser.texi Chapter 9
 [110] [111] [112] [113] [114]) Chapter 10 [115] [116] [117] [118] [119]
 Underfull \hbox (badness 2772) in paragraph at lines 6642--6646
  []@textrm Enable sup-port for large files (@texttt http://www.sas.com/standard
@@ -358,11 +358,11 @@ Overfull \vbox (42.26959pt too high) has occurred while \output is active
 (Concept Index) [148] (./bashref.cps [149]) [150] ) 
 Here is how much of TeX's memory you used:
  1726 strings out of 98002
- 23501 string characters out of 1221986
- 52369 words of memory out of 1000001
+ 23533 string characters out of 1221986
+ 52375 words of memory out of 1000001
  2577 multiletter control sequences out of 10000+50000
  31953 words of font info for 111 fonts, out of 500000 for 1000
  19 hyphenation exceptions out of 1000
- 15i,8n,11p,269b,465s stack positions out of 1500i,500n,5000p,200000b,5000s
+ 15i,8n,11p,273b,465s stack positions out of 1500i,500n,5000p,200000b,5000s
 
-Output written on bashref.dvi (156 pages, 581772 bytes).
+Output written on bashref.dvi (156 pages, 582000 bytes).
index fa142c3c8f4271629656cc3c3aacf4fd7c78461d..3ae8a7e757c0a0a41c42d9b35bfc68b2a0a60800 100644 (file)
@@ -10,7 +10,7 @@
 %DVIPSWebPage: (www.radicaleye.com)
 %DVIPSCommandLine: dvips -D 600 -t letter -o bashref.ps bashref.dvi
 %DVIPSParameters: dpi=600, compressed
-%DVIPSSource:  TeX output 2004.08.30:0827
+%DVIPSSource:  TeX output 2004.09.21:1157
 %%BeginProcSet: texc.pro
 %!
 /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
@@ -4226,29 +4226,29 @@ letter
 TeXDict begin 1 0 bop 150 1318 a Fu(Bash)64 b(Reference)j(Man)-5
 b(ual)p 150 1385 3600 34 v 2361 1481 a Ft(Reference)31
 b(Do)s(cumen)m(tation)i(for)d(Bash)2428 1589 y(Edition)h(3.0,)g(for)f
-Fs(Bash)g Ft(V)-8 b(ersion)31 b(3.0.)3252 1697 y(August)f(2004)150
-4935 y Fr(Chet)45 b(Ramey)-11 b(,)46 b(Case)g(W)-11 b(estern)46
-b(Reserv)l(e)g(Univ)l(ersit)l(y)150 5068 y(Brian)f(F)-11
-b(o)l(x,)45 b(F)-11 b(ree)45 b(Soft)l(w)l(are)h(F)-11
+Fs(Bash)g Ft(V)-8 b(ersion)31 b(3.0.)3118 1697 y(Septem)m(b)s(er)f
+(2004)150 4935 y Fr(Chet)45 b(Ramey)-11 b(,)46 b(Case)g(W)-11
+b(estern)46 b(Reserv)l(e)g(Univ)l(ersit)l(y)150 5068
+y(Brian)f(F)-11 b(o)l(x,)45 b(F)-11 b(ree)45 b(Soft)l(w)l(are)h(F)-11
 b(oundation)p 150 5141 3600 17 v eop end
 %%Page: 2 2
 TeXDict begin 2 1 bop 150 2889 a Ft(This)35 b(text)h(is)g(a)g(brief)f
 (description)h(of)f(the)h(features)g(that)g(are)g(presen)m(t)g(in)f
-(the)h(Bash)f(shell)h(\(v)m(ersion)150 2999 y(3.0,)c(27)f(August)f
-(2004\).)150 3133 y(This)e(is)g(Edition)h(3.0,)h(last)f(up)s(dated)e
-(27)i(August)f(2004,)j(of)e Fq(The)f(GNU)h(Bash)f(Reference)h(Man)m
-(ual)p Ft(,)h(for)150 3243 y Fs(Bash)p Ft(,)f(V)-8 b(ersion)31
-b(3.0.)150 3377 y(Cop)m(yrigh)m(t)602 3374 y(c)577 3377
-y Fp(\015)f Ft(1988-2004)k(F)-8 b(ree)32 b(Soft)m(w)m(are)f(F)-8
-b(oundation,)32 b(Inc.)150 3512 y(P)m(ermission)g(is)h(gran)m(ted)g(to)
-f(mak)m(e)i(and)d(distribute)h(v)m(erbatim)h(copies)g(of)f(this)g(man)m
-(ual)h(pro)m(vided)f(the)150 3621 y(cop)m(yrigh)m(t)g(notice)f(and)f
-(this)g(p)s(ermission)g(notice)h(are)g(preserv)m(ed)f(on)h(all)g
-(copies.)390 3756 y(P)m(ermission)k(is)h(gran)m(ted)f(to)h(cop)m(y)-8
-b(,)38 b(distribute)d(and/or)g(mo)s(dify)f(this)h(do)s(cumen)m(t)g
-(under)390 3866 y(the)j(terms)g(of)g(the)g(GNU)h(F)-8
-b(ree)39 b(Do)s(cumen)m(tation)h(License,)g(V)-8 b(ersion)39
-b(1.1)g(or)f(an)m(y)g(later)390 3975 y(v)m(ersion)28
+(the)h(Bash)f(shell)h(\(v)m(ersion)150 2999 y(3.0,)c(17)f(Septem)m(b)s
+(er)f(2004\).)150 3133 y(This)e(is)h(Edition)f(3.0,)j(last)e(up)s
+(dated)f(17)h(Septem)m(b)s(er)f(2004,)j(of)e Fq(The)f(GNU)i(Bash)e
+(Reference)i(Man)m(ual)p Ft(,)150 3243 y(for)g Fs(Bash)p
+Ft(,)g(V)-8 b(ersion)31 b(3.0.)150 3377 y(Cop)m(yrigh)m(t)602
+3374 y(c)577 3377 y Fp(\015)f Ft(1988-2004)k(F)-8 b(ree)32
+b(Soft)m(w)m(are)f(F)-8 b(oundation,)32 b(Inc.)150 3512
+y(P)m(ermission)g(is)h(gran)m(ted)g(to)f(mak)m(e)i(and)d(distribute)h
+(v)m(erbatim)h(copies)g(of)f(this)g(man)m(ual)h(pro)m(vided)f(the)150
+3621 y(cop)m(yrigh)m(t)g(notice)f(and)f(this)g(p)s(ermission)g(notice)h
+(are)g(preserv)m(ed)f(on)h(all)g(copies.)390 3756 y(P)m(ermission)k(is)
+h(gran)m(ted)f(to)h(cop)m(y)-8 b(,)38 b(distribute)d(and/or)g(mo)s
+(dify)f(this)h(do)s(cumen)m(t)g(under)390 3866 y(the)j(terms)g(of)g
+(the)g(GNU)h(F)-8 b(ree)39 b(Do)s(cumen)m(tation)h(License,)g(V)-8
+b(ersion)39 b(1.1)g(or)f(an)m(y)g(later)390 3975 y(v)m(ersion)28
 b(published)d(b)m(y)j(the)f(F)-8 b(ree)29 b(Soft)m(w)m(are)f(F)-8
 b(oundation;)30 b(with)d(no)g(In)m(v)-5 b(arian)m(t)28
 b(Sections,)390 4085 y(with)i(the)h(F)-8 b(ron)m(t-Co)m(v)m(er)33
@@ -8498,16 +8498,16 @@ b(ariable)39 b(whose)g(mem)m(b)s(ers)e(are)i(the)g(line)g(n)m(um)m(b)s
 (ers)e(in)h(source)h(\014les)f(corre-)630 3014 y(sp)s(onding)h(to)i
 (eac)m(h)g(mem)m(b)s(er)e(of)i Fq(FUNCNAME)p Ft(.)g Fs
 (${BASH_LINENO[$i]})35 b Ft(is)40 b(the)h(line)630 3124
-y(n)m(um)m(b)s(er)34 b(in)g(the)h(source)g(\014le)g(where)f
-Fs(${FUNCNAME[$i)27 b(+)j(1]})k Ft(w)m(as)h(called.)56
-b(The)34 b(corre-)630 3233 y(sp)s(onding)e(source)i(\014le)g(name)g(is)
-g Fs(${BASH_SOURCE[$i)26 b(+)k(1]})p Ft(.)50 b(Use)35
-b Fs(LINENO)d Ft(to)i(obtain)630 3343 y(the)d(curren)m(t)f(line)g(n)m
-(um)m(b)s(er.)150 3513 y Fs(BASH_REMATCH)630 3623 y Ft(An)43
-b(arra)m(y)i(v)-5 b(ariable)44 b(whose)g(mem)m(b)s(ers)f(are)h
-(assigned)g(b)m(y)f(the)h(`)p Fs(=~)p Ft(')g(binary)f(op)s(erator)630
-3733 y(to)37 b(the)f Fs([[)g Ft(conditional)i(command)e(\(see)h
-(Section)g(3.2.4.2)i([Conditional)e(Constructs],)630
+y(n)m(um)m(b)s(er)26 b(in)i(the)g(source)f(\014le)h(where)f
+Fs(${FUNCNAME[$i]})d Ft(w)m(as)k(called.)41 b(The)27
+b(corresp)s(ond-)630 3233 y(ing)f(source)h(\014le)f(name)g(is)h
+Fs(${BASH_SOURCE[$i]})p Ft(.)34 b(Use)27 b Fs(LINENO)d
+Ft(to)j(obtain)g(the)f(curren)m(t)630 3343 y(line)31
+b(n)m(um)m(b)s(er.)150 3513 y Fs(BASH_REMATCH)630 3623
+y Ft(An)43 b(arra)m(y)i(v)-5 b(ariable)44 b(whose)g(mem)m(b)s(ers)f
+(are)h(assigned)g(b)m(y)f(the)h(`)p Fs(=~)p Ft(')g(binary)f(op)s
+(erator)630 3733 y(to)37 b(the)f Fs([[)g Ft(conditional)i(command)e
+(\(see)h(Section)g(3.2.4.2)i([Conditional)e(Constructs],)630
 3842 y(page)e(10\).)52 b(The)33 b(elemen)m(t)j(with)d(index)g(0)i(is)f
 (the)g(p)s(ortion)f(of)h(the)g(string)g(matc)m(hing)h(the)630
 3952 y(en)m(tire)29 b(regular)f(expression.)40 b(The)27
@@ -11951,144 +11951,147 @@ b(Reference)g(Man)m(ual)630 299 y(The)e(pro)s(cess)g(of)h(applying)g
 (these)g(completion)g(sp)s(eci\014cations)h(when)d(w)m(ord)i
 (completion)630 408 y(is)35 b(attempted)h(is)f(describ)s(ed)f(ab)s(o)m
 (v)m(e)j(\(see)f(Section)g(8.6)g([Programmable)g(Completion],)630
-518 y(page)31 b(105\).)630 652 y(Other)41 b(options,)46
+518 y(page)31 b(105\).)630 650 y(Other)41 b(options,)46
 b(if)41 b(sp)s(eci\014ed,)j(ha)m(v)m(e)f(the)f(follo)m(wing)i
-(meanings.)75 b(The)41 b(argumen)m(ts)h(to)630 762 y(the)e(`)p
+(meanings.)75 b(The)41 b(argumen)m(ts)h(to)630 760 y(the)e(`)p
 Fs(-G)p Ft(',)j(`)p Fs(-W)p Ft(',)g(and)d(`)p Fs(-X)p
 Ft(')g(options)g(\(and,)j(if)d(necessary)-8 b(,)44 b(the)c(`)p
 Fs(-P)p Ft(')h(and)e(`)p Fs(-S)p Ft(')h(options\))630
-872 y(should)30 b(b)s(e)h(quoted)g(to)h(protect)g(them)f(from)g
+869 y(should)30 b(b)s(e)h(quoted)g(to)h(protect)g(them)f(from)g
 (expansion)g(b)s(efore)g(the)g Fs(complete)e Ft(builtin)630
-981 y(is)h(in)m(v)m(ok)m(ed.)630 1140 y Fs(-o)g Fj(comp-option)1110
-1250 y Ft(The)c Fq(comp-option)i Ft(con)m(trols)g(sev)m(eral)h(asp)s
+979 y(is)h(in)m(v)m(ok)m(ed.)630 1134 y Fs(-o)g Fj(comp-option)1110
+1244 y Ft(The)c Fq(comp-option)i Ft(con)m(trols)g(sev)m(eral)h(asp)s
 (ects)e(of)g(the)g(compsp)s(ec's)g(b)s(eha)m(v-)1110
-1359 y(ior)g(b)s(ey)m(ond)f(the)g(simple)h(generation)h(of)e
+1353 y(ior)g(b)s(ey)m(ond)f(the)g(simple)h(generation)h(of)e
 (completions.)41 b Fq(comp-option)27 b Ft(ma)m(y)1110
-1469 y(b)s(e)j(one)g(of:)1110 1628 y Fs(bashdefault)1590
-1738 y Ft(P)m(erform)d(the)h(rest)f(of)h(the)g(default)f(Bash)h
-(completions)g(if)g(the)1590 1847 y(compsp)s(ec)i(generates)i(no)e
-(matc)m(hes.)1110 2006 y Fs(default)144 b Ft(Use)22 b(Readline's)g
+1463 y(b)s(e)j(one)g(of:)1110 1618 y Fs(bashdefault)1590
+1727 y Ft(P)m(erform)d(the)h(rest)f(of)h(the)g(default)f(Bash)h
+(completions)g(if)g(the)1590 1837 y(compsp)s(ec)i(generates)i(no)e
+(matc)m(hes.)1110 1992 y Fs(default)144 b Ft(Use)22 b(Readline's)g
 (default)g(\014lename)g(completion)g(if)g(the)g(comp-)1590
-2116 y(sp)s(ec)30 b(generates)i(no)e(matc)m(hes.)1110
-2275 y Fs(dirnames)96 b Ft(P)m(erform)46 b(directory)g(name)h
-(completion)g(if)f(the)g(compsp)s(ec)1590 2385 y(generates)32
-b(no)e(matc)m(hes.)1110 2544 y Fs(filenames)1590 2653
+2101 y(sp)s(ec)30 b(generates)i(no)e(matc)m(hes.)1110
+2256 y Fs(dirnames)96 b Ft(P)m(erform)46 b(directory)g(name)h
+(completion)g(if)f(the)g(compsp)s(ec)1590 2366 y(generates)32
+b(no)e(matc)m(hes.)1110 2521 y Fs(filenames)1590 2630
 y Ft(T)-8 b(ell)40 b(Readline)f(that)h(the)f(compsp)s(ec)f(generates)j
-(\014lenames,)1590 2763 y(so)29 b(it)h(can)f(p)s(erform)f(an)m(y)h
+(\014lenames,)1590 2740 y(so)29 b(it)h(can)f(p)s(erform)f(an)m(y)h
 (\014lename-sp)s(eci\014c)h(pro)s(cessing)e(\(lik)m(e)1590
-2872 y(adding)h(a)h(slash)f(to)h(directory)g(names)f(or)g(suppressing)f
-(trail-)1590 2982 y(ing)38 b(spaces\).)66 b(This)37 b(option)i(is)f(in)
-m(tended)g(to)h(b)s(e)f(used)f(with)1590 3092 y(shell)31
+2850 y(adding)h(a)h(slash)f(to)h(directory)g(names)f(or)g(suppressing)f
+(trail-)1590 2959 y(ing)38 b(spaces\).)66 b(This)37 b(option)i(is)f(in)
+m(tended)g(to)h(b)s(e)f(used)f(with)1590 3069 y(shell)31
 b(functions)f(sp)s(eci\014ed)f(with)h(`)p Fs(-F)p Ft('.)1110
-3251 y Fs(nospace)144 b Ft(T)-8 b(ell)40 b(Readline)g(not)g(to)g(app)s
-(end)d(a)j(space)g(\(the)f(default\))h(to)1590 3360 y(w)m(ords)30
-b(completed)h(at)g(the)g(end)f(of)g(the)h(line.)630 3519
-y Fs(-A)f Fj(action)1110 3629 y Ft(The)25 b Fq(action)h
-Ft(ma)m(y)g(b)s(e)e(one)h(of)h(the)f(follo)m(wing)i(to)e(generate)i(a)e
-(list)h(of)f(p)s(ossible)1110 3739 y(completions:)1110
-3898 y Fs(alias)240 b Ft(Alias)31 b(names.)41 b(Ma)m(y)31
-b(also)h(b)s(e)e(sp)s(eci\014ed)f(as)i(`)p Fs(-a)p Ft('.)1110
-4057 y Fs(arrayvar)96 b Ft(Arra)m(y)31 b(v)-5 b(ariable)31
-b(names.)1110 4216 y Fs(binding)144 b Ft(Readline)30
-b(k)m(ey)f(binding)f(names)h(\(see)h(Section)f(8.4)h([Bindable)1590
-4325 y(Readline)h(Commands],)f(page)h(97\).)1110 4484
-y Fs(builtin)144 b Ft(Names)21 b(of)g(shell)f(builtin)h(commands.)37
-b(Ma)m(y)21 b(also)h(b)s(e)e(sp)s(eci\014ed)1590 4594
-y(as)31 b(`)p Fs(-b)p Ft('.)1110 4753 y Fs(command)144
+3224 y Fs(nospace)144 b Ft(T)-8 b(ell)40 b(Readline)g(not)g(to)g(app)s
+(end)d(a)j(space)g(\(the)f(default\))h(to)1590 3333 y(w)m(ords)30
+b(completed)h(at)g(the)g(end)f(of)g(the)h(line.)1110
+3488 y Fs(plusdirs)96 b Ft(After)30 b(an)m(y)h(matc)m(hes)g(de\014ned)d
+(b)m(y)i(the)g(compsp)s(ec)g(are)g(gener-)1590 3598 y(ated,)g
+(directory)f(name)g(completion)i(is)d(attempted)i(and)f(an)m(y)1590
+3707 y(matc)m(hes)j(are)e(added)g(to)h(the)g(results)f(of)g(the)h
+(other)g(actions.)630 3862 y Fs(-A)f Fj(action)1110 3972
+y Ft(The)25 b Fq(action)h Ft(ma)m(y)g(b)s(e)e(one)h(of)h(the)f(follo)m
+(wing)i(to)e(generate)i(a)e(list)h(of)f(p)s(ossible)1110
+4082 y(completions:)1110 4237 y Fs(alias)240 b Ft(Alias)31
+b(names.)41 b(Ma)m(y)31 b(also)h(b)s(e)e(sp)s(eci\014ed)f(as)i(`)p
+Fs(-a)p Ft('.)1110 4391 y Fs(arrayvar)96 b Ft(Arra)m(y)31
+b(v)-5 b(ariable)31 b(names.)1110 4546 y Fs(binding)144
+b Ft(Readline)30 b(k)m(ey)f(binding)f(names)h(\(see)h(Section)f(8.4)h
+([Bindable)1590 4656 y(Readline)h(Commands],)f(page)h(97\).)1110
+4811 y Fs(builtin)144 b Ft(Names)21 b(of)g(shell)f(builtin)h(commands.)
+37 b(Ma)m(y)21 b(also)h(b)s(e)e(sp)s(eci\014ed)1590 4921
+y(as)31 b(`)p Fs(-b)p Ft('.)1110 5075 y Fs(command)144
 b Ft(Command)29 b(names.)41 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s
-(eci\014ed)f(as)i(`)p Fs(-c)p Ft('.)1110 4912 y Fs(directory)1590
-5022 y Ft(Directory)h(names.)40 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s
-(eci\014ed)g(as)g(`)p Fs(-d)p Ft('.)1110 5181 y Fs(disabled)96
-b Ft(Names)31 b(of)g(disabled)f(shell)g(builtins.)1110
-5340 y Fs(enabled)144 b Ft(Names)31 b(of)g(enabled)f(shell)g(builtins.)
-p eop end
+(eci\014ed)f(as)i(`)p Fs(-c)p Ft('.)1110 5230 y Fs(directory)1590
+5340 y Ft(Directory)h(names.)40 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s
+(eci\014ed)g(as)g(`)p Fs(-d)p Ft('.)p eop end
 %%Page: 109 115
 TeXDict begin 109 114 bop 150 -116 a Ft(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(109)1110 299 y Fs(export)192
-b Ft(Names)34 b(of)f(exp)s(orted)f(shell)h(v)-5 b(ariables.)49
-b(Ma)m(y)35 b(also)e(b)s(e)g(sp)s(eci-)1590 408 y(\014ed)d(as)g(`)p
-Fs(-e)p Ft('.)1110 558 y Fs(file)288 b Ft(File)32 b(names.)40
-b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)f(as)i(`)p
-Fs(-f)p Ft('.)1110 708 y Fs(function)96 b Ft(Names)31
-b(of)g(shell)f(functions.)1110 858 y Fs(group)240 b Ft(Group)30
-b(names.)40 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)g(as)g(`)p
-Fs(-g)p Ft('.)1110 1008 y Fs(helptopic)1590 1118 y Ft(Help)37
-b(topics)g(as)g(accepted)h(b)m(y)e(the)h Fs(help)f Ft(builtin)g(\(see)h
-(Sec-)1590 1228 y(tion)31 b(4.2)g([Bash)g(Builtins],)g(page)g(39\).)
-1110 1377 y Fs(hostname)96 b Ft(Hostnames,)89 b(as)76
-b(tak)m(en)h(from)f(the)g(\014le)h(sp)s(eci\014ed)e(b)m(y)1590
-1487 y(the)55 b Fs(HOSTFILE)e Ft(shell)j(v)-5 b(ariable)56
-b(\(see)g(Section)g(5.2)h([Bash)1590 1597 y(V)-8 b(ariables],)32
-b(page)f(55\).)1110 1747 y Fs(job)336 b Ft(Job)31 b(names,)h(if)g(job)f
-(con)m(trol)i(is)f(activ)m(e.)46 b(Ma)m(y)33 b(also)g(b)s(e)e(sp)s
-(eci-)1590 1856 y(\014ed)f(as)g(`)p Fs(-j)p Ft('.)1110
-2006 y Fs(keyword)144 b Ft(Shell)30 b(reserv)m(ed)h(w)m(ords.)40
-b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)f(as)i(`)p
-Fs(-k)p Ft('.)1110 2156 y Fs(running)144 b Ft(Names)31
-b(of)g(running)d(jobs,)i(if)h(job)f(con)m(trol)h(is)g(activ)m(e.)1110
-2306 y Fs(service)144 b Ft(Service)31 b(names.)41 b(Ma)m(y)31
-b(also)g(b)s(e)f(sp)s(eci\014ed)g(as)g(`)p Fs(-s)p Ft('.)1110
-2456 y Fs(setopt)192 b Ft(V)-8 b(alid)34 b(argumen)m(ts)f(for)f(the)h
-(`)p Fs(-o)p Ft(')g(option)g(to)h(the)f Fs(set)e Ft(builtin)1590
-2566 y(\(see)g(Section)h(4.3)f([The)f(Set)h(Builtin],)g(page)g(50\).)
-1110 2716 y Fs(shopt)240 b Ft(Shell)40 b(option)g(names)g(as)g
+b(Command)29 b(Line)i(Editing)2062 b(109)1110 299 y Fs(disabled)96
+b Ft(Names)31 b(of)g(disabled)f(shell)g(builtins.)1110
+458 y Fs(enabled)144 b Ft(Names)31 b(of)g(enabled)f(shell)g(builtins.)
+1110 617 y Fs(export)192 b Ft(Names)34 b(of)f(exp)s(orted)f(shell)h(v)
+-5 b(ariables.)49 b(Ma)m(y)35 b(also)e(b)s(e)g(sp)s(eci-)1590
+726 y(\014ed)d(as)g(`)p Fs(-e)p Ft('.)1110 885 y Fs(file)288
+b Ft(File)32 b(names.)40 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)f
+(as)i(`)p Fs(-f)p Ft('.)1110 1044 y Fs(function)96 b
+Ft(Names)31 b(of)g(shell)f(functions.)1110 1203 y Fs(group)240
+b Ft(Group)30 b(names.)40 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)g
+(as)g(`)p Fs(-g)p Ft('.)1110 1362 y Fs(helptopic)1590
+1471 y Ft(Help)37 b(topics)g(as)g(accepted)h(b)m(y)e(the)h
+Fs(help)f Ft(builtin)g(\(see)h(Sec-)1590 1581 y(tion)31
+b(4.2)g([Bash)g(Builtins],)g(page)g(39\).)1110 1740 y
+Fs(hostname)96 b Ft(Hostnames,)89 b(as)76 b(tak)m(en)h(from)f(the)g
+(\014le)h(sp)s(eci\014ed)e(b)m(y)1590 1850 y(the)55 b
+Fs(HOSTFILE)e Ft(shell)j(v)-5 b(ariable)56 b(\(see)g(Section)g(5.2)h
+([Bash)1590 1959 y(V)-8 b(ariables],)32 b(page)f(55\).)1110
+2118 y Fs(job)336 b Ft(Job)31 b(names,)h(if)g(job)f(con)m(trol)i(is)f
+(activ)m(e.)46 b(Ma)m(y)33 b(also)g(b)s(e)e(sp)s(eci-)1590
+2228 y(\014ed)f(as)g(`)p Fs(-j)p Ft('.)1110 2387 y Fs(keyword)144
+b Ft(Shell)30 b(reserv)m(ed)h(w)m(ords.)40 b(Ma)m(y)32
+b(also)f(b)s(e)f(sp)s(eci\014ed)f(as)i(`)p Fs(-k)p Ft('.)1110
+2545 y Fs(running)144 b Ft(Names)31 b(of)g(running)d(jobs,)i(if)h(job)f
+(con)m(trol)h(is)g(activ)m(e.)1110 2704 y Fs(service)144
+b Ft(Service)31 b(names.)41 b(Ma)m(y)31 b(also)g(b)s(e)f(sp)s
+(eci\014ed)g(as)g(`)p Fs(-s)p Ft('.)1110 2863 y Fs(setopt)192
+b Ft(V)-8 b(alid)34 b(argumen)m(ts)f(for)f(the)h(`)p
+Fs(-o)p Ft(')g(option)g(to)h(the)f Fs(set)e Ft(builtin)1590
+2973 y(\(see)g(Section)h(4.3)f([The)f(Set)h(Builtin],)g(page)g(50\).)
+1110 3132 y Fs(shopt)240 b Ft(Shell)40 b(option)g(names)g(as)g
 (accepted)i(b)m(y)e(the)g Fs(shopt)e Ft(builtin)1590
-2825 y(\(see)31 b(Section)h(4.2)f([Bash)g(Builtins],)g(page)g(39\).)
-1110 2975 y Fs(signal)192 b Ft(Signal)31 b(names.)1110
-3125 y Fs(stopped)144 b Ft(Names)31 b(of)g(stopp)s(ed)e(jobs,)h(if)g
-(job)g(con)m(trol)i(is)f(activ)m(e.)1110 3275 y Fs(user)288
+3241 y(\(see)31 b(Section)h(4.2)f([Bash)g(Builtins],)g(page)g(39\).)
+1110 3400 y Fs(signal)192 b Ft(Signal)31 b(names.)1110
+3559 y Fs(stopped)144 b Ft(Names)31 b(of)g(stopp)s(ed)e(jobs,)h(if)g
+(job)g(con)m(trol)i(is)f(activ)m(e.)1110 3718 y Fs(user)288
 b Ft(User)30 b(names.)41 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)f
-(as)i(`)p Fs(-u)p Ft('.)1110 3425 y Fs(variable)96 b
+(as)i(`)p Fs(-u)p Ft('.)1110 3877 y Fs(variable)96 b
 Ft(Names)36 b(of)g(all)g(shell)g(v)-5 b(ariables.)56
 b(Ma)m(y)37 b(also)f(b)s(e)f(sp)s(eci\014ed)g(as)1590
-3535 y(`)p Fs(-v)p Ft('.)630 3685 y Fs(-G)30 b Fj(globpat)1110
-3794 y Ft(The)39 b(\014lename)h(expansion)g(pattern)g
-Fq(globpat)j Ft(is)d(expanded)f(to)h(generate)1110 3904
-y(the)31 b(p)s(ossible)e(completions.)630 4054 y Fs(-W)h
-Fj(wordlist)1110 4163 y Ft(The)24 b Fq(w)m(ordlist)k
+3987 y(`)p Fs(-v)p Ft('.)630 4145 y Fs(-G)30 b Fj(globpat)1110
+4255 y Ft(The)39 b(\014lename)h(expansion)g(pattern)g
+Fq(globpat)j Ft(is)d(expanded)f(to)h(generate)1110 4365
+y(the)31 b(p)s(ossible)e(completions.)630 4524 y Fs(-W)h
+Fj(wordlist)1110 4633 y Ft(The)24 b Fq(w)m(ordlist)k
 Ft(is)d(split)g(using)f(the)h(c)m(haracters)i(in)d(the)i
-Fs(IFS)e Ft(sp)s(ecial)h(v)-5 b(ariable)1110 4273 y(as)36
+Fs(IFS)e Ft(sp)s(ecial)h(v)-5 b(ariable)1110 4743 y(as)36
 b(delimiters,)i(and)e(eac)m(h)h(resultan)m(t)g(w)m(ord)e(is)h
-(expanded.)57 b(The)35 b(p)s(ossible)1110 4383 y(completions)c(are)e
+(expanded.)57 b(The)35 b(p)s(ossible)1110 4852 y(completions)c(are)e
 (the)h(mem)m(b)s(ers)f(of)g(the)h(resultan)m(t)g(list)g(whic)m(h)f
-(matc)m(h)i(the)1110 4492 y(w)m(ord)f(b)s(eing)g(completed.)630
-4642 y Fs(-C)g Fj(command)1110 4752 y Fq(command)35 b
+(matc)m(h)i(the)1110 4962 y(w)m(ord)f(b)s(eing)g(completed.)630
+5121 y Fs(-C)g Fj(command)1110 5230 y Fq(command)35 b
 Ft(is)e(executed)g(in)e(a)i(subshell)e(en)m(vironmen)m(t,)i(and)f(its)g
-(output)g(is)1110 4861 y(used)e(as)g(the)h(p)s(ossible)f(completions.)
-630 5011 y Fs(-F)g Fj(function)1110 5121 y Ft(The)25
-b(shell)i(function)e Fq(function)h Ft(is)g(executed)h(in)e(the)i
-(curren)m(t)e(shell)i(en)m(viron-)1110 5230 y(men)m(t.)40
-b(When)25 b(it)h(\014nishes,)f(the)h(p)s(ossible)f(completions)h(are)g
-(retriev)m(ed)g(from)1110 5340 y(the)31 b(v)-5 b(alue)30
-b(of)h(the)g Fs(COMPREPLY)c Ft(arra)m(y)k(v)-5 b(ariable.)p
+(output)g(is)1110 5340 y(used)e(as)g(the)h(p)s(ossible)f(completions.)p
 eop end
 %%Page: 110 116
 TeXDict begin 110 115 bop 150 -116 a Ft(110)2527 b(Bash)31
-b(Reference)g(Man)m(ual)630 299 y Fs(-X)f Fj(filterpat)1110
-408 y Fq(\014lterpat)d Ft(is)e(a)g(pattern)g(as)f(used)g(for)h
-(\014lename)g(expansion.)38 b(It)25 b(is)g(applied)f(to)1110
-518 y(the)30 b(list)f(of)h(p)s(ossible)f(completions)h(generated)h(b)m
-(y)e(the)g(preceding)h(options)1110 628 y(and)d(argumen)m(ts,)i(and)e
-(eac)m(h)i(completion)g(matc)m(hing)g Fq(\014lterpat)h
-Ft(is)e(remo)m(v)m(ed)1110 737 y(from)i(the)h(list.)42
-b(A)30 b(leading)i(`)p Fs(!)p Ft(')e(in)g Fq(\014lterpat)j
-Ft(negates)f(the)f(pattern;)g(in)f(this)1110 847 y(case,)i(an)m(y)e
-(completion)i(not)f(matc)m(hing)g Fq(\014lterpat)i Ft(is)d(remo)m(v)m
-(ed.)630 1006 y Fs(-P)g Fj(prefix)1110 1116 y Fq(pre\014x)39
-b Ft(is)34 b(added)f(at)i(the)f(b)s(eginning)f(of)i(eac)m(h)g(p)s
-(ossible)e(completion)i(after)1110 1225 y(all)c(other)g(options)g(ha)m
-(v)m(e)g(b)s(een)f(applied.)630 1385 y Fs(-S)g Fj(suffix)1110
-1494 y Fq(su\016x)c Ft(is)20 b(app)s(ended)f(to)i(eac)m(h)h(p)s
-(ossible)e(completion)i(after)f(all)g(other)g(options)1110
-1604 y(ha)m(v)m(e)32 b(b)s(een)d(applied.)630 1763 y(The)35
-b(return)g(v)-5 b(alue)37 b(is)f(true)f(unless)h(an)f(in)m(v)-5
-b(alid)37 b(option)f(is)g(supplied,)g(an)g(option)h(other)630
-1873 y(than)31 b(`)p Fs(-p)p Ft(')g(or)g(`)p Fs(-r)p
+b(Reference)g(Man)m(ual)630 299 y Fs(-F)f Fj(function)1110
+408 y Ft(The)25 b(shell)i(function)e Fq(function)h Ft(is)g(executed)h
+(in)e(the)i(curren)m(t)e(shell)i(en)m(viron-)1110 518
+y(men)m(t.)40 b(When)25 b(it)h(\014nishes,)f(the)h(p)s(ossible)f
+(completions)h(are)g(retriev)m(ed)g(from)1110 628 y(the)31
+b(v)-5 b(alue)30 b(of)h(the)g Fs(COMPREPLY)c Ft(arra)m(y)k(v)-5
+b(ariable.)630 787 y Fs(-X)30 b Fj(filterpat)1110 897
+y Fq(\014lterpat)d Ft(is)e(a)g(pattern)g(as)f(used)g(for)h(\014lename)g
+(expansion.)38 b(It)25 b(is)g(applied)f(to)1110 1006
+y(the)30 b(list)f(of)h(p)s(ossible)f(completions)h(generated)h(b)m(y)e
+(the)g(preceding)h(options)1110 1116 y(and)d(argumen)m(ts,)i(and)e(eac)
+m(h)i(completion)g(matc)m(hing)g Fq(\014lterpat)h Ft(is)e(remo)m(v)m
+(ed)1110 1225 y(from)i(the)h(list.)42 b(A)30 b(leading)i(`)p
+Fs(!)p Ft(')e(in)g Fq(\014lterpat)j Ft(negates)f(the)f(pattern;)g(in)f
+(this)1110 1335 y(case,)i(an)m(y)e(completion)i(not)f(matc)m(hing)g
+Fq(\014lterpat)i Ft(is)d(remo)m(v)m(ed.)630 1494 y Fs(-P)g
+Fj(prefix)1110 1604 y Fq(pre\014x)39 b Ft(is)34 b(added)f(at)i(the)f(b)
+s(eginning)f(of)i(eac)m(h)g(p)s(ossible)e(completion)i(after)1110
+1714 y(all)c(other)g(options)g(ha)m(v)m(e)g(b)s(een)f(applied.)630
+1873 y Fs(-S)g Fj(suffix)1110 1983 y Fq(su\016x)c Ft(is)20
+b(app)s(ended)f(to)i(eac)m(h)h(p)s(ossible)e(completion)i(after)f(all)g
+(other)g(options)1110 2092 y(ha)m(v)m(e)32 b(b)s(een)d(applied.)630
+2252 y(The)35 b(return)g(v)-5 b(alue)37 b(is)f(true)f(unless)h(an)f(in)
+m(v)-5 b(alid)37 b(option)f(is)g(supplied,)g(an)g(option)h(other)630
+2361 y(than)31 b(`)p Fs(-p)p Ft(')g(or)g(`)p Fs(-r)p
 Ft(')g(is)g(supplied)f(without)h(a)g Fq(name)37 b Ft(argumen)m(t,)32
-b(an)f(attempt)h(is)f(made)g(to)630 1983 y(remo)m(v)m(e)h(a)e
+b(an)f(attempt)h(is)f(made)g(to)630 2471 y(remo)m(v)m(e)h(a)e
 (completion)i(sp)s(eci\014cation)f(for)f(a)h Fq(name)k
 Ft(for)30 b(whic)m(h)g(no)g(sp)s(eci\014cation)h(exists,)630
-2092 y(or)f(an)h(error)f(o)s(ccurs)g(adding)g(a)g(completion)i(sp)s
+2580 y(or)f(an)h(error)f(o)s(ccurs)g(adding)g(a)g(completion)i(sp)s
 (eci\014cation.)p eop end
 %%Page: 111 117
 TeXDict begin 111 116 bop 150 -116 a Ft(Chapter)30 b(9:)41
index 5bfee31a9da091cbfc4d643828c434df43279845..eb460797256f0c03de87d3b2c40a3bf87a875b09 100644 (file)
@@ -4787,7 +4787,7 @@ option).
 
 @item --dump-po-strings
 A list of all double-quoted strings preceded by @samp{$}
-is printed on the standard ouput
+is printed on the standard output
 in the @sc{gnu} @code{gettext} PO (portable object) file format.
 Equivalent to @option{-D} except for the output format.
 
@@ -4874,7 +4874,7 @@ when invoking an interactive shell.
 
 @item -D
 A list of all double-quoted strings preceded by @samp{$}
-is printed on the standard ouput.
+is printed on the standard output.
 These are the strings that
 are subject to language translation when the current locale
 is not @code{C} or @code{POSIX} (@pxref{Locale Translation}).
index a97a0cecde6c0d7e32139d6557147a83d871f428..5bfee31a9da091cbfc4d643828c434df43279845 100644 (file)
@@ -4278,8 +4278,8 @@ The command argument to the @option{-c} invocation option.
 An array variable whose members are the line numbers in source files
 corresponding to each member of @var{FUNCNAME}.
 @code{$@{BASH_LINENO[$i]@}} is the line number in the source file where
-@code{$@{FUNCNAME[$i + 1]@}} was called.
-The corresponding source file name is @code{$@{BASH_SOURCE[$i + 1]@}}.
+@code{$@{FUNCNAME[$i]@}} was called.
+The corresponding source file name is @code{$@{BASH_SOURCE[$i]@}}.
 Use @code{LINENO} to obtain the current line number.
 
 @item BASH_REMATCH
index 81b5185cf8851629cf5089bf5f40895bea459bd1..743fb1797c8d13cad41dec07579da0e5c721429f 100644 (file)
@@ -217,14 +217,19 @@ B\bBA\bAS\bSH\bH B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
                       n\bno\bos\bsp\bpa\bac\bce\be Tell  readline  not  to  append  a  space   (the
                               default)  to  words  completed at the end of the
                               line.
+                      p\bpl\blu\bus\bsd\bdi\bir\brs\bs
+                              After any matches defined by  the  compspec  are
+                              generated,    directory   name   completion   is
+                              attempted and  any  matches  are  added  to  the
+                              results of the other actions.
               -\b-A\bA _\ba_\bc_\bt_\bi_\bo_\bn
-                      The _\ba_\bc_\bt_\bi_\bo_\bn may be one of the  following  to  generate  a
+                      The  _\ba_\bc_\bt_\bi_\bo_\bn  may  be  one of the following to generate a
                       list of possible completions:
                       a\bal\bli\bia\bas\bs   Alias names.  May also be specified as -\b-a\ba.
                       a\bar\brr\bra\bay\byv\bva\bar\br
                               Array variable names.
                       b\bbi\bin\bnd\bdi\bin\bng\bg R\bRe\bea\bad\bdl\bli\bin\bne\be key binding names.
-                      b\bbu\bui\bil\blt\bti\bin\bn Names  of  shell  builtin commands.  May also be
+                      b\bbu\bui\bil\blt\bti\bin\bn Names of shell builtin commands.   May  also  be
                               specified as -\b-b\bb.
                       c\bco\bom\bmm\bma\ban\bnd\bd Command names.  May also be specified as -\b-c\bc.
                       d\bdi\bir\bre\bec\bct\bto\bor\bry\by
@@ -232,7 +237,7 @@ B\bBA\bAS\bSH\bH B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
                       d\bdi\bis\bsa\bab\bbl\ble\bed\bd
                               Names of disabled shell builtins.
                       e\ben\bna\bab\bbl\ble\bed\bd Names of enabled shell builtins.
-                      e\bex\bxp\bpo\bor\brt\bt  Names of exported shell variables.  May also  be
+                      e\bex\bxp\bpo\bor\brt\bt  Names  of exported shell variables.  May also be
                               specified as -\b-e\be.
                       f\bfi\bil\ble\be    File names.  May also be specified as -\b-f\bf.
                       f\bfu\bun\bnc\bct\bti\bio\bon\bn
@@ -241,17 +246,17 @@ B\bBA\bAS\bSH\bH B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
                       h\bhe\bel\blp\bpt\bto\bop\bpi\bic\bc
                               Help topics as accepted by the h\bhe\bel\blp\bp builtin.
                       h\bho\bos\bst\btn\bna\bam\bme\be
-                              Hostnames,  as  taken from the file specified by
+                              Hostnames, as taken from the file  specified  by
                               the H\bHO\bOS\bST\bTF\bFI\bIL\bLE\bE shell variable.
-                      j\bjo\bob\bb     Job names, if job control is active.   May  also
+                      j\bjo\bob\bb     Job  names,  if job control is active.  May also
                               be specified as -\b-j\bj.
-                      k\bke\bey\byw\bwo\bor\brd\bd Shell  reserved words.  May also be specified as
+                      k\bke\bey\byw\bwo\bor\brd\bd Shell reserved words.  May also be specified  as
                               -\b-k\bk.
                       r\bru\bun\bnn\bni\bin\bng\bg Names of running jobs, if job control is active.
                       s\bse\ber\brv\bvi\bic\bce\be Service names.  May also be specified as -\b-s\bs.
-                      s\bse\bet\bto\bop\bpt\bt  Valid  arguments  for  the  -\b-o\bo option to the s\bse\bet\bt
+                      s\bse\bet\bto\bop\bpt\bt  Valid arguments for the -\b-o\bo  option  to  the  s\bse\bet\bt
                               builtin.
-                      s\bsh\bho\bop\bpt\bt   Shell option names  as  accepted  by  the  s\bsh\bho\bop\bpt\bt
+                      s\bsh\bho\bop\bpt\bt   Shell  option  names  as  accepted  by the s\bsh\bho\bop\bpt\bt
                               builtin.
                       s\bsi\big\bgn\bna\bal\bl  Signal names.
                       s\bst\bto\bop\bpp\bpe\bed\bd Names of stopped jobs, if job control is active.
@@ -260,135 +265,135 @@ B\bBA\bAS\bSH\bH B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
                               Names of all shell variables.  May also be spec-
                               ified as -\b-v\bv.
               -\b-G\bG _\bg_\bl_\bo_\bb_\bp_\ba_\bt
-                      The  filename  expansion  pattern _\bg_\bl_\bo_\bb_\bp_\ba_\bt is expanded to
+                      The filename expansion pattern _\bg_\bl_\bo_\bb_\bp_\ba_\bt  is  expanded  to
                       generate the possible completions.
               -\b-W\bW _\bw_\bo_\br_\bd_\bl_\bi_\bs_\bt
-                      The _\bw_\bo_\br_\bd_\bl_\bi_\bs_\bt is split using the characters  in  the  I\bIF\bFS\bS
-                      special  variable as delimiters, and each resultant word
-                      is expanded.  The possible completions are  the  members
-                      of  the  resultant  list which match the word being com-
+                      The  _\bw_\bo_\br_\bd_\bl_\bi_\bs_\bt  is  split using the characters in the I\bIF\bFS\bS
+                      special variable as delimiters, and each resultant  word
+                      is  expanded.   The possible completions are the members
+                      of the resultant list which match the  word  being  com-
                       pleted.
               -\b-C\bC _\bc_\bo_\bm_\bm_\ba_\bn_\bd
-                      _\bc_\bo_\bm_\bm_\ba_\bn_\bis executed in a subshell environment,  and  its
+                      _\bc_\bo_\bm_\bm_\ba_\bn_\b is  executed in a subshell environment, and its
                       output is used as the possible completions.
               -\b-F\bF _\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn
-                      The  shell  function _\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn is executed in the current
-                      shell environment.  When it finishes, the possible  com-
-                      pletions  are  retrieved from the value of the C\bCO\bOM\bMP\bPR\bRE\bEP\bPL\bLY\bY
+                      The shell function _\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn is executed in  the  current
+                      shell  environment.  When it finishes, the possible com-
+                      pletions are retrieved from the value of  the  C\bCO\bOM\bMP\bPR\bRE\bEP\bPL\bLY\bY
                       array variable.
               -\b-X\bX _\bf_\bi_\bl_\bt_\be_\br_\bp_\ba_\bt
-                      _\bf_\bi_\bl_\bt_\be_\br_\bp_\ba_\bis a pattern as used for  filename  expansion.
+                      _\bf_\bi_\bl_\bt_\be_\br_\bp_\ba_\b is  a pattern as used for filename expansion.
                       It is applied to the list of possible completions gener-
-                      ated by the preceding options and  arguments,  and  each
-                      completion  matching _\bf_\bi_\bl_\bt_\be_\br_\bp_\ba_\bt is removed from the list.
-                      A leading !\b! in _\bf_\bi_\bl_\bt_\be_\br_\bp_\ba_\bt negates the  pattern;  in  this
-                      case,  any completion not matching _\bf_\bi_\bl_\bt_\be_\br_\bp_\ba_\bt is removed.
+                      ated  by  the  preceding options and arguments, and each
+                      completion matching _\bf_\bi_\bl_\bt_\be_\br_\bp_\ba_\bt is removed from the  list.
+                      A  leading  !\b!  in _\bf_\bi_\bl_\bt_\be_\br_\bp_\ba_\bt negates the pattern; in this
+                      case, any completion not matching _\bf_\bi_\bl_\bt_\be_\br_\bp_\ba_\bt is  removed.
               -\b-P\bP _\bp_\br_\be_\bf_\bi_\bx
-                      _\bp_\br_\be_\bf_\bi_\bis added at the beginning of each  possible  com-
+                      _\bp_\br_\be_\bf_\bi_\b is  added at the beginning of each possible com-
                       pletion after all other options have been applied.
               -\b-S\bS _\bs_\bu_\bf_\bf_\bi_\bx
                       _\bs_\bu_\bf_\bf_\bi_\bx is appended to each possible completion after all
                       other options have been applied.
 
-              The return value is true unless an invalid option  is  supplied,
-              an  option  other than -\b-p\bp or -\b-r\br is supplied without a _\bn_\ba_\bm_\be argu-
-              ment, an attempt is made to remove  a  completion  specification
+              The  return  value is true unless an invalid option is supplied,
+              an option other than -\b-p\bp or -\b-r\br is supplied without a  _\bn_\ba_\bm_\b argu-
+              ment,  an  attempt  is made to remove a completion specification
               for a _\bn_\ba_\bm_\be for which no specification exists, or an error occurs
               adding a completion specification.
 
        c\bco\bon\bnt\bti\bin\bnu\bue\be [_\bn]
               Resume the next iteration of the enclosing f\bfo\bor\br, w\bwh\bhi\bil\ble\be, u\bun\bnt\bti\bil\bl, or
-              s\bse\bel\ble\bec\bct\b loop.   If  _\bn  is specified, resume at the _\bnth enclosing
-              loop.  _\bn must be >= 1.  If _\bn  is  greater  than  the  number  of
-              enclosing  loops,  the  last  enclosing  loop (the ``top-level''
+              s\bse\bel\ble\bec\bct\bloop.  If _\bn is specified, resume  at  the  _\bnth  enclosing
+              loop.   _\bn  must  be  >=  1.   If _\bn is greater than the number of
+              enclosing loops, the  last  enclosing  loop  (the  ``top-level''
               loop) is resumed.  The return value is 0 unless the shell is not
               executing a loop when c\bco\bon\bnt\bti\bin\bnu\bue\be is executed.
 
        d\bde\bec\bcl\bla\bar\bre\be [-\b-a\baf\bfF\bFi\bir\brt\btx\bx] [-\b-p\bp] [_\bn_\ba_\bm_\be[=_\bv_\ba_\bl_\bu_\be] ...]
        t\bty\byp\bpe\bes\bse\bet\bt [-\b-a\baf\bfF\bFi\bir\brt\btx\bx] [-\b-p\bp] [_\bn_\ba_\bm_\be[=_\bv_\ba_\bl_\bu_\be] ...]
-              Declare  variables and/or give them attributes.  If no _\bn_\ba_\bm_\bes are
-              given then display the values of variables.  The -\b-p\bp option  will
-              display  the  attributes  and  values  of each _\bn_\ba_\bm_\be.  When -\b-p\bp is
-              used, additional options are ignored.  The  -\b-F\bF  option  inhibits
-              the  display of function definitions; only the function name and
+              Declare variables and/or give them attributes.  If no _\bn_\ba_\bm_\bes  are
+              given  then display the values of variables.  The -\b-p\bp option will
+              display the attributes and values of  each  _\bn_\ba_\bm_\be.   When  -\b-p\b is
+              used,  additional  options  are ignored.  The -\b-F\bF option inhibits
+              the display of function definitions; only the function name  and
               attributes are printed.  If the e\bex\bxt\btd\bde\beb\bbu\bug\bg shell option is enabled
-              using  s\bsh\bho\bop\bpt\bt,  the  source  file  name and line number where the
-              function is defined  are  displayed  as  well.   The  -\b-F\b option
-              implies  -\b-f\bf.  The following options can be used to restrict out-
-              put to variables with the specified attribute or to  give  vari-
+              using s\bsh\bho\bop\bpt\bt, the source file name  and  line  number  where  the
+              function  is  defined  are  displayed  as  well.   The -\b-F\bF option
+              implies -\b-f\bf.  The following options can be used to restrict  out-
+              put  to  variables with the specified attribute or to give vari-
               ables attributes:
               -\b-a\ba     Each _\bn_\ba_\bm_\be is an array variable (see A\bAr\brr\bra\bay\bys\bs above).
               -\b-f\bf     Use function names only.
               -\b-i\bi     The variable is treated as an integer; arithmetic evalua-
-                     tion (see A\bAR\bRI\bIT\bTH\bHM\bME\bET\bTI\bIC\bC E\bEV\bVA\bAL\bLU\bUA\bAT\bTI\bIO\bON\bN )\b) is performed  when  the
+                     tion  (see  A\bAR\bRI\bIT\bTH\bHM\bME\bET\bTI\bIC\bC E\bEV\bVA\bAL\bLU\bUA\bAT\bTI\bIO\bON\bN )\b) is performed when the
                      variable is assigned a value.
               -\b-r\br     Make _\bn_\ba_\bm_\bes readonly.  These names cannot then be assigned
                      values by subsequent assignment statements or unset.
-              -\b-t\bt     Give each _\bn_\ba_\bm_\be the  _\bt_\br_\ba_\bc_\be  attribute.   Traced  functions
+              -\b-t\bt     Give  each  _\bn_\ba_\bm_\be  the  _\bt_\br_\ba_\bc_\be attribute.  Traced functions
                      inherit the D\bDE\bEB\bBU\bUG\bG trap from the calling shell.  The trace
                      attribute has no special meaning for variables.
-              -\b-x\bx     Mark _\bn_\ba_\bm_\bes for export  to  subsequent  commands  via  the
+              -\b-x\bx     Mark  _\bn_\ba_\bm_\bes  for  export  to  subsequent commands via the
                      environment.
 
-              Using  `+'  instead of `-' turns off the attribute instead, with
-              the exception that +\b+a\ba may not be used to destroy an array  vari-
-              able.   When  used in a function, makes each _\bn_\ba_\bm_\be local, as with
-              the l\blo\boc\bca\bal\bl command.  If a variable name is  followed  by  =_\bv_\ba_\bl_\bu_\be,
-              the  value of the variable is set to _\bv_\ba_\bl_\bu_\be.  The return value is
+              Using `+' instead of `-' turns off the attribute  instead,  with
+              the  exception that +\b+a\ba may not be used to destroy an array vari-
+              able.  When used in a function, makes each _\bn_\ba_\bm_\be local,  as  with
+              the  l\blo\boc\bca\bal\bl  command.   If a variable name is followed by =_\bv_\ba_\bl_\bu_\be,
+              the value of the variable is set to _\bv_\ba_\bl_\bu_\be.  The return value  is
               0 unless an invalid option is encountered, an attempt is made to
-              define  a  function  using ``-f foo=bar'', an attempt is made to
-              assign a value to a readonly variable, an  attempt  is  made  to
-              assign  a  value to an array variable without using the compound
-              assignment syntax (see A\bAr\brr\bra\bay\bys\bs above), one of the _\bn_\ba_\bm_\be_\bs is not  a
-              valid  shell variable name, an attempt is made to turn off read-
-              only status for a readonly variable, an attempt is made to  turn
+              define a function using ``-f foo=bar'', an attempt  is  made  to
+              assign  a  value  to  a readonly variable, an attempt is made to
+              assign a value to an array variable without using  the  compound
+              assignment  syntax (see A\bAr\brr\bra\bay\bys\bs above), one of the _\bn_\ba_\bm_\be_\bs is not a
+              valid shell variable name, an attempt is made to turn off  read-
+              only  status for a readonly variable, an attempt is made to turn
               off array status for an array variable, or an attempt is made to
               display a non-existent function with -\b-f\bf.
 
        d\bdi\bir\brs\bs [\b[-\b-c\bcl\blp\bpv\bv]\b] [\b[+\b+_\bn]\b] [\b[-\b-_\bn]\b]
-              Without options,  displays  the  list  of  currently  remembered
-              directories.   The  default  display  is  on  a single line with
-              directory names separated by spaces.  Directories are  added  to
-              the  list  with  the  p\bpu\bus\bsh\bhd\bd  command;  the  p\bpo\bop\bpd\bd command removes
+              Without  options,  displays  the  list  of  currently remembered
+              directories.  The default display  is  on  a  single  line  with
+              directory  names  separated by spaces.  Directories are added to
+              the list with  the  p\bpu\bus\bsh\bhd\bd  command;  the  p\bpo\bop\bpd\bd  command  removes
               entries from the list.
               +\b+_\bn     Displays the _\bnth entry counting from the left of the list
                      shown by d\bdi\bir\brs\bs when invoked without options, starting with
                      zero.
-              -\b-_\bn     Displays the _\bnth entry counting from  the  right  of  the
+              -\b-_\bn     Displays  the  _\bnth  entry  counting from the right of the
                      list shown by d\bdi\bir\brs\bs when invoked without options, starting
                      with zero.
               -\b-c\bc     Clears  the  directory  stack  by  deleting  all  of  the
                      entries.
-              -\b-l\bl     Produces  a  longer  listing;  the default listing format
+              -\b-l\bl     Produces a longer listing;  the  default  listing  format
                      uses a tilde to denote the home directory.
               -\b-p\bp     Print the directory stack with one entry per line.
-              -\b-v\bv     Print the directory stack with one entry per  line,  pre-
+              -\b-v\bv     Print  the  directory stack with one entry per line, pre-
                      fixing each entry with its index in the stack.
 
-              The  return value is 0 unless an invalid option is supplied or _\bn
+              The return value is 0 unless an invalid option is supplied or  _\bn
               indexes beyond the end of the directory stack.
 
        d\bdi\bis\bso\bow\bwn\bn [-\b-a\bar\br] [-\b-h\bh] [_\bj_\bo_\bb_\bs_\bp_\be_\bc ...]
-              Without options, each _\bj_\bo_\bb_\bs_\bp_\be_\bc  is  removed  from  the  table  of
-              active  jobs.   If  the  -\b-h\bh option is given, each _\bj_\bo_\bb_\bs_\bp_\be_\bc is not
+              Without  options,  each  _\bj_\bo_\bb_\bs_\bp_\be_\bc  is  removed  from the table of
+              active jobs.  If the -\b-h\bh option is given,  each  _\bj_\bo_\bb_\bs_\bp_\be_\bc  is  not
               removed from the table, but is marked so that S\bSI\bIG\bGH\bHU\bUP\bP is not sent
-              to  the  job  if  the shell receives a S\bSI\bIG\bGH\bHU\bUP\bP.  If no _\bj_\bo_\bb_\bs_\bp_\be_\bc is
-              present, and neither the -\b-a\ba nor the -\b-r\br option is  supplied,  the
-              _\bc_\bu_\br_\br_\be_\bn_\b _\bj_\bo_\bb  is used.  If no _\bj_\bo_\bb_\bs_\bp_\be_\bc is supplied, the -\b-a\ba option
-              means to remove or mark all jobs; the -\b-r\br option without  a  _\bj_\bo_\bb_\b-
-              _\bs_\bp_\be_\b argument  restricts operation to running jobs.  The return
+              to the job if the shell receives a S\bSI\bIG\bGH\bHU\bUP\bP.   If  no  _\bj_\bo_\bb_\bs_\bp_\be_\b is
+              present,  and  neither the -\b-a\ba nor the -\b-r\br option is supplied, the
+              _\bc_\bu_\br_\br_\be_\bn_\b_\bj_\bo_\bb is used.  If no _\bj_\bo_\bb_\bs_\bp_\be_\bc is supplied, the  -\b-a\b option
+              means  to  remove or mark all jobs; the -\b-r\br option without a _\bj_\bo_\bb_\b-
+              _\bs_\bp_\be_\bargument restricts operation to running jobs.   The  return
               value is 0 unless a _\bj_\bo_\bb_\bs_\bp_\be_\bc does not specify a valid job.
 
        e\bec\bch\bho\bo [-\b-n\bne\beE\bE] [_\ba_\br_\bg ...]
-              Output the _\ba_\br_\bgs, separated by spaces,  followed  by  a  newline.
+              Output  the  _\ba_\br_\bgs,  separated  by spaces, followed by a newline.
               The return status is always 0.  If -\b-n\bn is specified, the trailing
-              newline is suppressed.  If the -\b-e\be option is  given,  interpreta-
-              tion  of  the following backslash-escaped characters is enabled.
-              The -\b-E\bE option disables the interpretation of these escape  char-
-              acters,  even  on systems where they are interpreted by default.
-              The x\bxp\bpg\bg_\b_e\bec\bch\bho\bo shell option may be used to  dynamically  determine
-              whether  or not e\bec\bch\bho\bo expands these escape characters by default.
-              e\bec\bch\bho\bdoes not interpret -\b--\b- to mean the  end  of  options.   e\bec\bch\bho\bo
+              newline  is  suppressed.  If the -\b-e\be option is given, interpreta-
+              tion of the following backslash-escaped characters  is  enabled.
+              The  -\b-E\bE option disables the interpretation of these escape char-
+              acters, even on systems where they are interpreted  by  default.
+              The  x\bxp\bpg\bg_\b_e\bec\bch\bho\bo  shell option may be used to dynamically determine
+              whether or not e\bec\bch\bho\bo expands these escape characters by  default.
+              e\bec\bch\bho\b does  not  interpret  -\b--\b- to mean the end of options.  e\bec\bch\bho\bo
               interprets the following escape sequences:
               \\b\a\ba     alert (bell)
               \\b\b\bb     backspace
@@ -400,188 +405,188 @@ B\bBA\bAS\bSH\bH B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
               \\b\t\bt     horizontal tab
               \\b\v\bv     vertical tab
               \\b\\\b\     backslash
-              \\b\0\b0_\bn_\bn_\bn  the  eight-bit  character  whose value is the octal value
+              \\b\0\b0_\bn_\bn_\bn  the eight-bit character whose value is  the  octal  value
                      _\bn_\bn_\bn (zero to three octal digits)
-              \\b\_\bn_\bn_\bn   the eight-bit character whose value is  the  octal  value
+              \\b\_\bn_\bn_\bn   the  eight-bit  character  whose value is the octal value
                      _\bn_\bn_\bn (one to three octal digits)
-              \\b\x\bx_\bH_\bH   the  eight-bit  character  whose value is the hexadecimal
+              \\b\x\bx_\bH_\bH   the eight-bit character whose value  is  the  hexadecimal
                      value _\bH_\bH (one or two hex digits)
 
        e\ben\bna\bab\bbl\ble\be [-\b-a\bad\bdn\bnp\bps\bs] [-\b-f\bf _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be] [_\bn_\ba_\bm_\be ...]
-              Enable and disable builtin shell commands.  Disabling a  builtin
+              Enable  and disable builtin shell commands.  Disabling a builtin
               allows a disk command which has the same name as a shell builtin
-              to be executed without specifying a full pathname,  even  though
-              the  shell  normally searches for builtins before disk commands.
-              If -\b-n\bn is used, each  _\bn_\ba_\bm_\be  is  disabled;  otherwise,  _\bn_\ba_\bm_\be_\b are
+              to  be  executed without specifying a full pathname, even though
+              the shell normally searches for builtins before  disk  commands.
+              If  -\b-n\bn  is  used,  each  _\bn_\ba_\bm_\be  is disabled; otherwise, _\bn_\ba_\bm_\be_\bs are
               enabled.  For example, to use the t\bte\bes\bst\bt binary found via the P\bPA\bAT\bTH\bH
-              instead of the shell builtin version, run  ``enable  -n  test''.
-              The  -\b-f\bf  option  means to load the new builtin command _\bn_\ba_\bm_\be from
+              instead  of  the  shell builtin version, run ``enable -n test''.
+              The -\b-f\bf option means to load the new builtin  command  _\bn_\ba_\bm_\b from
               shared object _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be, on systems that support dynamic loading.
-              The  -\b-d\bd  option will delete a builtin previously loaded with -\b-f\bf.
+              The -\b-d\bd option will delete a builtin previously loaded  with  -\b-f\bf.
               If no _\bn_\ba_\bm_\be arguments are given, or if the -\b-p\bp option is supplied,
               a list of shell builtins is printed.  With no other option argu-
-              ments, the list consists of all enabled shell builtins.   If  -\b-n\bn
-              is  supplied, only disabled builtins are printed.  If -\b-a\ba is sup-
-              plied, the list printed includes all builtins, with  an  indica-
-              tion  of whether or not each is enabled.  If -\b-s\bs is supplied, the
-              output is restricted to the POSIX _\bs_\bp_\be_\bc_\bi_\ba_\bl builtins.  The  return
-              value  is  0 unless a _\bn_\ba_\bm_\be is not a shell builtin or there is an
+              ments,  the  list consists of all enabled shell builtins.  If -\b-n\bn
+              is supplied, only disabled builtins are printed.  If -\b-a\ba is  sup-
+              plied,  the  list printed includes all builtins, with an indica-
+              tion of whether or not each is enabled.  If -\b-s\bs is supplied,  the
+              output  is restricted to the POSIX _\bs_\bp_\be_\bc_\bi_\ba_\bl builtins.  The return
+              value is 0 unless a _\bn_\ba_\bm_\be is not a shell builtin or there  is  an
               error loading a new builtin from a shared object.
 
        e\bev\bva\bal\bl [_\ba_\br_\bg ...]
-              The _\ba_\br_\bgs are read and concatenated together into a  single  com-
-              mand.   This command is then read and executed by the shell, and
-              its exit status is returned as the value of e\bev\bva\bal\bl.  If there  are
+              The  _\ba_\br_\bgs  are read and concatenated together into a single com-
+              mand.  This command is then read and executed by the shell,  and
+              its  exit status is returned as the value of e\bev\bva\bal\bl.  If there are
               no _\ba_\br_\bg_\bs, or only null arguments, e\bev\bva\bal\bl returns 0.
 
        e\bex\bxe\bec\bc [-\b-c\bcl\bl] [-\b-a\ba _\bn_\ba_\bm_\be] [_\bc_\bo_\bm_\bm_\ba_\bn_\bd [_\ba_\br_\bg_\bu_\bm_\be_\bn_\bt_\bs]]
-              If  _\bc_\bo_\bm_\bm_\ba_\bn_\bd is specified, it replaces the shell.  No new process
-              is created.  The _\ba_\br_\bg_\bu_\bm_\be_\bn_\bt_\bs become the arguments to _\bc_\bo_\bm_\bm_\ba_\bn_\bd.   If
+              If _\bc_\bo_\bm_\bm_\ba_\bn_\bd is specified, it replaces the shell.  No new  process
+              is  created.  The _\ba_\br_\bg_\bu_\bm_\be_\bn_\bt_\bs become the arguments to _\bc_\bo_\bm_\bm_\ba_\bn_\bd.  If
               the -\b-l\bl option is supplied, the shell places a dash at the begin-
               ning of the zeroth arg passed to _\bc_\bo_\bm_\bm_\ba_\bn_\bd.  This is what _\bl_\bo_\bg_\bi_\bn(1)
               does.  The -\b-c\bc option causes _\bc_\bo_\bm_\bm_\ba_\bn_\bd to be executed with an empty
-              environment.  If -\b-a\ba is supplied, the shell passes  _\bn_\ba_\bm_\be  as  the
-              zeroth  argument  to the executed command.  If _\bc_\bo_\bm_\bm_\ba_\bn_\bd cannot be
-              executed for some reason, a non-interactive shell exits,  unless
-              the  shell  option e\bex\bxe\bec\bcf\bfa\bai\bil\bl is enabled, in which case it returns
-              failure.  An interactive shell returns failure if the file  can-
-              not  be executed.  If _\bc_\bo_\bm_\bm_\ba_\bn_\bd is not specified, any redirections
-              take effect in the current shell, and the return  status  is  0.
+              environment.   If  -\b-a\ba  is supplied, the shell passes _\bn_\ba_\bm_\be as the
+              zeroth argument to the executed command.  If _\bc_\bo_\bm_\bm_\ba_\bn_\bd  cannot  be
+              executed  for some reason, a non-interactive shell exits, unless
+              the shell option e\bex\bxe\bec\bcf\bfa\bai\bil\bl is enabled, in which case  it  returns
+              failure.   An interactive shell returns failure if the file can-
+              not be executed.  If _\bc_\bo_\bm_\bm_\ba_\bn_\bd is not specified, any  redirections
+              take  effect  in  the current shell, and the return status is 0.
               If there is a redirection error, the return status is 1.
 
        e\bex\bxi\bit\bt [_\bn]
-              Cause  the  shell  to exit with a status of _\bn.  If _\bn is omitted,
+              Cause the shell to exit with a status of _\bn.  If  _\bn  is  omitted,
               the exit status is that of the last command executed.  A trap on
               E\bEX\bXI\bIT\bT is executed before the shell terminates.
 
        e\bex\bxp\bpo\bor\brt\bt [-\b-f\bfn\bn] [_\bn_\ba_\bm_\be[=_\bw_\bo_\br_\bd]] ...
        e\bex\bxp\bpo\bor\brt\bt -\b-p\bp
-              The  supplied _\bn_\ba_\bm_\be_\bs are marked for automatic export to the envi-
-              ronment of subsequently executed commands.  If the -\b-f\bf option  is
-              given,  the _\bn_\ba_\bm_\be_\bs refer to functions.  If no _\bn_\ba_\bm_\be_\bs are given, or
-              if the -\b-p\bp option is supplied, a  list  of  all  names  that  are
-              exported  in  this  shell  is printed.  The -\b-n\bn option causes the
-              export property to be removed from each  _\bn_\ba_\bm_\be.   If  a  variable
-              name  is  followed by =_\bw_\bo_\br_\bd, the value of the variable is set to
-              _\bw_\bo_\br_\bd.  e\bex\bxp\bpo\bor\brt\bt returns an exit status  of  0  unless  an  invalid
-              option  is  encountered,  one  of the _\bn_\ba_\bm_\be_\bs is not a valid shell
+              The supplied _\bn_\ba_\bm_\be_\bs are marked for automatic export to the  envi-
+              ronment  of subsequently executed commands.  If the -\b-f\bf option is
+              given, the _\bn_\ba_\bm_\be_\bs refer to functions.  If no _\bn_\ba_\bm_\be_\bs are given,  or
+              if  the  -\b-p\bp  option  is  supplied,  a list of all names that are
+              exported in this shell is printed.  The  -\b-n\bn  option  causes  the
+              export  property  to  be  removed from each _\bn_\ba_\bm_\be.  If a variable
+              name is followed by =_\bw_\bo_\br_\bd, the value of the variable is  set  to
+              _\bw_\bo_\br_\bd.   e\bex\bxp\bpo\bor\brt\bt  returns  an  exit  status of 0 unless an invalid
+              option is encountered, one of the _\bn_\ba_\bm_\be_\bs is  not  a  valid  shell
               variable name, or -\b-f\bf is supplied with a _\bn_\ba_\bm_\be that is not a func-
               tion.
 
        f\bfc\bc [-\b-e\be _\be_\bn_\ba_\bm_\be] [-\b-n\bnl\blr\br] [_\bf_\bi_\br_\bs_\bt] [_\bl_\ba_\bs_\bt]
        f\bfc\bc -\b-s\bs [_\bp_\ba_\bt=_\br_\be_\bp] [_\bc_\bm_\bd]
-              Fix  Command.  In the first form, a range of commands from _\bf_\bi_\br_\bs_\bt
-              to _\bl_\ba_\bs_\bt is selected from the history list.  _\bF_\bi_\br_\bs_\bt and  _\bl_\ba_\bs_\b may
-              be  specified  as a string (to locate the last command beginning
-              with that string) or as a number  (an  index  into  the  history
-              list,  where  a  negative  number  is used as an offset from the
-              current command number).  If _\bl_\ba_\bs_\bt is not specified it is set  to
-              the  current  command  for listing (so that ``fc -l -10'' prints
-              the last 10 commands) and to _\bf_\bi_\br_\bs_\bt otherwise.  If _\bf_\bi_\br_\bs_\bt  is  not
-              specified  it is set to the previous command for editing and -16
-              for listing.
-
-              The -\b-n\bn option suppresses the command numbers when listing.   The
-              -\b-r\b option reverses the order of the commands.  If the -\b-l\bl option
-              is given, the commands are listed on  standard  output.   Other-
-              wise,  the editor given by _\be_\bn_\ba_\bm_\be is invoked on a file containing
-              those commands.  If _\be_\bn_\ba_\bm_\be is not given, the value of the  F\bFC\bCE\bED\bDI\bIT\bT
-              variable  is used, and the value of E\bED\bDI\bIT\bTO\bOR\bR if F\bFC\bCE\bED\bDI\bIT\bT is not set.
-              If neither variable is set, is used.  When editing is  complete,
+              Fix Command.  In the first form, a range of commands from  _\bf_\bi_\br_\bs_\bt
+              to  _\bl_\ba_\bs_\bt  is selected from the history list.  _\bF_\bi_\br_\bs_\bt and _\bl_\ba_\bs_\bt may
+              be specified as a string (to locate the last  command  beginning
+              with  that  string)  or  as  a number (an index into the history
+              list, where a negative number is used as an offset from the cur-
+              rent command number).  If _\bl_\ba_\bs_\bt is not specified it is set to the
+              current command for listing (so that ``fc -l  -10''  prints  the
+              last 10 commands) and to _\bf_\bi_\br_\bs_\bt otherwise.  If _\bf_\bi_\br_\bs_\bt is not spec-
+              ified it is set to the previous command for editing and -16  for
+              listing.
+
+              The  -\b-n\bn option suppresses the command numbers when listing.  The
+              -\b-r\boption reverses the order of the commands.  If the -\b-l\b option
+              is  given,  the  commands are listed on standard output.  Other-
+              wise, the editor given by _\be_\bn_\ba_\bm_\be is invoked on a file  containing
+              those  commands.  If _\be_\bn_\ba_\bm_\be is not given, the value of the F\bFC\bCE\bED\bDI\bIT\bT
+              variable is used, and the value of E\bED\bDI\bIT\bTO\bOR\bR if F\bFC\bCE\bED\bDI\bIT\bT is not  set.
+              If  neither variable is set, is used.  When editing is complete,
               the edited commands are echoed and executed.
 
-              In  the  second form, _\bc_\bo_\bm_\bm_\ba_\bn_\bd is re-executed after each instance
-              of _\bp_\ba_\bt is replaced by _\br_\be_\bp.  A useful alias to use with  this  is
-              ``r="fc  -s"'',  so  that  typing ``r cc'' runs the last command
+              In the second form, _\bc_\bo_\bm_\bm_\ba_\bn_\bd is re-executed after  each  instance
+              of  _\bp_\ba_\bt  is replaced by _\br_\be_\bp.  A useful alias to use with this is
+              ``r="fc -s"'', so that typing ``r cc''  runs  the  last  command
               beginning with ``cc'' and typing ``r'' re-executes the last com-
               mand.
 
-              If  the  first  form  is  used,  the return value is 0 unless an
-              invalid option is encountered or _\bf_\bi_\br_\bs_\bt or _\bl_\ba_\bs_\bt  specify  history
-              lines  out  of  range.  If the -\b-e\be option is supplied, the return
+              If the first form is used, the  return  value  is  0  unless  an
+              invalid  option  is encountered or _\bf_\bi_\br_\bs_\bt or _\bl_\ba_\bs_\bt specify history
+              lines out of range.  If the -\b-e\be option is  supplied,  the  return
               value is the value of the last command executed or failure if an
               error occurs with the temporary file of commands.  If the second
-              form is used, the return status is that of the  command  re-exe-
-              cuted,  unless  _\bc_\bm_\bd  does  not  specify a valid history line, in
+              form  is  used, the return status is that of the command re-exe-
+              cuted, unless _\bc_\bm_\bd does not specify  a  valid  history  line,  in
               which case f\bfc\bc returns failure.
 
        f\bfg\bg [_\bj_\bo_\bb_\bs_\bp_\be_\bc]
-              Resume _\bj_\bo_\bb_\bs_\bp_\be_\bc in the foreground, and make it the  current  job.
+              Resume  _\bj_\bo_\bb_\bs_\bp_\be_\bc  in the foreground, and make it the current job.
               If _\bj_\bo_\bb_\bs_\bp_\be_\bc is not present, the shell's notion of the _\bc_\bu_\br_\br_\be_\bn_\bt _\bj_\bo_\bb
-              is used.  The return value is that of the  command  placed  into
-              the  foreground,  or failure if run when job control is disabled
+              is  used.   The  return value is that of the command placed into
+              the foreground, or failure if run when job control  is  disabled
               or, when run with job control enabled, if _\bj_\bo_\bb_\bs_\bp_\be_\bc does not spec-
-              ify  a  valid  job  or  _\bj_\bo_\bb_\bs_\bp_\be_\bc specifies a job that was started
+              ify a valid job or _\bj_\bo_\bb_\bs_\bp_\be_\bc specifies  a  job  that  was  started
               without job control.
 
        g\bge\bet\bto\bop\bpt\bts\bs _\bo_\bp_\bt_\bs_\bt_\br_\bi_\bn_\bg _\bn_\ba_\bm_\be [_\ba_\br_\bg_\bs]
-              g\bge\bet\bto\bop\bpt\bts\bis used by shell procedures to parse positional  parame-
-              ters.   _\bo_\bp_\bt_\bs_\bt_\br_\bi_\bn_\bg  contains  the  option characters to be recog-
-              nized; if a character is followed by  a  colon,  the  option  is
-              expected  to have an argument, which should be separated from it
-              by white space.  The colon and question mark characters may  not
-              be  used as option characters.  Each time it is invoked, g\bge\bet\bto\bop\bpt\bts\bs
-              places the next option in the shell variable _\bn_\ba_\bm_\be,  initializing
+              g\bge\bet\bto\bop\bpt\bts\b is used by shell procedures to parse positional parame-
+              ters.  _\bo_\bp_\bt_\bs_\bt_\br_\bi_\bn_\bg contains the option  characters  to  be  recog-
+              nized;  if  a  character  is  followed by a colon, the option is
+              expected to have an argument, which should be separated from  it
+              by  white space.  The colon and question mark characters may not
+              be used as option characters.  Each time it is invoked,  g\bge\bet\bto\bop\bpt\bts\bs
+              places  the next option in the shell variable _\bn_\ba_\bm_\be, initializing
               _\bn_\ba_\bm_\be if it does not exist, and the index of the next argument to
               be processed into the variable O\bOP\bPT\bTI\bIN\bND\bD.  O\bOP\bPT\bTI\bIN\bND\bD is initialized to
-              1  each  time  the  shell or a shell script is invoked.  When an
-              option requires an argument, g\bge\bet\bto\bop\bpt\bts\bs places that  argument  into
-              the  variable O\bOP\bPT\bTA\bAR\bRG\bG.  The shell does not reset O\bOP\bPT\bTI\bIN\bND\bD automati-
-              cally; it must be  manually  reset  between  multiple  calls  to
+              1 each time the shell or a shell script  is  invoked.   When  an
+              option  requires  an argument, g\bge\bet\bto\bop\bpt\bts\bs places that argument into
+              the variable O\bOP\bPT\bTA\bAR\bRG\bG.  The shell does not reset O\bOP\bPT\bTI\bIN\bND\b automati-
+              cally;  it  must  be  manually  reset  between multiple calls to
               g\bge\bet\bto\bop\bpt\bts\bs within the same shell invocation if a new set of parame-
               ters is to be used.
 
-              When the end of options is encountered,  g\bge\bet\bto\bop\bpt\bts\bs  exits  with  a
-              return  value  greater than zero.  O\bOP\bPT\bTI\bIN\bND\bD is set to the index of
+              When  the  end  of  options is encountered, g\bge\bet\bto\bop\bpt\bts\bs exits with a
+              return value greater than zero.  O\bOP\bPT\bTI\bIN\bND\bD is set to the  index  of
               the first non-option argument, and n\bna\bam\bme\be is set to ?.
 
-              g\bge\bet\bto\bop\bpt\bts\bnormally parses the positional parameters, but  if  more
+              g\bge\bet\bto\bop\bpt\bts\b normally  parses the positional parameters, but if more
               arguments are given in _\ba_\br_\bg_\bs, g\bge\bet\bto\bop\bpt\bts\bs parses those instead.
 
-              g\bge\bet\bto\bop\bpt\bts\b can  report errors in two ways.  If the first character
-              of _\bo_\bp_\bt_\bs_\bt_\br_\bi_\bn_\bg is a colon, _\bs_\bi_\bl_\be_\bn_\bt error  reporting  is  used.   In
-              normal  operation  diagnostic  messages are printed when invalid
-              options or missing option arguments  are  encountered.   If  the
-              variable  O\bOP\bPT\bTE\bER\bRR\bR  is  set  to  0, no error messages will be dis-
+              g\bge\bet\bto\bop\bpt\bts\bcan report errors in two ways.  If the  first  character
+              of  _\bo_\bp_\bt_\bs_\bt_\br_\bi_\bn_\bg  is  a  colon, _\bs_\bi_\bl_\be_\bn_\bt error reporting is used.  In
+              normal operation diagnostic messages are  printed  when  invalid
+              options  or  missing  option  arguments are encountered.  If the
+              variable O\bOP\bPT\bTE\bER\bRR\bR is set to 0, no  error  messages  will  be  dis-
               played, even if the first character of _\bo_\bp_\bt_\bs_\bt_\br_\bi_\bn_\bg is not a colon.
 
               If an invalid option is seen, g\bge\bet\bto\bop\bpt\bts\bs places ? into _\bn_\ba_\bm_\be and, if
-              not silent, prints an  error  message  and  unsets  O\bOP\bPT\bTA\bAR\bRG\bG.   If
-              g\bge\bet\bto\bop\bpt\bts\b is  silent,  the  option  character  found is placed in
+              not  silent,  prints  an  error  message  and unsets O\bOP\bPT\bTA\bAR\bRG\bG.  If
+              g\bge\bet\bto\bop\bpt\bts\bis silent, the  option  character  found  is  placed  in
               O\bOP\bPT\bTA\bAR\bRG\bG and no diagnostic message is printed.
 
-              If a required argument is not found, and g\bge\bet\bto\bop\bpt\bts\bs is not  silent,
-              a  question  mark  (?\b?) is placed in _\bn_\ba_\bm_\be, O\bOP\bPT\bTA\bAR\bRG\bG is unset, and a
-              diagnostic message is printed.  If g\bge\bet\bto\bop\bpt\bts\bs  is  silent,  then  a
-              colon  (:\b:)  is  placed  in  _\bn_\ba_\bm_\be and O\bOP\bPT\bTA\bAR\bRG\bG is set to the option
+              If  a required argument is not found, and g\bge\bet\bto\bop\bpt\bts\bs is not silent,
+              a question mark (?\b?) is placed in _\bn_\ba_\bm_\be, O\bOP\bPT\bTA\bAR\bRG\bG is  unset,  and  a
+              diagnostic  message  is  printed.   If g\bge\bet\bto\bop\bpt\bts\bs is silent, then a
+              colon (:\b:) is placed in _\bn_\ba_\bm_\be and O\bOP\bPT\bTA\bAR\bRG\bG  is  set  to  the  option
               character found.
 
-              g\bge\bet\bto\bop\bpt\bts\breturns true if an option, specified or unspecified,  is
+              g\bge\bet\bto\bop\bpt\bts\b returns true if an option, specified or unspecified, is
               found.  It returns false if the end of options is encountered or
               an error occurs.
 
        h\bha\bas\bsh\bh [-\b-l\blr\br] [-\b-p\bp _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be] [-\b-d\bdt\bt] [_\bn_\ba_\bm_\be]
-              For each _\bn_\ba_\bm_\be, the full file name of the command  is  determined
+              For  each  _\bn_\ba_\bm_\be, the full file name of the command is determined
               by searching the directories in $\b$P\bPA\bAT\bTH\bH and remembered.  If the -\b-p\bp
               option is supplied, no path search is performed, and _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be is
               used as the full file name of the command.  The -\b-r\br option causes
-              the shell to forget all remembered  locations.   The  -\b-d\b option
+              the  shell  to  forget  all remembered locations.  The -\b-d\bd option
               causes the shell to forget the remembered location of each _\bn_\ba_\bm_\be.
-              If the -\b-t\bt option is supplied, the full pathname  to  which  each
-              _\bn_\ba_\bm_\b corresponds  is  printed.   If multiple _\bn_\ba_\bm_\be arguments are
-              supplied with -\b-t\bt, the _\bn_\ba_\bm_\be is printed  before  the  hashed  full
+              If  the  -\b-t\bt  option is supplied, the full pathname to which each
+              _\bn_\ba_\bm_\bcorresponds is printed.  If  multiple  _\bn_\ba_\bm_\be  arguments  are
+              supplied  with  -\b-t\bt,  the  _\bn_\ba_\bm_\be is printed before the hashed full
               pathname.  The -\b-l\bl option causes output to be displayed in a for-
-              mat that may be reused as input.  If no arguments are given,  or
+              mat  that may be reused as input.  If no arguments are given, or
               if only -\b-l\bl is supplied, information about remembered commands is
-              printed.  The return status is true unless a _\bn_\ba_\bm_\be is  not  found
+              printed.   The  return status is true unless a _\bn_\ba_\bm_\be is not found
               or an invalid option is supplied.
 
        h\bhe\bel\blp\bp [-\b-s\bs] [_\bp_\ba_\bt_\bt_\be_\br_\bn]
-              Display  helpful information about builtin commands.  If _\bp_\ba_\bt_\bt_\be_\br_\bn
-              is specified, h\bhe\bel\blp\bp gives detailed help on all commands  matching
-              _\bp_\ba_\bt_\bt_\be_\br_\bn;  otherwise  help for all the builtins and shell control
-              structures is printed.  The -\b-s\bs option restricts the  information
-              displayed  to  a  short  usage synopsis.  The return status is 0
+              Display helpful information about builtin commands.  If  _\bp_\ba_\bt_\bt_\be_\br_\bn
+              is  specified, h\bhe\bel\blp\bp gives detailed help on all commands matching
+              _\bp_\ba_\bt_\bt_\be_\br_\bn; otherwise help for all the builtins and  shell  control
+              structures  is printed.  The -\b-s\bs option restricts the information
+              displayed to a short usage synopsis.  The  return  status  is  0
               unless no command matches _\bp_\ba_\bt_\bt_\be_\br_\bn.
 
        h\bhi\bis\bst\bto\bor\bry\by [\b[_\bn]\b]
@@ -592,41 +597,41 @@ B\bBA\bAS\bSH\bH B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
        h\bhi\bis\bst\bto\bor\bry\by -\b-s\bs _\ba_\br_\bg [_\ba_\br_\bg _\b._\b._\b.]
               With no options, display the command history list with line num-
               bers.  Lines listed with a *\b* have been modified.  An argument of
-              _\blists only the last _\bn lines.  If the shell variable  H\bHI\bIS\bST\bTT\bTI\bIM\bME\bE-\b-
-              F\bFO\bOR\bRM\bMA\bAT\b is  set  and not null, it is used as a format string for
-              _\bs_\bt_\br_\bf_\bt_\bi_\bm_\be(3) to display the time stamp associated with each  dis-
-              played  history  entry.  No intervening blank is printed between
-              the formatted time stamp and the history line.  If  _\bf_\bi_\bl_\be_\bn_\ba_\bm_\b is
-              supplied,  it  is  used as the name of the history file; if not,
-              the value of H\bHI\bIS\bST\bTF\bFI\bIL\bLE\bE is used.  Options, if supplied,  have  the
+              _\b lists only the last _\bn lines.  If the shell variable H\bHI\bIS\bST\bTT\bTI\bIM\bME\bE-\b-
+              F\bFO\bOR\bRM\bMA\bAT\bis set and not null, it is used as a  format  string  for
+              _\bs_\bt_\br_\bf_\bt_\bi_\bm_\be(3)  to display the time stamp associated with each dis-
+              played history entry.  No intervening blank is  printed  between
+              the  formatted  time stamp and the history line.  If _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be is
+              supplied, it is used as the name of the history  file;  if  not,
+              the  value  of H\bHI\bIS\bST\bTF\bFI\bIL\bLE\bE is used.  Options, if supplied, have the
               following meanings:
               -\b-c\bc     Clear the history list by deleting all the entries.
               -\b-d\bd _\bo_\bf_\bf_\bs_\be_\bt
                      Delete the history entry at position _\bo_\bf_\bf_\bs_\be_\bt.
-              -\b-a\ba     Append  the  ``new'' history lines (history lines entered
-                     since the beginning of the current b\bba\bas\bsh\bh session)  to  the
+              -\b-a\ba     Append the ``new'' history lines (history  lines  entered
+                     since  the  beginning of the current b\bba\bas\bsh\bh session) to the
                      history file.
-              -\b-n\bn     Read  the history lines not already read from the history
-                     file into the current  history  list.   These  are  lines
-                     appended  to  the history file since the beginning of the
+              -\b-n\bn     Read the history lines not already read from the  history
+                     file  into  the  current  history  list.  These are lines
+                     appended to the history file since the beginning  of  the
                      current b\bba\bas\bsh\bh session.
               -\b-r\br     Read the contents of the history file and use them as the
                      current history.
-              -\b-w\bw     Write  the current history to the history file, overwrit-
+              -\b-w\bw     Write the current history to the history file,  overwrit-
                      ing the history file's contents.
-              -\b-p\bp     Perform history substitution on the  following  _\ba_\br_\bg_\b and
-                     display  the  result  on  the  standard output.  Does not
-                     store the results in the history list.  Each _\ba_\br_\bg must  be
+              -\b-p\bp     Perform  history  substitution  on the following _\ba_\br_\bg_\bs and
+                     display the result on  the  standard  output.   Does  not
+                     store  the results in the history list.  Each _\ba_\br_\bg must be
                      quoted to disable normal history expansion.
-              -\b-s\bs     Store  the  _\ba_\br_\bg_\bs  in  the history list as a single entry.
-                     The last command in the history list  is  removed  before
+              -\b-s\bs     Store the _\ba_\br_\bg_\bs in the history list  as  a  single  entry.
+                     The  last  command  in the history list is removed before
                      the _\ba_\br_\bg_\bs are added.
 
               If the H\bHI\bIS\bST\bTT\bTI\bIM\bME\bEF\bFO\bOR\bRM\bMA\bAT\bT is set, the time stamp information associ-
-              ated with each history entry is written  to  the  history  file.
-              The  return  value is 0 unless an invalid option is encountered,
-              an error occurs while reading or writing the  history  file,  an
-              invalid  _\bo_\bf_\bf_\bs_\be_\bt is supplied as an argument to -\b-d\bd, or the history
+              ated  with  each  history  entry is written to the history file.
+              The return value is 0 unless an invalid option  is  encountered,
+              an  error  occurs  while reading or writing the history file, an
+              invalid _\bo_\bf_\bf_\bs_\be_\bt is supplied as an argument to -\b-d\bd, or the  history
               expansion supplied as an argument to -\b-p\bp fails.
 
        j\bjo\bob\bbs\bs [-\b-l\bln\bnp\bpr\brs\bs] [ _\bj_\bo_\bb_\bs_\bp_\be_\bc ... ]
@@ -634,144 +639,144 @@ B\bBA\bAS\bSH\bH B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
               The first form lists the active jobs.  The options have the fol-
               lowing meanings:
               -\b-l\bl     List process IDs in addition to the normal information.
-              -\b-p\bp     List  only  the  process  ID  of  the job's process group
+              -\b-p\bp     List only the process  ID  of  the  job's  process  group
                      leader.
-              -\b-n\bn     Display information only about  jobs  that  have  changed
-                     status  since the user was last notified of their status.
+              -\b-n\bn     Display  information  only  about  jobs that have changed
+                     status since the user was last notified of their  status.
               -\b-r\br     Restrict output to running jobs.
               -\b-s\bs     Restrict output to stopped jobs.
 
-              If _\bj_\bo_\bb_\bs_\bp_\be_\bc is given, output is restricted to  information  about
-              that  job.   The  return status is 0 unless an invalid option is
+              If  _\bj_\bo_\bb_\bs_\bp_\be_\bc  is given, output is restricted to information about
+              that job.  The return status is 0 unless an  invalid  option  is
               encountered or an invalid _\bj_\bo_\bb_\bs_\bp_\be_\bc is supplied.
 
               If the -\b-x\bx option is supplied, j\bjo\bob\bbs\bs replaces any _\bj_\bo_\bb_\bs_\bp_\be_\bc found in
-              _\bc_\bo_\bm_\bm_\ba_\bn_\b or  _\ba_\br_\bg_\bs  with  the corresponding process group ID, and
+              _\bc_\bo_\bm_\bm_\ba_\bn_\bor _\ba_\br_\bg_\bs with the corresponding  process  group  ID,  and
               executes _\bc_\bo_\bm_\bm_\ba_\bn_\bd passing it _\ba_\br_\bg_\bs, returning its exit status.
 
        k\bki\bil\bll\bl [-\b-s\bs _\bs_\bi_\bg_\bs_\bp_\be_\bc | -\b-n\bn _\bs_\bi_\bg_\bn_\bu_\bm | -\b-_\bs_\bi_\bg_\bs_\bp_\be_\bc] [_\bp_\bi_\bd | _\bj_\bo_\bb_\bs_\bp_\be_\bc] ...
        k\bki\bil\bll\bl -\b-l\bl [_\bs_\bi_\bg_\bs_\bp_\be_\bc | _\be_\bx_\bi_\bt_\b__\bs_\bt_\ba_\bt_\bu_\bs]
-              Send the signal named by _\bs_\bi_\bg_\bs_\bp_\be_\bc  or  _\bs_\bi_\bg_\bn_\bu_\bm  to  the  processes
-              named  by  _\bp_\bi_\bd or _\bj_\bo_\bb_\bs_\bp_\be_\bc.  _\bs_\bi_\bg_\bs_\bp_\be_\bc is either a case-insensitive
-              signal name such as S\bSI\bIG\bGK\bKI\bIL\bLL\bL (with or without the S\bSI\bIG\bG prefix)  or
-              a  signal  number; _\bs_\bi_\bg_\bn_\bu_\bm is a signal number.  If _\bs_\bi_\bg_\bs_\bp_\be_\bc is not
-              present, then S\bSI\bIG\bGT\bTE\bER\bRM\bM is assumed.  An argument of -\b-l\bl  lists  the
-              signal  names.   If any arguments are supplied when -\b-l\bl is given,
-              the names of the signals  corresponding  to  the  arguments  are
+              Send  the  signal  named  by  _\bs_\bi_\bg_\bs_\bp_\be_\bc or _\bs_\bi_\bg_\bn_\bu_\bm to the processes
+              named by _\bp_\bi_\bd or _\bj_\bo_\bb_\bs_\bp_\be_\bc.  _\bs_\bi_\bg_\bs_\bp_\be_\bc is either  a  case-insensitive
+              signal  name such as S\bSI\bIG\bGK\bKI\bIL\bLL\bL (with or without the S\bSI\bIG\bG prefix) or
+              a signal number; _\bs_\bi_\bg_\bn_\bu_\bm is a signal number.  If _\bs_\bi_\bg_\bs_\bp_\be_\bc  is  not
+              present,  then  S\bSI\bIG\bGT\bTE\bER\bRM\bM is assumed.  An argument of -\b-l\bl lists the
+              signal names.  If any arguments are supplied when -\b-l\bl  is  given,
+              the  names  of  the  signals  corresponding to the arguments are
               listed, and the return status is 0.  The _\be_\bx_\bi_\bt_\b__\bs_\bt_\ba_\bt_\bu_\bs argument to
-              -\b-l\bis a number specifying either a signal  number  or  the  exit
-              status  of  a process terminated by a signal.  k\bki\bil\bll\bl returns true
-              if at least one signal was successfully sent,  or  false  if  an
+              -\b-l\b is  a  number  specifying either a signal number or the exit
+              status of a process terminated by a signal.  k\bki\bil\bll\bl  returns  true
+              if  at  least  one  signal was successfully sent, or false if an
               error occurs or an invalid option is encountered.
 
        l\ble\bet\bt _\ba_\br_\bg [_\ba_\br_\bg ...]
               Each _\ba_\br_\bg is an arithmetic expression to be evaluated (see A\bAR\bRI\bIT\bTH\bH-\b-
-              M\bME\bET\bTI\bIC\bE\bEV\bVA\bAL\bLU\bUA\bAT\bTI\bIO\bON\bN).  If the last _\ba_\br_\bg evaluates to 0, l\ble\bet\b returns
+              M\bME\bET\bTI\bIC\b E\bEV\bVA\bAL\bLU\bUA\bAT\bTI\bIO\bON\bN).  If the last _\ba_\br_\bg evaluates to 0, l\ble\bet\bt returns
               1; 0 is returned otherwise.
 
        l\blo\boc\bca\bal\bl [_\bo_\bp_\bt_\bi_\bo_\bn] [_\bn_\ba_\bm_\be[=_\bv_\ba_\bl_\bu_\be] ...]
-              For  each  argument, a local variable named _\bn_\ba_\bm_\be is created, and
-              assigned _\bv_\ba_\bl_\bu_\be.  The _\bo_\bp_\bt_\bi_\bo_\bn can be any of the  options  accepted
+              For each argument, a local variable named _\bn_\ba_\bm_\be is  created,  and
+              assigned  _\bv_\ba_\bl_\bu_\be.   The _\bo_\bp_\bt_\bi_\bo_\bn can be any of the options accepted
               by d\bde\bec\bcl\bla\bar\bre\be.  When l\blo\boc\bca\bal\bl is used within a function, it causes the
-              variable _\bn_\ba_\bm_\be to have a visible scope restricted to  that  func-
+              variable  _\bn_\ba_\bm_\be  to have a visible scope restricted to that func-
               tion and its children.  With no operands, l\blo\boc\bca\bal\bl writes a list of
-              local variables to the standard output.  It is an error  to  use
+              local  variables  to the standard output.  It is an error to use
               l\blo\boc\bca\bal\bl when not within a function.  The return status is 0 unless
-              l\blo\boc\bca\bal\bis used outside a function, an invalid _\bn_\ba_\bm_\be  is  supplied,
+              l\blo\boc\bca\bal\b is  used outside a function, an invalid _\bn_\ba_\bm_\be is supplied,
               or _\bn_\ba_\bm_\be is a readonly variable.
 
        l\blo\bog\bgo\bou\but\bt Exit a login shell.
 
        p\bpo\bop\bpd\bd [-n\bn] [+_\bn] [-_\bn]
-              Removes  entries  from  the directory stack.  With no arguments,
-              removes the top directory from the stack, and performs a  c\bcd\b to
+              Removes entries from the directory stack.   With  no  arguments,
+              removes  the  top directory from the stack, and performs a c\bcd\bd to
               the new top directory.  Arguments, if supplied, have the follow-
               ing meanings:
-              +\b+_\bn     Removes the _\bnth entry counting from the left of the  list
-                     shown  by  d\bdi\bir\brs\bs, starting with zero.  For example: ``popd
+              +\b+_\bn     Removes  the _\bnth entry counting from the left of the list
+                     shown by d\bdi\bir\brs\bs, starting with zero.  For  example:  ``popd
                      +0'' removes the first directory, ``popd +1'' the second.
               -\b-_\bn     Removes the _\bnth entry counting from the right of the list
-                     shown by d\bdi\bir\brs\bs, starting with zero.  For  example:  ``popd
-                     -0''  removes the last directory, ``popd -1'' the next to
+                     shown  by  d\bdi\bir\brs\bs, starting with zero.  For example: ``popd
+                     -0'' removes the last directory, ``popd -1'' the next  to
                      last.
-              -\b-n\bn     Suppresses the normal change of directory  when  removing
-                     directories  from  the  stack,  so that only the stack is
+              -\b-n\bn     Suppresses  the  normal change of directory when removing
+                     directories from the stack, so that  only  the  stack  is
                      manipulated.
 
-              If the p\bpo\bop\bpd\bd command is successful, a d\bdi\bir\brs\bs is performed as  well,
-              and  the  return  status is 0.  p\bpo\bop\bpd\bd returns false if an invalid
+              If  the p\bpo\bop\bpd\bd command is successful, a d\bdi\bir\brs\bs is performed as well,
+              and the return status is 0.  p\bpo\bop\bpd\bd returns false  if  an  invalid
               option is encountered, the directory stack is empty, a non-exis-
               tent directory stack entry is specified, or the directory change
               fails.
 
        p\bpr\bri\bin\bnt\btf\bf _\bf_\bo_\br_\bm_\ba_\bt [_\ba_\br_\bg_\bu_\bm_\be_\bn_\bt_\bs]
-              Write the formatted _\ba_\br_\bg_\bu_\bm_\be_\bn_\bt_\bs to the standard output  under  the
-              control  of  the _\bf_\bo_\br_\bm_\ba_\bt.  The _\bf_\bo_\br_\bm_\ba_\bt is a character string which
-              contains three types of objects:  plain  characters,  which  are
-              simply  copied  to  standard output, character escape sequences,
-              which are converted and copied to the standard output, and  for-
-              mat  specifications,  each  of which causes printing of the next
+              Write  the  formatted _\ba_\br_\bg_\bu_\bm_\be_\bn_\bt_\bs to the standard output under the
+              control of the _\bf_\bo_\br_\bm_\ba_\bt.  The _\bf_\bo_\br_\bm_\ba_\bt is a character  string  which
+              contains  three  types  of  objects: plain characters, which are
+              simply copied to standard output,  character  escape  sequences,
+              which  are converted and copied to the standard output, and for-
+              mat specifications, each of which causes printing  of  the  next
               successive _\ba_\br_\bg_\bu_\bm_\be_\bn_\bt.  In addition to the standard _\bp_\br_\bi_\bn_\bt_\bf(1) for-
-              mats,  %\b%b\bb  causes p\bpr\bri\bin\bnt\btf\bf to expand backslash escape sequences in
-              the corresponding _\ba_\br_\bg_\bu_\bm_\be_\bn_\bt (except that  \\b\c\bc  terminates  output,
+              mats, %\b%b\bb causes p\bpr\bri\bin\bnt\btf\bf to expand backslash escape  sequences  in
+              the  corresponding  _\ba_\br_\bg_\bu_\bm_\be_\bn_\bt  (except that \\b\c\bc terminates output,
               backslashes in \\b\'\b', \\b\"\b", and \\b\?\b? are not removed, and octal escapes
-              beginning with \\b\0\b0 may contain up to four digits), and %\b%q\b causes
+              beginning  with \\b\0\b0 may contain up to four digits), and %\b%q\bq causes
               p\bpr\bri\bin\bnt\btf\bf to output the corresponding _\ba_\br_\bg_\bu_\bm_\be_\bn_\bt in a format that can
               be reused as shell input.
 
-              The _\bf_\bo_\br_\bm_\ba_\bt is reused as necessary to consume all  of  the  _\ba_\br_\bg_\bu_\b-
+              The  _\bf_\bo_\br_\bm_\ba_\bt  is  reused as necessary to consume all of the _\ba_\br_\bg_\bu_\b-
               _\bm_\be_\bn_\bt_\bs.  If the _\bf_\bo_\br_\bm_\ba_\bt requires more _\ba_\br_\bg_\bu_\bm_\be_\bn_\bt_\bs than are supplied,
-              the extra format specifications behave as if  a  zero  value  or
-              null  string,  as  appropriate,  had  been supplied.  The return
+              the  extra  format  specifications  behave as if a zero value or
+              null string, as appropriate,  had  been  supplied.   The  return
               value is zero on success, non-zero on failure.
 
        p\bpu\bus\bsh\bhd\bd [-\b-n\bn] [_\bd_\bi_\br]
        p\bpu\bus\bsh\bhd\bd [-\b-n\bn] [+_\bn] [-_\bn]
-              Adds a directory to the top of the directory stack,  or  rotates
-              the  stack,  making the new top of the stack the current working
+              Adds  a  directory to the top of the directory stack, or rotates
+              the stack, making the new top of the stack the  current  working
               directory.  With no arguments, exchanges the top two directories
-              and  returns 0, unless the directory stack is empty.  Arguments,
+              and returns 0, unless the directory stack is empty.   Arguments,
               if supplied, have the following meanings:
-              +\b+_\bn     Rotates the stack so that  the  _\bnth  directory  (counting
-                     from  the  left  of the list shown by d\bdi\bir\brs\bs, starting with
+              +\b+_\bn     Rotates  the  stack  so  that the _\bnth directory (counting
+                     from the left of the list shown by  d\bdi\bir\brs\bs,  starting  with
                      zero) is at the top.
-              -\b-_\bn     Rotates the stack so that  the  _\bnth  directory  (counting
-                     from  the  right of the list shown by d\bdi\bir\brs\bs, starting with
+              -\b-_\bn     Rotates  the  stack  so  that the _\bnth directory (counting
+                     from the right of the list shown by d\bdi\bir\brs\bs,  starting  with
                      zero) is at the top.
-              -\b-n\bn     Suppresses the normal change  of  directory  when  adding
-                     directories  to  the  stack,  so  that  only the stack is
+              -\b-n\bn     Suppresses  the  normal  change  of directory when adding
+                     directories to the stack,  so  that  only  the  stack  is
                      manipulated.
               _\bd_\bi_\br    Adds _\bd_\bi_\br to the directory stack at the top, making it the
                      new current working directory.
 
               If the p\bpu\bus\bsh\bhd\bd command is successful, a d\bdi\bir\brs\bs is performed as well.
-              If the first form is used, p\bpu\bus\bsh\bhd\bd returns 0 unless the cd to  _\bd_\bi_\br
-              fails.   With the second form, p\bpu\bus\bsh\bhd\bd returns 0 unless the direc-
-              tory stack is empty, a non-existent directory stack  element  is
-              specified,  or the directory change to the specified new current
+              If  the first form is used, p\bpu\bus\bsh\bhd\bd returns 0 unless the cd to _\bd_\bi_\br
+              fails.  With the second form, p\bpu\bus\bsh\bhd\bd returns 0 unless the  direc-
+              tory  stack  is empty, a non-existent directory stack element is
+              specified, or the directory change to the specified new  current
               directory fails.
 
        p\bpw\bwd\bd [-\b-L\bLP\bP]
-              Print the absolute pathname of the  current  working  directory.
+              Print  the  absolute  pathname of the current working directory.
               The pathname printed contains no symbolic links if the -\b-P\bP option
               is supplied or the -\b-o\bo p\bph\bhy\bys\bsi\bic\bca\bal\bl option to the s\bse\bet\bt builtin command
-              is  enabled.  If the -\b-L\bL option is used, the pathname printed may
-              contain symbolic links.  The return status is 0 unless an  error
-              occurs  while  reading  the  name of the current directory or an
+              is enabled.  If the -\b-L\bL option is used, the pathname printed  may
+              contain  symbolic links.  The return status is 0 unless an error
+              occurs while reading the name of the  current  directory  or  an
               invalid option is supplied.
 
        r\bre\bea\bad\bd [-\b-e\ber\brs\bs] [-\b-u\bu _\bf_\bd] [-\b-t\bt _\bt_\bi_\bm_\be_\bo_\bu_\bt] [-\b-a\ba _\ba_\bn_\ba_\bm_\be] [-\b-p\bp _\bp_\br_\bo_\bm_\bp_\bt] [-\b-n\bn _\bn_\bc_\bh_\ba_\br_\bs] [-\b-d\bd
        _\bd_\be_\bl_\bi_\bm] [_\bn_\ba_\bm_\be ...]
-              One line is read from the  standard  input,  or  from  the  file
-              descriptor  _\bf_\bd supplied as an argument to the -\b-u\bu option, and the
+              One  line  is  read  from  the  standard input, or from the file
+              descriptor _\bf_\bd supplied as an argument to the -\b-u\bu option, and  the
               first word is assigned to the first _\bn_\ba_\bm_\be, the second word to the
-              second  _\bn_\ba_\bm_\be, and so on, with leftover words and their interven-
-              ing separators assigned to the last _\bn_\ba_\bm_\be.  If  there  are  fewer
+              second _\bn_\ba_\bm_\be, and so on, with leftover words and their  interven-
+              ing  separators  assigned  to the last _\bn_\ba_\bm_\be.  If there are fewer
               words read from the input stream than names, the remaining names
-              are assigned empty values.  The characters in I\bIF\bFS\bS  are  used  to
-              split  the  line into words.  The backslash character (\\b\) may be
-              used to remove any special meaning for the next  character  read
-              and  for line continuation.  Options, if supplied, have the fol-
+              are  assigned  empty  values.  The characters in I\bIF\bFS\bS are used to
+              split the line into words.  The backslash character (\\b\)  may  be
+              used  to  remove any special meaning for the next character read
+              and for line continuation.  Options, if supplied, have the  fol-
               lowing meanings:
               -\b-a\ba _\ba_\bn_\ba_\bm_\be
                      The words are assigned to sequential indices of the array
@@ -779,98 +784,98 @@ B\bBA\bAS\bSH\bH B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
                      new  values  are  assigned.   Other  _\bn_\ba_\bm_\be  arguments  are
                      ignored.
               -\b-d\bd _\bd_\be_\bl_\bi_\bm
-                     The  first  character  of  _\bd_\be_\bl_\bi_\bm is used to terminate the
+                     The first character of _\bd_\be_\bl_\bi_\bm is  used  to  terminate  the
                      input line, rather than newline.
               -\b-e\be     If the standard input is coming from a terminal, r\bre\bea\bad\bdl\bli\bin\bne\be
                      (see R\bRE\bEA\bAD\bDL\bLI\bIN\bNE\bE above) is used to obtain the line.
               -\b-n\bn _\bn_\bc_\bh_\ba_\br_\bs
-                     r\bre\bea\bad\b returns after reading _\bn_\bc_\bh_\ba_\br_\bs characters rather than
+                     r\bre\bea\bad\breturns after reading _\bn_\bc_\bh_\ba_\br_\bs characters rather  than
                      waiting for a complete line of input.
               -\b-p\bp _\bp_\br_\bo_\bm_\bp_\bt
                      Display _\bp_\br_\bo_\bm_\bp_\bt on standard error, without a trailing new-
                      line, before attempting to read any input.  The prompt is
                      displayed only if input is coming from a terminal.
               -\b-r\br     Backslash does not act as an escape character.  The back-
-                     slash  is considered to be part of the line.  In particu-
-                     lar, a backslash-newline pair may not be used as  a  line
+                     slash is considered to be part of the line.  In  particu-
+                     lar,  a  backslash-newline pair may not be used as a line
                      continuation.
               -\b-s\bs     Silent mode.  If input is coming from a terminal, charac-
                      ters are not echoed.
               -\b-t\bt _\bt_\bi_\bm_\be_\bo_\bu_\bt
-                     Cause r\bre\bea\bad\bd to time out and return failure if  a  complete
-                     line  of  input is not read within _\bt_\bi_\bm_\be_\bo_\bu_\bt seconds.  This
-                     option has no effect if r\bre\bea\bad\bd is not  reading  input  from
+                     Cause  r\bre\bea\bad\bd  to time out and return failure if a complete
+                     line of input is not read within _\bt_\bi_\bm_\be_\bo_\bu_\bt  seconds.   This
+                     option  has  no  effect if r\bre\bea\bad\bd is not reading input from
                      the terminal or a pipe.
               -\b-u\bu _\bf_\bd  Read input from file descriptor _\bf_\bd.
 
               If no _\bn_\ba_\bm_\be_\bs are supplied, the line read is assigned to the vari-
-              able R\bRE\bEP\bPL\bLY\bY.  The return code  is  zero,  unless  end-of-file  is
-              encountered,  r\bre\bea\bad\bd  times  out, or an invalid file descriptor is
+              able  R\bRE\bEP\bPL\bLY\bY.   The  return  code  is zero, unless end-of-file is
+              encountered, r\bre\bea\bad\bd times out, or an invalid  file  descriptor  is
               supplied as the argument to -\b-u\bu.
 
        r\bre\bea\bad\bdo\bon\bnl\bly\by [-\b-a\bap\bpf\bf] [_\bn_\ba_\bm_\be[=_\bw_\bo_\br_\bd] ...]
-              The given _\bn_\ba_\bm_\be_\bs are marked readonly; the values of  these  _\bn_\ba_\bm_\be_\bs
-              may  not  be changed by subsequent assignment.  If the -\b-f\bf option
-              is supplied, the functions corresponding to  the  _\bn_\ba_\bm_\be_\bs  are  so
+              The  given  _\bn_\ba_\bm_\be_\bs are marked readonly; the values of these _\bn_\ba_\bm_\be_\bs
+              may not be changed by subsequent assignment.  If the  -\b-f\b option
+              is  supplied,  the  functions  corresponding to the _\bn_\ba_\bm_\be_\bs are so
               marked.  The -\b-a\ba option restricts the variables to arrays.  If no
-              _\bn_\ba_\bm_\barguments are given, or if the -\b-p\bp  option  is  supplied,  a
-              list  of  all  readonly  names is printed.  The -\b-p\bp option causes
-              output to be displayed in a format that may be reused as  input.
-              If  a variable name is followed by =_\bw_\bo_\br_\bd, the value of the vari-
-              able is set to _\bw_\bo_\br_\bd.  The return status is 0 unless  an  invalid
-              option  is  encountered,  one  of the _\bn_\ba_\bm_\be_\bs is not a valid shell
+              _\bn_\ba_\bm_\b arguments  are  given,  or if the -\b-p\bp option is supplied, a
+              list of all readonly names is printed.   The  -\b-p\bp  option  causes
+              output  to be displayed in a format that may be reused as input.
+              If a variable name is followed by =_\bw_\bo_\br_\bd, the value of the  vari-
+              able  is  set to _\bw_\bo_\br_\bd.  The return status is 0 unless an invalid
+              option is encountered, one of the _\bn_\ba_\bm_\be_\bs is  not  a  valid  shell
               variable name, or -\b-f\bf is supplied with a _\bn_\ba_\bm_\be that is not a func-
               tion.
 
        r\bre\bet\btu\bur\brn\bn [_\bn]
-              Causes  a function to exit with the return value specified by _\bn.
-              If _\bn is omitted, the return status is that of the  last  command
-              executed  in the function body.  If used outside a function, but
-              during execution of a script by  the  .\b.   (s\bso\bou\bur\brc\bce\be)  command,  it
+              Causes a function to exit with the return value specified by  _\bn.
+              If  _\bn  is omitted, the return status is that of the last command
+              executed in the function body.  If used outside a function,  but
+              during  execution  of  a  script  by the .\b.  (s\bso\bou\bur\brc\bce\be) command, it
               causes the shell to stop executing that script and return either
-              _\bor the exit status of the last  command  executed  within  the
-              script  as  the  exit  status  of the script.  If used outside a
-              function and not during execution of a script by .\b.,  the  return
+              _\b or  the  exit  status of the last command executed within the
+              script as the exit status of the  script.   If  used  outside  a
+              function  and  not during execution of a script by .\b., the return
               status is false.  Any command associated with the R\bRE\bET\bTU\bUR\bRN\bN trap is
-              executed before execution resumes after the function or  script.
+              executed  before execution resumes after the function or script.
 
        s\bse\bet\bt [-\b--\b-a\bab\bbe\bef\bfh\bhk\bkm\bmn\bnp\bpt\btu\buv\bvx\bxB\bBC\bCH\bHP\bP] [-\b-o\bo _\bo_\bp_\bt_\bi_\bo_\bn] [_\ba_\br_\bg ...]
-              Without  options,  the name and value of each shell variable are
-              displayed in a format that can be reused as input.   The  output
-              is  sorted  according  to  the current locale.  When options are
-              specified, they set or unset shell  attributes.   Any  arguments
-              remaining  after the options are processed are treated as values
+              Without options, the name and value of each shell  variable  are
+              displayed  in  a format that can be reused as input.  The output
+              is sorted according to the current  locale.   When  options  are
+              specified,  they  set  or unset shell attributes.  Any arguments
+              remaining after the options are processed are treated as  values
               for the positional parameters and are assigned, in order, to $\b$1\b1,
-              $\b$2\b2,  .\b..\b..\b.   $\b$_\bn.   Options, if specified, have the following mean-
+              $\b$2\b2, .\b..\b..\b.  $\b$_\bn.  Options, if specified, have  the  following  mean-
               ings:
-              -\b-a\ba      Automatically mark variables  and  functions  which  are
-                      modified  or  created  for  export to the environment of
+              -\b-a\ba      Automatically  mark  variables  and  functions which are
+                      modified or created for export  to  the  environment  of
                       subsequent commands.
-              -\b-b\bb      Report the status of terminated background jobs  immedi-
+              -\b-b\bb      Report  the status of terminated background jobs immedi-
                       ately, rather than before the next primary prompt.  This
                       is effective only when job control is enabled.
-              -\b-e\be      Exit immediately if a _\bs_\bi_\bm_\bp_\bl_\be _\bc_\bo_\bm_\bm_\ba_\bn_\bd (see S\bSH\bHE\bEL\bLL\b G\bGR\bRA\bAM\bMM\bMA\bAR\bR
+              -\b-e\be      Exit  immediately if a _\bs_\bi_\bm_\bp_\bl_\be _\bc_\bo_\bm_\bm_\ba_\bn_\bd (see S\bSH\bHE\bEL\bLL\bL G\bGR\bRA\bAM\bMM\bMA\bAR\bR
                       above) exits with a non-zero status.  The shell does not
-                      exit if the command that fails is part  of  the  command
-                      list  immediately  following  a  w\bwh\bhi\bil\ble\be or u\bun\bnt\bti\bil\bl keyword,
-                      part of the test in an _\bi_\bf statement, part of a &\b&&\b& or  |\b||\b|
+                      exit  if  the  command that fails is part of the command
+                      list immediately following a  w\bwh\bhi\bil\ble\be  or  u\bun\bnt\bti\bil\b keyword,
+                      part  of the test in an _\bi_\bf statement, part of a &\b&&\b& or |\b||\b|
                       list, or if the command's return value is being inverted
-                      via !\b!.  A trap on E\bER\bRR\bR, if set, is  executed  before  the
+                      via  !\b!.   A  trap on E\bER\bRR\bR, if set, is executed before the
                       shell exits.
               -\b-f\bf      Disable pathname expansion.
-              -\b-h\bh      Remember  the location of commands as they are looked up
+              -\b-h\bh      Remember the location of commands as they are looked  up
                       for execution.  This is enabled by default.
-              -\b-k\bk      All arguments in the form of assignment  statements  are
-                      placed  in the environment for a command, not just those
+              -\b-k\bk      All  arguments  in the form of assignment statements are
+                      placed in the environment for a command, not just  those
                       that precede the command name.
-              -\b-m\bm      Monitor mode.  Job control is enabled.  This  option  is
-                      on  by  default  for  interactive shells on systems that
-                      support it (see J\bJO\bOB\bB  C\bCO\bON\bNT\bTR\bRO\bOL\bL  above).   Background  pro-
-                      cesses  run  in a separate process group and a line con-
-                      taining their exit status is printed upon their  comple-
+              -\b-m\bm      Monitor  mode.   Job control is enabled.  This option is
+                      on by default for interactive  shells  on  systems  that
+                      support  it  (see  J\bJO\bOB\bB  C\bCO\bON\bNT\bTR\bRO\bOL\bL above).  Background pro-
+                      cesses run in a separate process group and a  line  con-
+                      taining  their exit status is printed upon their comple-
                       tion.
               -\b-n\bn      Read commands but do not execute them.  This may be used
-                      to check a shell script  for  syntax  errors.   This  is
+                      to  check  a  shell  script  for syntax errors.  This is
                       ignored by interactive shells.
               -\b-o\bo _\bo_\bp_\bt_\bi_\bo_\bn_\b-_\bn_\ba_\bm_\be
                       The _\bo_\bp_\bt_\bi_\bo_\bn_\b-_\bn_\ba_\bm_\be can be one of the following:
@@ -878,7 +883,7 @@ B\bBA\bAS\bSH\bH B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
                               Same as -\b-a\ba.
                       b\bbr\bra\bac\bce\bee\bex\bxp\bpa\ban\bnd\bd
                               Same as -\b-B\bB.
-                      e\bem\bma\bac\bcs\bs   Use  an  emacs-style command line editing inter-
+                      e\bem\bma\bac\bcs\bs   Use an emacs-style command line  editing  inter-
                               face.  This is enabled by default when the shell
                               is interactive, unless the shell is started with
                               the -\b--\b-n\bno\boe\bed\bdi\bit\bti\bin\bng\bg option.
@@ -894,8 +899,8 @@ B\bBA\bAS\bSH\bH B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
                               H\bHI\bIS\bST\bTO\bOR\bRY\bY.  This option is on by default in inter-
                               active shells.
                       i\big\bgn\bno\bor\bre\bee\beo\bof\bf
-                              The  effect  is  as   if   the   shell   command
-                              ``IGNOREEOF=10''  had  been  executed (see S\bSh\bhe\bel\bll\bl
+                              The   effect   is   as   if  the  shell  command
+                              ``IGNOREEOF=10'' had been  executed  (see  S\bSh\bhe\bel\bll\bl
                               V\bVa\bar\bri\bia\bab\bbl\ble\bes\bs above).
                       k\bke\bey\byw\bwo\bor\brd\bd Same as -\b-k\bk.
                       m\bmo\bon\bni\bit\bto\bor\br Same as -\b-m\bm.
@@ -909,12 +914,12 @@ B\bBA\bAS\bSH\bH B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
                       p\bph\bhy\bys\bsi\bic\bca\bal\bl
                               Same as -\b-P\bP.
                       p\bpi\bip\bpe\bef\bfa\bai\bil\bl
-                              If set, the return value of a  pipeline  is  the
-                              value  of  the  last (rightmost) command to exit
-                              with a non-zero status, or zero if all  commands
-                              in  the pipeline exit successfully.  This option
+                              If  set,  the  return value of a pipeline is the
+                              value of the last (rightmost)  command  to  exit
+                              with  a non-zero status, or zero if all commands
+                              in the pipeline exit successfully.  This  option
                               is disabled by default.
-                      p\bpo\bos\bsi\bix\bx   Change the behavior of b\bba\bas\bsh\bh  where  the  default
+                      p\bpo\bos\bsi\bix\bx   Change  the  behavior  of b\bba\bas\bsh\bh where the default
                               operation differs from the POSIX 1003.2 standard
                               to match the standard (_\b`_\bp_\bo_\bs_\bi_\bx _\bm_\bo_\bd_\be).
                       p\bpr\bri\biv\bvi\bil\ble\beg\bge\bed\bd
@@ -923,224 +928,224 @@ B\bBA\bAS\bSH\bH B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
                       v\bvi\bi      Use a vi-style command line editing interface.
                       x\bxt\btr\bra\bac\bce\be  Same as -\b-x\bx.
                       If -\b-o\bo is supplied with no _\bo_\bp_\bt_\bi_\bo_\bn_\b-_\bn_\ba_\bm_\be, the values of the
-                      current  options are printed.  If +\b+o\bo is supplied with no
-                      _\bo_\bp_\bt_\bi_\bo_\bn_\b-_\bn_\ba_\bm_\be, a series of s\bse\bet\bt commands  to  recreate  the
-                      current  option  settings  is  displayed on the standard
+                      current options are printed.  If +\b+o\bo is supplied with  no
+                      _\bo_\bp_\bt_\bi_\bo_\bn_\b-_\bn_\ba_\bm_\be,  a  series  of s\bse\bet\bt commands to recreate the
+                      current option settings is  displayed  on  the  standard
                       output.
-              -\b-p\bp      Turn on _\bp_\br_\bi_\bv_\bi_\bl_\be_\bg_\be_\bd mode.  In this  mode,  the  $\b$E\bEN\bNV\b and
-                      $\b$B\bBA\bAS\bSH\bH_\b_E\bEN\bNV\b files  are not processed, shell functions are
-                      not inherited from the environment,  and  the  S\bSH\bHE\bEL\bLL\bLO\bOP\bPT\bTS\bS
-                      variable,  if it appears in the environment, is ignored.
-                      If the shell is started with the effective user  (group)
-                      id  not  equal  to  the real user (group) id, and the -\b-p\bp
-                      option is not supplied, these actions are taken and  the
+              -\b-p\bp      Turn  on  _\bp_\br_\bi_\bv_\bi_\bl_\be_\bg_\be_\bd  mode.   In this mode, the $\b$E\bEN\bNV\bV and
+                      $\b$B\bBA\bAS\bSH\bH_\b_E\bEN\bNV\bfiles are not processed, shell  functions  are
+                      not  inherited  from  the environment, and the S\bSH\bHE\bEL\bLL\bLO\bOP\bPT\bTS\bS
+                      variable, if it appears in the environment, is  ignored.
+                      If  the shell is started with the effective user (group)
+                      id not equal to the real user (group)  id,  and  the  -\b-p\bp
+                      option  is not supplied, these actions are taken and the
                       effective user id is set to the real user id.  If the -\b-p\bp
-                      option is supplied at startup, the effective user id  is
+                      option  is supplied at startup, the effective user id is
                       not reset.  Turning this option off causes the effective
-                      user and group ids to be set to the real user and  group
+                      user  and group ids to be set to the real user and group
                       ids.
               -\b-t\bt      Exit after reading and executing one command.
               -\b-u\bu      Treat unset variables as an error when performing param-
-                      eter expansion.  If expansion is attempted on  an  unset
+                      eter  expansion.   If expansion is attempted on an unset
                       variable, the shell prints an error message, and, if not
                       interactive, exits with a non-zero status.
               -\b-v\bv      Print shell input lines as they are read.
-              -\b-x\bx      After expanding each _\bs_\bi_\bm_\bp_\bl_\be _\bc_\bo_\bm_\bm_\ba_\bn_\bd, f\bfo\bor\br  command,  c\bca\bas\bse\be
+              -\b-x\bx      After  expanding  each _\bs_\bi_\bm_\bp_\bl_\be _\bc_\bo_\bm_\bm_\ba_\bn_\bd, f\bfo\bor\br command, c\bca\bas\bse\be
                       command, s\bse\bel\ble\bec\bct\bt command, or arithmetic f\bfo\bor\br command, dis-
-                      play the expanded value of P\bPS\bS4\b4, followed by the  command
+                      play  the expanded value of P\bPS\bS4\b4, followed by the command
                       and its expanded arguments or associated word list.
-              -\b-B\bB      The  shell performs brace expansion (see B\bBr\bra\bac\bce\be E\bEx\bxp\bpa\ban\bns\bsi\bio\bon\bn
+              -\b-B\bB      The shell performs brace expansion (see B\bBr\bra\bac\bce\b E\bEx\bxp\bpa\ban\bns\bsi\bio\bon\bn
                       above).  This is on by default.
-              -\b-C\bC      If set, b\bba\bas\bsh\bh does not overwrite an  existing  file  with
-                      the  >\b>,  >\b>&\b&,  and <\b<>\b> redirection operators.  This may be
+              -\b-C\bC      If  set,  b\bba\bas\bsh\bh  does not overwrite an existing file with
+                      the >\b>, >\b>&\b&, and <\b<>\b> redirection operators.   This  may  be
                       overridden when creating output files by using the redi-
                       rection operator >\b>|\b| instead of >\b>.
               -\b-E\bE      If set, any trap on E\bER\bRR\bR is inherited by shell functions,
-                      command substitutions, and commands executed in  a  sub-
-                      shell  environment.  The E\bER\bRR\bR trap is normally not inher-
+                      command  substitutions,  and commands executed in a sub-
+                      shell environment.  The E\bER\bRR\bR trap is normally not  inher-
                       ited in such cases.
               -\b-H\bH      Enable !\b!  style history substitution.  This option is on
                       by default when the shell is interactive.
-              -\b-P\bP      If  set,  the  shell does not follow symbolic links when
-                      executing commands such as c\bcd\bd that  change  the  current
+              -\b-P\bP      If set, the shell does not follow  symbolic  links  when
+                      executing  commands  such  as c\bcd\bd that change the current
                       working  directory.   It  uses  the  physical  directory
                       structure instead.  By default, b\bba\bas\bsh\bh follows the logical
-                      chain  of  directories  when  performing  commands which
+                      chain of  directories  when  performing  commands  which
                       change the current directory.
-              -\b-T\bT      If set, any trap on D\bDE\bEB\bBU\bUG\bG is inherited  by  shell  func-
+              -\b-T\bT      If  set,  any  trap on D\bDE\bEB\bBU\bUG\bG is inherited by shell func-
                       tions, command substitutions, and commands executed in a
-                      subshell environment.  The D\bDE\bEB\bBU\bUG\bG trap  is  normally  not
+                      subshell  environment.   The  D\bDE\bEB\bBU\bUG\bG trap is normally not
                       inherited in such cases.
-              -\b--\b-      If  no arguments follow this option, then the positional
+              -\b--\b-      If no arguments follow this option, then the  positional
                       parameters are unset.  Otherwise, the positional parame-
-                      ters  are  set  to  the _\ba_\br_\bgs, even if some of them begin
+                      ters are set to the _\ba_\br_\bgs, even if  some  of  them  begin
                       with a -\b-.
-              -\b-       Signal the end of options, cause all remaining  _\ba_\br_\bgs  to
+              -\b-       Signal  the  end of options, cause all remaining _\ba_\br_\bgs to
                       be assigned to the positional parameters.  The -\b-x\bx and -\b-v\bv
                       options are turned off.  If there are no _\ba_\br_\bgs, the posi-
                       tional parameters remain unchanged.
 
-              The  options are off by default unless otherwise noted.  Using +
-              rather than - causes  these  options  to  be  turned  off.   The
-              options  can  also be specified as arguments to an invocation of
-              the shell.  The current set of options may be found in $\b$-\b-.   The
+              The options are off by default unless otherwise noted.  Using  +
+              rather  than  -  causes  these  options  to  be turned off.  The
+              options can also be specified as arguments to an  invocation  of
+              the  shell.  The current set of options may be found in $\b$-\b-.  The
               return status is always true unless an invalid option is encoun-
               tered.
 
        s\bsh\bhi\bif\bft\bt [_\bn]
-              The positional parameters from _\bn+1 ... are renamed  to  $\b$1\b .\b..\b..\b..\b.
-              Parameters  represented  by  the  numbers  $\b$#\b# down to $\b$#\b#-_\bn+1 are
-              unset.  _\bn must be a non-negative number less than  or  equal  to
-              $\b$#\b#.   If  _\bn is 0, no parameters are changed.  If _\bn is not given,
-              it is assumed to be 1.  If _\bn is greater than $\b$#\b#, the  positional
-              parameters  are  not changed.  The return status is greater than
+              The  positional  parameters  from _\bn+1 ... are renamed to $\b$1\b1 .\b..\b..\b..\b.
+              Parameters represented by the numbers  $\b$#\b#  down  to  $\b$#\b#-_\bn+1  are
+              unset.   _\bn  must  be a non-negative number less than or equal to
+              $\b$#\b#.  If _\bn is 0, no parameters are changed.  If _\bn is  not  given,
+              it  is assumed to be 1.  If _\bn is greater than $\b$#\b#, the positional
+              parameters are not changed.  The return status is  greater  than
               zero if _\bn is greater than $\b$#\b# or less than zero; otherwise 0.
 
        s\bsh\bho\bop\bpt\bt [-\b-p\bpq\bqs\bsu\bu] [-\b-o\bo] [_\bo_\bp_\bt_\bn_\ba_\bm_\be ...]
               Toggle the values of variables controlling optional shell behav-
               ior.  With no options, or with the -\b-p\bp option, a list of all set-
               table options is displayed, with an indication of whether or not
-              each  is  set.  The -\b-p\bp option causes output to be displayed in a
-              form that may be reused as input.  Other options have  the  fol-
-              lowing meanings:
+              each is set.  The -\b-p\bp option causes output to be displayed  in  a
+              form  that  may  be  reused  as  input.   Other options have the
+              following meanings:
               -\b-s\bs     Enable (set) each _\bo_\bp_\bt_\bn_\ba_\bm_\be.
               -\b-u\bu     Disable (unset) each _\bo_\bp_\bt_\bn_\ba_\bm_\be.
-              -\b-q\bq     Suppresses  normal output (quiet mode); the return status
+              -\b-q\bq     Suppresses normal output (quiet mode); the return  status
                      indicates whether the _\bo_\bp_\bt_\bn_\ba_\bm_\be is set or unset.  If multi-
-                     ple  _\bo_\bp_\bt_\bn_\ba_\bm_\be arguments are given with -\b-q\bq, the return sta-
-                     tus is zero if all _\bo_\bp_\bt_\bn_\ba_\bm_\be_\bs are enabled; non-zero  other-
+                     ple _\bo_\bp_\bt_\bn_\ba_\bm_\be arguments are given with -\b-q\bq, the return  sta-
+                     tus  is zero if all _\bo_\bp_\bt_\bn_\ba_\bm_\be_\bs are enabled; non-zero other-
                      wise.
-              -\b-o\bo     Restricts  the  values of _\bo_\bp_\bt_\bn_\ba_\bm_\be to be those defined for
+              -\b-o\bo     Restricts the values of _\bo_\bp_\bt_\bn_\ba_\bm_\be to be those  defined  for
                      the -\b-o\bo option to the s\bse\bet\bt builtin.
 
-              If either -\b-s\bs or -\b-u\bu is used with no _\bo_\bp_\bt_\bn_\ba_\bm_\be arguments,  the  dis-
+              If  either  -\b-s\bs or -\b-u\bu is used with no _\bo_\bp_\bt_\bn_\ba_\bm_\be arguments, the dis-
               play is limited to those options which are set or unset, respec-
-              tively.  Unless otherwise noted, the s\bsh\bho\bop\bpt\bt options are  disabled
+              tively.   Unless otherwise noted, the s\bsh\bho\bop\bpt\bt options are disabled
               (unset) by default.
 
-              The  return  status when listing options is zero if all _\bo_\bp_\bt_\bn_\ba_\bm_\be_\bs
-              are enabled, non-zero  otherwise.   When  setting  or  unsetting
-              options,  the  return  status is zero unless an _\bo_\bp_\bt_\bn_\ba_\bm_\be is not a
+              The return status when listing options is zero if  all  _\bo_\bp_\bt_\bn_\ba_\bm_\be_\bs
+              are  enabled,  non-zero  otherwise.   When  setting or unsetting
+              options, the return status is zero unless an _\bo_\bp_\bt_\bn_\ba_\bm_\be  is  not  a
               valid shell option.
 
               The list of s\bsh\bho\bop\bpt\bt options is:
 
               c\bcd\bda\bab\bbl\ble\be_\b_v\bva\bar\brs\bs
-                      If set, an argument to the c\bcd\bd builtin  command  that  is
-                      not  a directory is assumed to be the name of a variable
+                      If  set,  an  argument to the c\bcd\bd builtin command that is
+                      not a directory is assumed to be the name of a  variable
                       whose value is the directory to change to.
               c\bcd\bds\bsp\bpe\bel\bll\bl If set, minor errors in the spelling of a directory com-
-                      ponent  in  a  c\bcd\bd command will be corrected.  The errors
+                      ponent in a c\bcd\bd command will be  corrected.   The  errors
                       checked for are transposed characters, a missing charac-
-                      ter,  and  one  character  too many.  If a correction is
-                      found, the corrected file name is printed, and the  com-
-                      mand  proceeds.  This option is only used by interactive
+                      ter, and one character too many.   If  a  correction  is
+                      found,  the corrected file name is printed, and the com-
+                      mand proceeds.  This option is only used by  interactive
                       shells.
               c\bch\bhe\bec\bck\bkh\bha\bas\bsh\bh
                       If set, b\bba\bas\bsh\bh checks that a command found in the hash ta-
-                      ble  exists  before  trying  to execute it.  If a hashed
-                      command no longer exists, a normal path search  is  per-
+                      ble exists before trying to execute  it.   If  a  hashed
+                      command  no  longer exists, a normal path search is per-
                       formed.
               c\bch\bhe\bec\bck\bkw\bwi\bin\bns\bsi\biz\bze\be
-                      If  set,  b\bba\bas\bsh\bh checks the window size after each command
-                      and, if necessary,  updates  the  values  of  L\bLI\bIN\bNE\bES\b and
+                      If set, b\bba\bas\bsh\bh checks the window size after  each  command
+                      and,  if  necessary,  updates  the  values  of L\bLI\bIN\bNE\bES\bS and
                       C\bCO\bOL\bLU\bUM\bMN\bNS\bS.
-              c\bcm\bmd\bdh\bhi\bis\bst\bt If  set,  b\bba\bas\bsh\bh attempts to save all lines of a multiple-
-                      line command in the same  history  entry.   This  allows
+              c\bcm\bmd\bdh\bhi\bis\bst\bt If set, b\bba\bas\bsh\bh attempts to save all lines of  a  multiple-
+                      line  command  in  the  same history entry.  This allows
                       easy re-editing of multi-line commands.
-              d\bdo\bot\btg\bgl\blo\bob\bb If  set, b\bba\bas\bsh\bh includes filenames beginning with a `.' in
+              d\bdo\bot\btg\bgl\blo\bob\bb If set, b\bba\bas\bsh\bh includes filenames beginning with a `.'  in
                       the results of pathname expansion.
               e\bex\bxe\bec\bcf\bfa\bai\bil\bl
                       If set, a non-interactive shell will not exit if it can-
-                      not  execute  the  file  specified as an argument to the
-                      e\bex\bxe\bec\bbuiltin command.  An  interactive  shell  does  not
+                      not execute the file specified as  an  argument  to  the
+                      e\bex\bxe\bec\b builtin  command.   An  interactive shell does not
                       exit if e\bex\bxe\bec\bc fails.
               e\bex\bxp\bpa\ban\bnd\bd_\b_a\bal\bli\bia\bas\bse\bes\bs
-                      If  set,  aliases  are expanded as described above under
+                      If set, aliases are expanded as  described  above  under
                       A\bAL\bLI\bIA\bAS\bSE\bES\bS.  This option is enabled by default for interac-
                       tive shells.
               e\bex\bxt\btd\bde\beb\bbu\bug\bg
-                      If  set,  behavior  intended  for  use  by  debuggers is
+                      If set,  behavior  intended  for  use  by  debuggers  is
                       enabled:
                       1\b1.\b.     The -\b-F\bF option to the d\bde\bec\bcl\bla\bar\bre\be builtin displays the
                              source file name and line number corresponding to
                              each function name supplied as an argument.
-                      2\b2.\b.     If the command run by the D\bDE\bEB\bBU\bUG\bG  trap  returns  a
-                             non-zero  value,  the next command is skipped and
+                      2\b2.\b.     If  the  command  run by the D\bDE\bEB\bBU\bUG\bG trap returns a
+                             non-zero value, the next command is  skipped  and
                              not executed.
-                      3\b3.\b.     If the command run by the D\bDE\bEB\bBU\bUG\bG  trap  returns  a
-                             value  of 2, and the shell is executing in a sub-
-                             routine (a shell function or a shell script  exe-
-                             cuted  by  the  .\b.  or s\bso\bou\bur\brc\bce\be builtins), a call to
+                      3\b3.\b.     If  the  command  run by the D\bDE\bEB\bBU\bUG\bG trap returns a
+                             value of 2, and the shell is executing in a  sub-
+                             routine  (a shell function or a shell script exe-
+                             cuted by the .\b. or s\bso\bou\bur\brc\bce\be  builtins),  a  call  to
                              r\bre\bet\btu\bur\brn\bn is simulated.
               e\bex\bxt\btg\bgl\blo\bob\bb If set, the extended pattern matching features described
                       above under P\bPa\bat\bth\bhn\bna\bam\bme\be E\bEx\bxp\bpa\ban\bns\bsi\bio\bon\bn are enabled.
               e\bex\bxt\btq\bqu\buo\bot\bte\be
-                      If  set,  $\b$'_\bs_\bt_\br_\bi_\bn_\bg'  and  $\b$"_\bs_\bt_\br_\bi_\bn_\bg" quoting is performed
-                      within  $\b${\b{_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br}\b}  expansions  enclosed   in   double
+                      If set, $\b$'_\bs_\bt_\br_\bi_\bn_\bg' and  $\b$"_\bs_\bt_\br_\bi_\bn_\bg"  quoting  is  performed
+                      within   $\b${\b{_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br}\b}   expansions  enclosed  in  double
                       quotes.  This option is enabled by default.
               f\bfa\bai\bil\blg\bgl\blo\bob\bb
-                      If  set,  patterns  which fail to match filenames during
+                      If set, patterns which fail to  match  filenames  during
                       pathname expansion result in an expansion error.
               f\bfo\bor\brc\bce\be_\b_f\bfi\big\bgn\bno\bor\bre\be
-                      If set, the suffixes  specified  by  the  F\bFI\bIG\bGN\bNO\bOR\bRE\b shell
-                      variable  cause words to be ignored when performing word
+                      If  set,  the  suffixes  specified  by the F\bFI\bIG\bGN\bNO\bOR\bRE\bE shell
+                      variable cause words to be ignored when performing  word
                       completion even if the ignored words are the only possi-
                       ble  completions.   See  S\bSH\bHE\bEL\bLL\bL  V\bVA\bAR\bRI\bIA\bAB\bBL\bLE\bES\bS  above  for  a
-                      description of  F\bFI\bIG\bGN\bNO\bOR\bRE\bE.   This  option  is  enabled  by
+                      description  of  F\bFI\bIG\bGN\bNO\bOR\bRE\bE.   This  option  is  enabled by
                       default.
               g\bgn\bnu\bu_\b_e\ber\brr\brf\bfm\bmt\bt
                       If set, shell error messages are written in the standard
                       GNU error message format.
               h\bhi\bis\bst\bta\bap\bpp\bpe\ben\bnd\bd
-                      If set, the history list is appended to the  file  named
-                      by  the  value  of  the H\bHI\bIS\bST\bTF\bFI\bIL\bLE\bE variable when the shell
+                      If  set,  the history list is appended to the file named
+                      by the value of the H\bHI\bIS\bST\bTF\bFI\bIL\bLE\bE  variable  when  the  shell
                       exits, rather than overwriting the file.
               h\bhi\bis\bst\btr\bre\bee\bed\bdi\bit\bt
-                      If set, and r\bre\bea\bad\bdl\bli\bin\bne\be is being used, a user is given  the
+                      If  set, and r\bre\bea\bad\bdl\bli\bin\bne\be is being used, a user is given the
                       opportunity to re-edit a failed history substitution.
               h\bhi\bis\bst\btv\bve\ber\bri\bif\bfy\by
-                      If  set, and r\bre\bea\bad\bdl\bli\bin\bne\be is being used, the results of his-
-                      tory substitution are  not  immediately  passed  to  the
-                      shell  parser.   Instead,  the  resulting line is loaded
+                      If set, and r\bre\bea\bad\bdl\bli\bin\bne\be is being used, the results of  his-
+                      tory  substitution  are  not  immediately  passed to the
+                      shell parser.  Instead, the  resulting  line  is  loaded
                       into the r\bre\bea\bad\bdl\bli\bin\bne\be editing buffer, allowing further modi-
                       fication.
               h\bho\bos\bst\btc\bco\bom\bmp\bpl\ble\bet\bte\be
                       If set, and r\bre\bea\bad\bdl\bli\bin\bne\be is being used, b\bba\bas\bsh\bh will attempt to
-                      perform hostname completion when a word containing  a  @\b@
-                      is   being  completed  (see  C\bCo\bom\bmp\bpl\ble\bet\bti\bin\bng\bg  under  R\bRE\bEA\bAD\bDL\bLI\bIN\bNE\bE
+                      perform  hostname  completion when a word containing a @\b@
+                      is  being  completed  (see  C\bCo\bom\bmp\bpl\ble\bet\bti\bin\bng\bg  under   R\bRE\bEA\bAD\bDL\bLI\bIN\bNE\bE
                       above).  This is enabled by default.
               h\bhu\bup\bpo\bon\bne\bex\bxi\bit\bt
                       If set, b\bba\bas\bsh\bh will send S\bSI\bIG\bGH\bHU\bUP\bP to all jobs when an inter-
                       active login shell exits.
               i\bin\bnt\bte\ber\bra\bac\bct\bti\biv\bve\be_\b_c\bco\bom\bmm\bme\ben\bnt\bts\bs
                       If set, allow a word beginning with #\b# to cause that word
-                      and all remaining characters on that line to be  ignored
-                      in  an  interactive  shell  (see  C\bCO\bOM\bMM\bME\bEN\bNT\bTS\bS above).  This
+                      and  all remaining characters on that line to be ignored
+                      in an interactive  shell  (see  C\bCO\bOM\bMM\bME\bEN\bNT\bTS\bS  above).   This
                       option is enabled by default.
-              l\bli\bit\bth\bhi\bis\bst\bt If set, and the c\bcm\bmd\bdh\bhi\bis\bst\bt option  is  enabled,  multi-line
+              l\bli\bit\bth\bhi\bis\bst\bt If  set,  and  the c\bcm\bmd\bdh\bhi\bis\bst\bt option is enabled, multi-line
                       commands are saved to the history with embedded newlines
                       rather than using semicolon separators where possible.
               l\blo\bog\bgi\bin\bn_\b_s\bsh\bhe\bel\bll\bl
-                      The shell sets this option if it is started as  a  login
-                      shell  (see  I\bIN\bNV\bVO\bOC\bCA\bAT\bTI\bIO\bON\bN  above).   The  value may not be
+                      The  shell  sets this option if it is started as a login
+                      shell (see I\bIN\bNV\bVO\bOC\bCA\bAT\bTI\bIO\bON\bN above).   The  value  may  not  be
                       changed.
               m\bma\bai\bil\blw\bwa\bar\brn\bn
-                      If set, and a file that b\bba\bas\bsh\bh is checking  for  mail  has
-                      been  accessed  since  the last time it was checked, the
-                      message ``The mail in _\bm_\ba_\bi_\bl_\bf_\bi_\bl_\be has been read''  is  dis-
+                      If  set,  and  a file that b\bba\bas\bsh\bh is checking for mail has
+                      been accessed since the last time it  was  checked,  the
+                      message  ``The  mail in _\bm_\ba_\bi_\bl_\bf_\bi_\bl_\be has been read'' is dis-
                       played.
               n\bno\bo_\b_e\bem\bmp\bpt\bty\by_\b_c\bcm\bmd\bd_\b_c\bco\bom\bmp\bpl\ble\bet\bti\bio\bon\bn
-                      If  set,  and  r\bre\bea\bad\bdl\bli\bin\bne\be  is  being  used,  b\bba\bas\bsh\bh will not
+                      If set, and  r\bre\bea\bad\bdl\bli\bin\bne\be  is  being  used,  b\bba\bas\bsh\bh  will  not
                       attempt to search the P\bPA\bAT\bTH\bH for possible completions when
                       completion is attempted on an empty line.
               n\bno\boc\bca\bas\bse\beg\bgl\blo\bob\bb
-                      If  set,  b\bba\bas\bsh\bh  matches  filenames in a case-insensitive
+                      If set, b\bba\bas\bsh\bh matches  filenames  in  a  case-insensitive
                       fashion when performing pathname expansion (see P\bPa\bat\bth\bhn\bna\bam\bme\be
                       E\bEx\bxp\bpa\ban\bns\bsi\bio\bon\bn above).
               n\bnu\bul\bll\blg\bgl\blo\bob\bb
-                      If  set,  b\bba\bas\bsh\bh allows patterns which match no files (see
-                      P\bPa\bat\bth\bhn\bna\bam\bme\bE\bEx\bxp\bpa\ban\bns\bsi\bio\bon\bn above) to expand to  a  null  string,
+                      If set, b\bba\bas\bsh\bh allows patterns which match no  files  (see
+                      P\bPa\bat\bth\bhn\bna\bam\bme\b E\bEx\bxp\bpa\ban\bns\bsi\bio\bon\bn  above)  to expand to a null string,
                       rather than themselves.
               p\bpr\bro\bog\bgc\bco\bom\bmp\bp
                       If set, the programmable completion facilities (see P\bPr\bro\bo-\b-
@@ -1148,44 +1153,44 @@ B\bBA\bAS\bSH\bH B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
                       enabled by default.
               p\bpr\bro\bom\bmp\bpt\btv\bva\bar\brs\bs
                       If set, prompt strings undergo parameter expansion, com-
-                      mand  substitution,  arithmetic  expansion,  and   quote
-                      removal  after  being expanded as described in P\bPR\bRO\bOM\bMP\bPT\bTI\bIN\bNG\bG
+                      mand   substitution,  arithmetic  expansion,  and  quote
+                      removal after being expanded as described  in  P\bPR\bRO\bOM\bMP\bPT\bTI\bIN\bNG\bG
                       above.  This option is enabled by default.
               r\bre\bes\bst\btr\bri\bic\bct\bte\bed\bd_\b_s\bsh\bhe\bel\bll\bl
-                      The  shell  sets  this  option  if  it  is  started   in
+                      The   shell  sets  this  option  if  it  is  started  in
                       restricted mode (see R\bRE\bES\bST\bTR\bRI\bIC\bCT\bTE\bED\bD S\bSH\bHE\bEL\bLL\bL below).  The value
-                      may not be changed.  This is not reset when the  startup
-                      files  are  executed, allowing the startup files to dis-
+                      may  not be changed.  This is not reset when the startup
+                      files are executed, allowing the startup files  to  dis-
                       cover whether or not a shell is restricted.
               s\bsh\bhi\bif\bft\bt_\b_v\bve\ber\brb\bbo\bos\bse\be
-                      If set, the s\bsh\bhi\bif\bft\bt builtin prints an error  message  when
+                      If  set,  the s\bsh\bhi\bif\bft\bt builtin prints an error message when
                       the shift count exceeds the number of positional parame-
                       ters.
               s\bso\bou\bur\brc\bce\bep\bpa\bat\bth\bh
                       If set, the s\bso\bou\bur\brc\bce\be (.\b.) builtin uses the value of P\bPA\bAT\bTH\bH to
-                      find  the  directory  containing the file supplied as an
+                      find the directory containing the file  supplied  as  an
                       argument.  This option is enabled by default.
               x\bxp\bpg\bg_\b_e\bec\bch\bho\bo
-                      If  set,  the  e\bec\bch\bho\bo  builtin  expands   backslash-escape
+                      If   set,  the  e\bec\bch\bho\bo  builtin  expands  backslash-escape
                       sequences by default.
        s\bsu\bus\bsp\bpe\ben\bnd\bd [-\b-f\bf]
-              Suspend  the execution of this shell until it receives a S\bSI\bIG\bGC\bCO\bON\bNT\bT
-              signal.  The -\b-f\bf option says not to complain if this is  a  login
-              shell;  just  suspend anyway.  The return status is 0 unless the
+              Suspend the execution of this shell until it receives a  S\bSI\bIG\bGC\bCO\bON\bNT\bT
+              signal.   The  -\b-f\bf option says not to complain if this is a login
+              shell; just suspend anyway.  The return status is 0  unless  the
               shell is a login shell and -\b-f\bf is not supplied, or if job control
               is not enabled.
        t\bte\bes\bst\bt _\be_\bx_\bp_\br
        [\b[ _\be_\bx_\bp_\br ]\b]
-              Return  a  status  of  0 or 1 depending on the evaluation of the
-              conditional expression _\be_\bx_\bp_\br.  Each operator and operand must  be
-              a  separate argument.  Expressions are composed of the primaries
+              Return a status of 0 or 1 depending on  the  evaluation  of  the
+              conditional  expression _\be_\bx_\bp_\br.  Each operator and operand must be
+              a separate argument.  Expressions are composed of the  primaries
               described above under C\bCO\bON\bND\bDI\bIT\bTI\bIO\bON\bNA\bAL\bL E\bEX\bXP\bPR\bRE\bES\bSS\bSI\bIO\bON\bNS\bS.
 
-              Expressions may  be  combined  using  the  following  operators,
+              Expressions  may  be  combined  using  the  following operators,
               listed in decreasing order of precedence.
               !\b! _\be_\bx_\bp_\br True if _\be_\bx_\bp_\br is false.
               (\b( _\be_\bx_\bp_\br )\b)
-                     Returns  the value of _\be_\bx_\bp_\br.  This may be used to override
+                     Returns the value of _\be_\bx_\bp_\br.  This may be used to  override
                      the normal precedence of operators.
               _\be_\bx_\bp_\br_\b1 -a\ba _\be_\bx_\bp_\br_\b2
                      True if both _\be_\bx_\bp_\br_\b1 and _\be_\bx_\bp_\br_\b2 are true.
@@ -1202,111 +1207,111 @@ B\bBA\bAS\bSH\bH B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
                      null.
               2 arguments
                      If the first argument is !\b!, the expression is true if and
-                     only  if the second argument is null.  If the first argu-
-                     ment is one of the  unary  conditional  operators  listed
-                     above  under  C\bCO\bON\bND\bDI\bIT\bTI\bIO\bON\bNA\bAL\bL  E\bEX\bXP\bPR\bRE\bES\bSS\bSI\bIO\bON\bNS\bS, the expression is
+                     only if the second argument is null.  If the first  argu-
+                     ment  is  one  of  the unary conditional operators listed
+                     above under C\bCO\bON\bND\bDI\bIT\bTI\bIO\bON\bNA\bAL\bL E\bEX\bXP\bPR\bRE\bES\bSS\bSI\bIO\bON\bNS\bS,  the  expression  is
                      true if the unary test is true.  If the first argument is
                      not a valid unary conditional operator, the expression is
                      false.
               3 arguments
-                     If the second argument is one of the  binary  conditional
+                     If  the  second argument is one of the binary conditional
                      operators listed above under C\bCO\bON\bND\bDI\bIT\bTI\bIO\bON\bNA\bAL\bL E\bEX\bXP\bPR\bRE\bES\bSS\bSI\bIO\bON\bNS\bS, the
                      result of the expression is the result of the binary test
-                     using  the first and third arguments as operands.  If the
-                     first argument is !\b!, the value is  the  negation  of  the
-                     two-argument  test  using the second and third arguments.
+                     using the first and third arguments as operands.  If  the
+                     first  argument  is  !\b!,  the value is the negation of the
+                     two-argument test using the second and  third  arguments.
                      If the first argument is exactly (\b( and the third argument
-                     is  exactly )\b), the result is the one-argument test of the
-                     second argument.  Otherwise,  the  expression  is  false.
-                     The  -\b-a\ba  and -\b-o\bo operators are considered binary operators
+                     is exactly )\b), the result is the one-argument test of  the
+                     second  argument.   Otherwise,  the  expression is false.
+                     The -\b-a\ba and -\b-o\bo operators are considered  binary  operators
                      in this case.
               4 arguments
                      If the first argument is !\b!, the result is the negation of
-                     the  three-argument  expression composed of the remaining
+                     the three-argument expression composed of  the  remaining
                      arguments.  Otherwise, the expression is parsed and eval-
-                     uated  according  to  precedence  using  the rules listed
+                     uated according to  precedence  using  the  rules  listed
                      above.
               5 or more arguments
-                     The expression  is  parsed  and  evaluated  according  to
+                     The  expression  is  parsed  and  evaluated  according to
                      precedence using the rules listed above.
 
-       t\bti\bim\bme\bes\bs  Print  the  accumulated  user and system times for the shell and
+       t\bti\bim\bme\bes\bs  Print the accumulated user and system times for  the  shell  and
               for processes run from the shell.  The return status is 0.
 
        t\btr\bra\bap\bp [-\b-l\blp\bp] [[_\ba_\br_\bg] _\bs_\bi_\bg_\bs_\bp_\be_\bc ...]
-              The command _\ba_\br_\bg is to  be  read  and  executed  when  the  shell
-              receives  signal(s)  _\bs_\bi_\bg_\bs_\bp_\be_\bc.   If _\ba_\br_\bg is absent (and there is a
-              single _\bs_\bi_\bg_\bs_\bp_\be_\bc) or -\b-, each specified  signal  is  reset  to  its
-              original  disposition  (the  value  it  had upon entrance to the
-              shell).  If _\ba_\br_\bg is the null string the signal specified by  each
-              _\bs_\bi_\bg_\bs_\bp_\be_\b is ignored by the shell and by the commands it invokes.
-              If _\ba_\br_\bg is not present and -\b-p\bp has been supplied,  then  the  trap
-              commands  associated  with  each  _\bs_\bi_\bg_\bs_\bp_\be_\bc  are displayed.  If no
-              arguments are supplied or if only -\b-p\bp is given, t\btr\bra\bap\bp  prints  the
-              list  of  commands  associated  with each signal.  The -\b-l\bl option
-              causes the shell to print a list of signal names and their  cor-
-              responding  numbers.   Each  _\bs_\bi_\bg_\bs_\bp_\be_\bc  is  either  a  signal name
-              defined in <_\bs_\bi_\bg_\bn_\ba_\bl_\b._\bh>, or a signal  number.   Signal  names  are
-              case  insensitive  and the SIG prefix is optional.  If a _\bs_\bi_\bg_\bs_\bp_\be_\bc
-              is E\bEX\bXI\bIT\bT (0) the command _\ba_\br_\bg is executed on exit from the  shell.
-              If  a _\bs_\bi_\bg_\bs_\bp_\be_\bc is D\bDE\bEB\bBU\bUG\bG, the command _\ba_\br_\bg is executed before every
+              The  command  _\ba_\br_\bg  is  to  be  read  and executed when the shell
+              receives signal(s) _\bs_\bi_\bg_\bs_\bp_\be_\bc.  If _\ba_\br_\bg is absent (and  there  is  a
+              single  _\bs_\bi_\bg_\bs_\bp_\be_\bc)  or  -\b-,  each  specified signal is reset to its
+              original disposition (the value it  had  upon  entrance  to  the
+              shell).   If _\ba_\br_\bg is the null string the signal specified by each
+              _\bs_\bi_\bg_\bs_\bp_\be_\bis ignored by the shell and by the commands it  invokes.
+              If  _\ba_\br_\bg  is  not present and -\b-p\bp has been supplied, then the trap
+              commands associated with each  _\bs_\bi_\bg_\bs_\bp_\be_\bc  are  displayed.   If  no
+              arguments  are  supplied or if only -\b-p\bp is given, t\btr\bra\bap\bp prints the
+              list of commands associated with each  signal.   The  -\b-l\b option
+              causes  the shell to print a list of signal names and their cor-
+              responding numbers.   Each  _\bs_\bi_\bg_\bs_\bp_\be_\bc  is  either  a  signal  name
+              defined  in  <_\bs_\bi_\bg_\bn_\ba_\bl_\b._\bh>,  or  a signal number.  Signal names are
+              case insensitive and the SIG prefix is optional.  If  a  _\bs_\bi_\bg_\bs_\bp_\be_\bc
+              is  E\bEX\bXI\bIT\bT (0) the command _\ba_\br_\bg is executed on exit from the shell.
+              If a _\bs_\bi_\bg_\bs_\bp_\be_\bc is D\bDE\bEB\bBU\bUG\bG, the command _\ba_\br_\bg is executed before  every
               _\bs_\bi_\bm_\bp_\bl_\be _\bc_\bo_\bm_\bm_\ba_\bn_\bd, _\bf_\bo_\br command, _\bc_\ba_\bs_\be command, _\bs_\be_\bl_\be_\bc_\bt command, every
               arithmetic _\bf_\bo_\br command, and before the first command executes in
-              a shell function  (see  S\bSH\bHE\bEL\bLL\bL  G\bGR\bRA\bAM\bMM\bMA\bAR\bR  above).   Refer  to  the
-              description  of  the  e\bex\bxt\btd\bde\beb\bbu\bug\bg  option  to the s\bsh\bho\bop\bpt\bt builtin for
-              details of its effect on the D\bDE\bEB\bBU\bUG\bG trap.  If a _\bs_\bi_\bg_\bs_\bp_\be_\bc  is  E\bER\bRR\bR,
-              the  command  _\ba_\br_\bg  is  executed  whenever a simple command has a
-              non-zero exit status, subject to the following conditions.   The
-              E\bER\bRR\b trap  is  not executed if the failed command is part of the
-              command list immediately following a  w\bwh\bhi\bil\ble\be  or  u\bun\bnt\bti\bil\b keyword,
+              a  shell  function  (see  S\bSH\bHE\bEL\bLL\bL  G\bGR\bRA\bAM\bMM\bMA\bAR\bR  above).   Refer to the
+              description of the e\bex\bxt\btd\bde\beb\bbu\bug\bg option  to  the  s\bsh\bho\bop\bpt\bt  builtin  for
+              details  of  its effect on the D\bDE\bEB\bBU\bUG\bG trap.  If a _\bs_\bi_\bg_\bs_\bp_\be_\bc is E\bER\bRR\bR,
+              the command _\ba_\br_\bg is executed whenever  a  simple  command  has  a
+              non-zero  exit status, subject to the following conditions.  The
+              E\bER\bRR\btrap is not executed if the failed command is  part  of  the
+              command  list  immediately  following  a w\bwh\bhi\bil\ble\be or u\bun\bnt\bti\bil\bl keyword,
               part of the test in an _\bi_\bf statement, part of a &\b&&\b& or |\b||\b| list, or
-              if the command's return value is being inverted  via  !\b!.   These
-              are  the  same  conditions  obeyed  by the e\ber\brr\bre\bex\bxi\bit\bt option.  If a
+              if  the  command's  return value is being inverted via !\b!.  These
+              are the same conditions obeyed by  the  e\ber\brr\bre\bex\bxi\bit\bt  option.   If  a
               _\bs_\bi_\bg_\bs_\bp_\be_\bc is R\bRE\bET\bTU\bUR\bRN\bN, the command _\ba_\br_\bg is executed each time a shell
               function or a script executed with the .\b. or s\bso\bou\bur\brc\bce\be builtins fin-
               ishes executing.  Signals ignored upon entry to the shell cannot
-              be  trapped or reset.  Trapped signals are reset to their origi-
-              nal values in a child process when it is  created.   The  return
-              status  is  false  if  any  _\bs_\bi_\bg_\bs_\bp_\be_\bc  is  invalid; otherwise t\btr\bra\bap\bp
+              be trapped or reset.  Trapped signals are reset to their  origi-
+              nal  values  in  a child process when it is created.  The return
+              status is false  if  any  _\bs_\bi_\bg_\bs_\bp_\be_\bc  is  invalid;  otherwise  t\btr\bra\bap\bp
               returns true.
 
        t\bty\byp\bpe\be [-\b-a\baf\bft\btp\bpP\bP] _\bn_\ba_\bm_\be [_\bn_\ba_\bm_\be ...]
-              With no options, indicate how each _\bn_\ba_\bm_\be would be interpreted  if
+              With  no options, indicate how each _\bn_\ba_\bm_\be would be interpreted if
               used as a command name.  If the -\b-t\bt option is used, t\bty\byp\bpe\be prints a
-              string which is one of _\ba_\bl_\bi_\ba_\bs,  _\bk_\be_\by_\bw_\bo_\br_\bd,  _\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn,  _\bb_\bu_\bi_\bl_\bt_\bi_\bn,  or
-              _\bf_\bi_\bl_\b if  _\bn_\ba_\bm_\be  is  an  alias,  shell  reserved  word, function,
-              builtin, or disk file, respectively.  If the _\bn_\ba_\bm_\be is not  found,
-              then  nothing  is  printed,  and  an  exit  status  of  false is
-              returned.  If the -\b-p\bp option is used,  t\bty\byp\bpe\be  either  returns  the
+              string  which  is  one  of _\ba_\bl_\bi_\ba_\bs, _\bk_\be_\by_\bw_\bo_\br_\bd, _\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn, _\bb_\bu_\bi_\bl_\bt_\bi_\bn, or
+              _\bf_\bi_\bl_\bif  _\bn_\ba_\bm_\be  is  an  alias,  shell  reserved  word,  function,
+              builtin,  or disk file, respectively.  If the _\bn_\ba_\bm_\be is not found,
+              then nothing  is  printed,  and  an  exit  status  of  false  is
+              returned.   If  the  -\b-p\bp  option is used, t\bty\byp\bpe\be either returns the
               name of the disk file that would be executed if _\bn_\ba_\bm_\be were speci-
               fied as a command name, or nothing if ``type -t name'' would not
-              return  _\bf_\bi_\bl_\be.  The -\b-P\bP option forces a P\bPA\bAT\bTH\bH search for each _\bn_\ba_\bm_\be,
+              return _\bf_\bi_\bl_\be.  The -\b-P\bP option forces a P\bPA\bAT\bTH\bH search for each  _\bn_\ba_\bm_\be,
               even if ``type -t name'' would not return _\bf_\bi_\bl_\be.  If a command is
-              hashed,  -\b-p\bp  and  -\b-P\bP print the hashed value, not necessarily the
+              hashed, -\b-p\bp and -\b-P\bP print the hashed value,  not  necessarily  the
               file that appears first in P\bPA\bAT\bTH\bH.  If the -\b-a\ba option is used, t\bty\byp\bpe\be
-              prints  all of the places that contain an executable named _\bn_\ba_\bm_\be.
-              This includes aliases and functions,  if  and  only  if  the  -\b-p\bp
-              option  is  not  also used.  The table of hashed commands is not
-              consulted when using -\b-a\ba.  The -\b-f\bf option suppresses  shell  func-
-              tion  lookup, as with the c\bco\bom\bmm\bma\ban\bnd\bd builtin.  t\bty\byp\bpe\be returns true if
+              prints all of the places that contain an executable named  _\bn_\ba_\bm_\be.
+              This  includes  aliases  and  functions,  if  and only if the -\b-p\bp
+              option is not also used.  The table of hashed  commands  is  not
+              consulted  when  using -\b-a\ba.  The -\b-f\bf option suppresses shell func-
+              tion lookup, as with the c\bco\bom\bmm\bma\ban\bnd\bd builtin.  t\bty\byp\bpe\be returns true  if
               any of the arguments are found, false if none are found.
 
        u\bul\bli\bim\bmi\bit\bt [-\b-S\bSH\bHa\bac\bcd\bdf\bfl\blm\bmn\bnp\bps\bst\btu\buv\bv [_\bl_\bi_\bm_\bi_\bt]]
-              Provides control over the resources available to the  shell  and
-              to  processes started by it, on systems that allow such control.
+              Provides  control  over the resources available to the shell and
+              to processes started by it, on systems that allow such  control.
               The -\b-H\bH and -\b-S\bS options specify that the hard or soft limit is set
-              for  the  given resource.  A hard limit cannot be increased once
-              it is set; a soft limit may be increased up to the value of  the
-              hard  limit.   If  neither -\b-H\bH nor -\b-S\bS is specified, both the soft
-              and hard limits are set.  The value of _\bl_\bi_\bm_\bi_\bt can be a number  in
+              for the given resource.  A hard limit cannot be  increased  once
+              it  is set; a soft limit may be increased up to the value of the
+              hard limit.  If neither -\b-H\bH nor -\b-S\bS is specified,  both  the  soft
+              and  hard limits are set.  The value of _\bl_\bi_\bm_\bi_\bt can be a number in
               the unit specified for the resource or one of the special values
-              h\bha\bar\brd\bd, s\bso\bof\bft\bt, or u\bun\bnl\bli\bim\bmi\bit\bte\bed\bd,  which  stand  for  the  current  hard
-              limit,  the  current soft limit, and no limit, respectively.  If
-              _\bl_\bi_\bm_\bi_\bis omitted, the current value of the  soft  limit  of  the
-              resource  is  printed, unless the -\b-H\bH option is given.  When more
-              than one resource is specified, the  limit  name  and  unit  are
-              printed before the value.  Other options are interpreted as fol-
-              lows:
+              h\bha\bar\brd\bd,  s\bso\bof\bft\bt,  or  u\bun\bnl\bli\bim\bmi\bit\bte\bed\bd,  which  stand  for the current hard
+              limit, the current soft limit, and no limit,  respectively.   If
+              _\bl_\bi_\bm_\bi_\b is  omitted,  the  current value of the soft limit of the
+              resource is printed, unless the -\b-H\bH option is given.   When  more
+              than  one  resource  is  specified,  the limit name and unit are
+              printed before the value.   Other  options  are  interpreted  as
+              follows:
               -\b-a\ba     All current limits are reported
               -\b-c\bc     The maximum size of core files created
               -\b-d\bd     The maximum size of a process's data segment
@@ -1318,56 +1323,56 @@ B\bBA\bAS\bSH\bH B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
               -\b-p\bp     The pipe size in 512-byte blocks (this may not be set)
               -\b-s\bs     The maximum stack size
               -\b-t\bt     The maximum amount of cpu time in seconds
-              -\b-u\bu     The  maximum  number  of  processes available to a single
+              -\b-u\bu     The maximum number of processes  available  to  a  single
                      user
-              -\b-v\bv     The maximum amount of virtual  memory  available  to  the
+              -\b-v\bv     The  maximum  amount  of  virtual memory available to the
                      shell
 
               If _\bl_\bi_\bm_\bi_\bt is given, it is the new value of the specified resource
               (the -\b-a\ba option is display only).  If no option is given, then -\b-f\bf
-              is  assumed.  Values are in 1024-byte increments, except for -\b-t\bt,
-              which is in seconds, -\b-p\bp, which is in units of  512-byte  blocks,
-              and  -\b-n\bn and -\b-u\bu, which are unscaled values.  The return status is
-              0 unless an invalid option or argument is supplied, or an  error
+              is assumed.  Values are in 1024-byte increments, except for  -\b-t\bt,
+              which  is  in seconds, -\b-p\bp, which is in units of 512-byte blocks,
+              and -\b-n\bn and -\b-u\bu, which are unscaled values.  The return status  is
+              0  unless an invalid option or argument is supplied, or an error
               occurs while setting a new limit.
 
        u\bum\bma\bas\bsk\bk [-\b-p\bp] [-\b-S\bS] [_\bm_\bo_\bd_\be]
               The user file-creation mask is set to _\bm_\bo_\bd_\be.  If _\bm_\bo_\bd_\be begins with
-              a digit, it is interpreted as an octal number; otherwise  it  is
-              interpreted  as a symbolic mode mask similar to that accepted by
-              _\bc_\bh_\bm_\bo_\bd(1).  If _\bm_\bo_\bd_\be is omitted, the current value of the mask  is
-              printed.   The  -\b-S\bS  option causes the mask to be printed in sym-
-              bolic form; the default output is an octal number.   If  the  -\b-p\bp
+              a  digit,  it is interpreted as an octal number; otherwise it is
+              interpreted as a symbolic mode mask similar to that accepted  by
+              _\bc_\bh_\bm_\bo_\bd(1).   If _\bm_\bo_\bd_\be is omitted, the current value of the mask is
+              printed.  The -\b-S\bS option causes the mask to be  printed  in  sym-
+              bolic  form;  the  default output is an octal number.  If the -\b-p\bp
               option is supplied, and _\bm_\bo_\bd_\be is omitted, the output is in a form
               that may be reused as input.  The return status is 0 if the mode
-              was  successfully  changed  or if no _\bm_\bo_\bd_\be argument was supplied,
+              was successfully changed or if no _\bm_\bo_\bd_\be  argument  was  supplied,
               and false otherwise.
 
        u\bun\bna\bal\bli\bia\bas\bs [-a\ba] [_\bn_\ba_\bm_\be ...]
-              Remove each _\bn_\ba_\bm_\be from the list of defined  aliases.   If  -\b-a\b is
-              supplied,  all  alias definitions are removed.  The return value
+              Remove  each  _\bn_\ba_\bm_\be  from  the list of defined aliases.  If -\b-a\ba is
+              supplied, all alias definitions are removed.  The  return  value
               is true unless a supplied _\bn_\ba_\bm_\be is not a defined alias.
 
        u\bun\bns\bse\bet\bt [-f\bfv\bv] [_\bn_\ba_\bm_\be ...]
-              For each _\bn_\ba_\bm_\be, remove the corresponding  variable  or  function.
+              For  each  _\bn_\ba_\bm_\be,  remove the corresponding variable or function.
               If no options are supplied, or the -\b-v\bv option is given, each _\bn_\ba_\bm_\be
-              refers to a shell variable.   Read-only  variables  may  not  be
+              refers  to  a  shell  variable.   Read-only variables may not be
               unset.  If -\b-f\bf is specifed, each _\bn_\ba_\bm_\be refers to a shell function,
-              and the function definition is removed.  Each unset variable  or
-              function  is  removed  from the environment passed to subsequent
+              and  the function definition is removed.  Each unset variable or
+              function is removed from the environment  passed  to  subsequent
               commands.  If any of R\bRA\bAN\bND\bDO\bOM\bM, S\bSE\bEC\bCO\bON\bND\bDS\bS, L\bLI\bIN\bNE\bEN\bNO\bO, H\bHI\bIS\bST\bTC\bCM\bMD\bD, F\bFU\bUN\bNC\bCN\bNA\bAM\bME\bE,
-              G\bGR\bRO\bOU\bUP\bPS\bS,  or  D\bDI\bIR\bRS\bST\bTA\bAC\bCK\bK are unset, they lose their special proper-
-              ties, even if they are subsequently reset.  The exit  status  is
+              G\bGR\bRO\bOU\bUP\bPS\bS, or D\bDI\bIR\bRS\bST\bTA\bAC\bCK\bK are unset, they lose their  special  proper-
+              ties,  even  if they are subsequently reset.  The exit status is
               true unless a _\bn_\ba_\bm_\be is readonly.
 
        w\bwa\bai\bit\bt [_\bn]
-              Wait  for  the specified process and return its termination sta-
-              tus.  _\bn may be a process ID or a job  specification;  if  a  job
-              spec  is  given, all processes in that job's pipeline are waited
-              for.  If _\bn is not given, all currently  active  child  processes
+              Wait for the specified process and return its  termination  sta-
+              tus.   _\bn  may  be  a process ID or a job specification; if a job
+              spec is given, all processes in that job's pipeline  are  waited
+              for.   If  _\bn  is not given, all currently active child processes
               are waited for, and the return status is zero.  If _\bn specifies a
-              non-existent process or job, the return status is  127.   Other-
-              wise,  the  return status is the exit status of the last process
+              non-existent  process  or job, the return status is 127.  Other-
+              wise, the return status is the exit status of the  last  process
               or job waited for.
 
 S\bSE\bEE\bE A\bAL\bLS\bSO\bO
index fa1c089b6bfdf39cbe550577efbc3e037b318bd7..0f1d4fdb953df301a0b64a95ad33d9150ab73507 100644 (file)
@@ -1,6 +1,6 @@
 %!PS-Adobe-3.0
 %%Creator: groff version 1.18.1
-%%CreationDate: Mon Aug 30 08:27:13 2004
+%%CreationDate: Tue Sep 21 11:57:03 2004
 %%DocumentNeededResources: font Times-Roman
 %%+ font Times-Bold
 %%+ font Times-Italic
@@ -564,359 +564,363 @@ F(ing trailing spaces\).)224 597.6 Q
 (Intended to be used with shell functions.)5 E F2(nospace)184 609.6 Q F0
 -.7(Te)6.11 G .22(ll readline not to append a space \(the def).7 F .22
 (ault\) to w)-.1 F .22(ords completed at the end)-.1 F(of the line.)224
-621.6 Q F2<ad41>144 633.6 Q F1(action)2.5 E F0(The)184 645.6 Q F1
+621.6 Q F2(plusdirs)184 633.6 Q F0 1.985(After an)5.54 F 4.485(ym)-.15 G
+1.985(atches de\214ned by the compspec are generated, directory name)
+-4.485 F .584(completion is attempted and an)224 645.6 R 3.084(ym)-.15 G
+.584(atches are added to the results of the other)-3.084 F(actions.)224
+657.6 Q F2<ad41>144 669.6 Q F1(action)2.5 E F0(The)184 681.6 Q F1
 (action)2.5 E F0(may be one of the follo)2.5 E
 (wing to generate a list of possible completions:)-.25 E F2(alias)184
-657.6 Q F0(Alias names.)20.55 E(May also be speci\214ed as)5 E F2<ad61>
-2.5 E F0(.)A F2(arrayv)184 669.6 Q(ar)-.1 E F0(Array v)224 681.6 Q
-(ariable names.)-.25 E F2 4.7(binding Readline)184 693.6 R F0 -.1(ke)2.5
-G 2.5(yb)-.05 G(inding names.)-2.5 E F2 -.2(bu)184 705.6 S(iltin).2 E F0
-(Names of shell b)11.85 E(uiltin commands.)-.2 E
-(May also be speci\214ed as)5 E F2<ad62>2.5 E F0(.)A(GNU Bash-3.0)72 768
-Q(2004 Apr 20)148.735 E(3)203.725 E 0 Cg EP
+693.6 Q F0(Alias names.)20.55 E(May also be speci\214ed as)5 E F2<ad61>
+2.5 E F0(.)A F2(arrayv)184 705.6 Q(ar)-.1 E F0(Array v)224 717.6 Q
+(ariable names.)-.25 E(GNU Bash-3.0)72 768 Q(2004 Apr 20)148.735 E(3)
+203.725 E 0 Cg EP
 %%Page: 4 4
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 290.48
 (TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10
-/Times-Bold@0 SF(command)184 84 Q F0(Command names.)224 96 Q
-(May also be speci\214ed as)5 E F1<ad63>2.5 E F0(.)A F1(dir)184 108 Q
-(ectory)-.18 E F0(Directory names.)224 120 Q(May also be speci\214ed as)
-5 E F1<ad64>2.5 E F0(.)A F1(disabled)184 132 Q F0
-(Names of disabled shell b)224 144 Q(uiltins.)-.2 E F1(enabled)184 156 Q
-F0(Names of enabled shell b)6.66 E(uiltins.)-.2 E F1(export)184 168 Q F0
-(Names of e)12.23 E(xported shell v)-.15 E 2.5(ariables. May)-.25 F
-(also be speci\214ed as)2.5 E F1<ad65>2.5 E F0(.)A F1(\214le)184 180 Q
-F0(File names.)27.22 E(May also be speci\214ed as)5 E F1<ad66>2.5 E F0
-(.)A F1(function)184 192 Q F0(Names of shell functions.)224 204 Q F1(gr)
-184 216 Q(oup)-.18 E F0(Group names.)14.62 E(May also be speci\214ed as)
-5 E F1<ad67>2.5 E F0(.)A F1(helptopic)184 228 Q F0
-(Help topics as accepted by the)224 240 Q F1(help)2.5 E F0 -.2(bu)2.5 G
-(iltin.).2 E F1(hostname)184 252 Q F0(Hostnames, as tak)224 264 Q
-(en from the \214le speci\214ed by the)-.1 E/F2 9/Times-Bold@0 SF
-(HOSTFILE)2.5 E F0(shell v)2.25 E(ariable.)-.25 E F1(job)184 276 Q F0
+/Times-Bold@0 SF 4.7(binding Readline)184 84 R F0 -.1(ke)2.5 G 2.5(yb)
+-.05 G(inding names.)-2.5 E F1 -.2(bu)184 96 S(iltin).2 E F0
+(Names of shell b)11.85 E(uiltin commands.)-.2 E
+(May also be speci\214ed as)5 E F1<ad62>2.5 E F0(.)A F1(command)184 108
+Q F0(Command names.)224 120 Q(May also be speci\214ed as)5 E F1<ad63>2.5
+E F0(.)A F1(dir)184 132 Q(ectory)-.18 E F0(Directory names.)224 144 Q
+(May also be speci\214ed as)5 E F1<ad64>2.5 E F0(.)A F1(disabled)184 156
+Q F0(Names of disabled shell b)224 168 Q(uiltins.)-.2 E F1(enabled)184
+180 Q F0(Names of enabled shell b)6.66 E(uiltins.)-.2 E F1(export)184
+192 Q F0(Names of e)12.23 E(xported shell v)-.15 E 2.5(ariables. May)
+-.25 F(also be speci\214ed as)2.5 E F1<ad65>2.5 E F0(.)A F1(\214le)184
+204 Q F0(File names.)27.22 E(May also be speci\214ed as)5 E F1<ad66>2.5
+E F0(.)A F1(function)184 216 Q F0(Names of shell functions.)224 228 Q F1
+(gr)184 240 Q(oup)-.18 E F0(Group names.)14.62 E
+(May also be speci\214ed as)5 E F1<ad67>2.5 E F0(.)A F1(helptopic)184
+252 Q F0(Help topics as accepted by the)224 264 Q F1(help)2.5 E F0 -.2
+(bu)2.5 G(iltin.).2 E F1(hostname)184 276 Q F0(Hostnames, as tak)224 288
+Q(en from the \214le speci\214ed by the)-.1 E/F2 9/Times-Bold@0 SF
+(HOSTFILE)2.5 E F0(shell v)2.25 E(ariable.)-.25 E F1(job)184 300 Q F0
 (Job names, if job control is acti)26.11 E -.15(ve)-.25 G 5(.M).15 G
-(ay also be speci\214ed as)-5 E F1<ad6a>2.5 E F0(.)A F1 -.1(ke)184 288 S
-(yw).1 E(ord)-.1 E F0(Shell reserv)224 300 Q(ed w)-.15 E 2.5(ords. May)
+(ay also be speci\214ed as)-5 E F1<ad6a>2.5 E F0(.)A F1 -.1(ke)184 312 S
+(yw).1 E(ord)-.1 E F0(Shell reserv)224 324 Q(ed w)-.15 E 2.5(ords. May)
 -.1 F(also be speci\214ed as)2.5 E F1<ad6b>2.5 E F0(.)A F1(running)184
-312 Q F0(Names of running jobs, if job control is acti)5.54 E -.15(ve)
--.25 G(.).15 E F1(ser)184 324 Q(vice)-.1 E F0(Service names.)10.67 E
-(May also be speci\214ed as)5 E F1<ad73>2.5 E F0(.)A F1(setopt)184 336 Q
+336 Q F0(Names of running jobs, if job control is acti)5.54 E -.15(ve)
+-.25 G(.).15 E F1(ser)184 348 Q(vice)-.1 E F0(Service names.)10.67 E
+(May also be speci\214ed as)5 E F1<ad73>2.5 E F0(.)A F1(setopt)184 360 Q
 F0 -1.11(Va)14.45 G(lid ar)1.11 E(guments for the)-.18 E F1<ad6f>2.5 E
 F0(option to the)2.5 E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1
-(shopt)184 348 Q F0(Shell option names as accepted by the)16.66 E F1
-(shopt)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(signal)184 360 Q F0
-(Signal names.)14.99 E F1(stopped)184 372 Q F0
+(shopt)184 372 Q F0(Shell option names as accepted by the)16.66 E F1
+(shopt)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(signal)184 384 Q F0
+(Signal names.)14.99 E F1(stopped)184 396 Q F0
 (Names of stopped jobs, if job control is acti)6.66 E -.15(ve)-.25 G(.)
-.15 E F1(user)184 384 Q F0(User names.)21.67 E
-(May also be speci\214ed as)5 E F1<ad75>2.5 E F0(.)A F1 -.1(va)184 396 S
+.15 E F1(user)184 408 Q F0(User names.)21.67 E
+(May also be speci\214ed as)5 E F1<ad75>2.5 E F0(.)A F1 -.1(va)184 420 S
 (riable).1 E F0(Names of all shell v)5.1 E 2.5(ariables. May)-.25 F
-(also be speci\214ed as)2.5 E F1<ad76>2.5 E F0(.)A F1<ad47>144 408 Q/F3
-10/Times-Italic@0 SF(globpat)2.5 E F0 1.41(The \214lename e)184 420 R
+(also be speci\214ed as)2.5 E F1<ad76>2.5 E F0(.)A F1<ad47>144 432 Q/F3
+10/Times-Italic@0 SF(globpat)2.5 E F0 1.41(The \214lename e)184 444 R
 1.411(xpansion pattern)-.15 F F3(globpat)3.911 E F0 1.411(is e)3.911 F
-1.411(xpanded to generate the possible comple-)-.15 F(tions.)184 432 Q
-F1<ad57>144 444 Q F3(wor)2.5 E(dlist)-.37 E F0(The)184 456 Q F3(wor)3.64
+1.411(xpanded to generate the possible comple-)-.15 F(tions.)184 456 Q
+F1<ad57>144 468 Q F3(wor)2.5 E(dlist)-.37 E F0(The)184 480 Q F3(wor)3.64
 E(dlist)-.37 E F0 1.14(is split using the characters in the)3.64 F F2
 (IFS)3.64 E F0 1.139(special v)3.39 F 1.139(ariable as delimiters, and)
--.25 F 2.007(each resultant w)184 468 R 2.007(ord is e)-.1 F 4.507
+-.25 F 2.007(each resultant w)184 492 R 2.007(ord is e)-.1 F 4.507
 (xpanded. The)-.15 F 2.008(possible completions are the members of the)
-4.507 F(resultant list which match the w)184 480 Q(ord being completed.)
--.1 E F1<ad43>144 492 Q F3(command)2.5 E(command)184 504 Q F0 1.056
+4.507 F(resultant list which match the w)184 504 Q(ord being completed.)
+-.1 E F1<ad43>144 516 Q F3(command)2.5 E(command)184 528 Q F0 1.056
 (is e)3.556 F -.15(xe)-.15 G 1.056(cuted in a subshell en).15 F 1.056
 (vironment, and its output is used as the possible)-.4 F(completions.)
-184 516 Q F1<ad46>144 528 Q F3(function)2.5 E F0 1.18
-(The shell function)184 540 R F3(function)3.68 E F0 1.181(is e)3.681 F
+184 540 Q F1<ad46>144 552 Q F3(function)2.5 E F0 1.18
+(The shell function)184 564 R F3(function)3.68 E F0 1.181(is e)3.681 F
 -.15(xe)-.15 G 1.181(cuted in the current shell en).15 F 3.681
 (vironment. When)-.4 F 1.181(it \214n-)3.681 F .932
-(ishes, the possible completions are retrie)184 552 R -.15(ve)-.25 G
+(ishes, the possible completions are retrie)184 576 R -.15(ve)-.25 G
 3.432(df).15 G .932(rom the v)-3.432 F .932(alue of the)-.25 F F2
-(COMPREPL)3.431 E(Y)-.828 E F0(array)3.181 E -.25(va)184 564 S(riable.)
-.25 E F1<ad58>144 576 Q F3(\214lterpat)2.5 E(\214lterpat)184 588 Q F0
+(COMPREPL)3.431 E(Y)-.828 E F0(array)3.181 E -.25(va)184 588 S(riable.)
+.25 E F1<ad58>144 600 Q F3(\214lterpat)2.5 E(\214lterpat)184 612 Q F0
 .733(is a pattern as used for \214lename e)3.233 F 3.233(xpansion. It)
 -.15 F .733(is applied to the list of possible)3.233 F 1.596
-(completions generated by the preceding options and ar)184 600 R 1.596
-(guments, and each completion)-.18 F(matching)184 612 Q F3(\214lterpat)
+(completions generated by the preceding options and ar)184 624 R 1.596
+(guments, and each completion)-.18 F(matching)184 636 Q F3(\214lterpat)
 3.204 E F0 .704(is remo)3.204 F -.15(ve)-.15 G 3.204(df).15 G .704
 (rom the list.)-3.204 F 3.204(Al)5.704 G(eading)-3.204 E F1(!)3.204 E F0
 (in)3.204 E F3(\214lterpat)3.205 E F0(ne)3.205 E -.05(ga)-.15 G .705
-(tes the pattern;).05 F(in this case, an)184 624 Q 2.5(yc)-.15 G
+(tes the pattern;).05 F(in this case, an)184 648 Q 2.5(yc)-.15 G
 (ompletion not matching)-2.5 E F3(\214lterpat)2.5 E F0(is remo)2.5 E
--.15(ve)-.15 G(d.).15 E F1<ad50>144 636 Q F3(pr)2.5 E(e\214x)-.37 E(pr)
-184 648 Q(e\214x)-.37 E F0 .535(is added at the be)3.035 F .534
+-.15(ve)-.15 G(d.).15 E F1<ad50>144 660 Q F3(pr)2.5 E(e\214x)-.37 E(pr)
+184 672 Q(e\214x)-.37 E F0 .535(is added at the be)3.035 F .534
 (ginning of each possible completion after all other options ha)-.15 F
--.15(ve)-.2 G(been applied.)184 660 Q F1<ad53>144 672 Q F3(suf)2.5 E
+-.15(ve)-.2 G(been applied.)184 684 Q F1<ad53>144 696 Q F3(suf)2.5 E
 2.81(\214x suf)-.18 F<8c78>-.18 E F0
 (is appended to each possible completion after all other options ha)2.5
-E .3 -.15(ve b)-.2 H(een applied.).15 E .466(The return v)144 688.8 R
+E .3 -.15(ve b)-.2 H(een applied.).15 E .466(The return v)144 712.8 R
 .466(alue is true unless an in)-.25 F -.25(va)-.4 G .466
 (lid option is supplied, an option other than).25 F F1<ad70>2.967 E F0
 (or)2.967 E F1<ad72>2.967 E F0 .467(is sup-)2.967 F 1.362
-(plied without a)144 700.8 R F3(name)3.862 E F0(ar)3.862 E 1.361
+(plied without a)144 724.8 R F3(name)3.862 E F0(ar)3.862 E 1.361
 (gument, an attempt is made to remo)-.18 F 1.661 -.15(ve a c)-.15 H
-1.361(ompletion speci\214cation for a).15 F F3(name)144 712.8 Q F0
-(for which no speci\214cation e)2.5 E
-(xists, or an error occurs adding a completion speci\214cation.)-.15 E
-(GNU Bash-3.0)72 768 Q(2004 Apr 20)148.735 E(4)203.725 E 0 Cg EP
+1.361(ompletion speci\214cation for a).15 F(GNU Bash-3.0)72 768 Q
+(2004 Apr 20)148.735 E(4)203.725 E 0 Cg EP
 %%Page: 5 5
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 290.48
 (TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10
-/Times-Bold@0 SF(continue)108 84 Q F0([)2.5 E/F2 10/Times-Italic@0 SF(n)
-A F0(])A 1.753(Resume the ne)144 96 R 1.753
-(xt iteration of the enclosing)-.15 F F1 -.25(fo)4.254 G(r).25 E F0(,)A
-F1(while)4.254 E F0(,)A F1(until)4.254 E F0 4.254(,o)C(r)-4.254 E F1
-(select)4.254 E F0 4.254(loop. If)4.254 F F2(n)4.614 E F0 1.754
-(is speci\214ed,)4.494 F 1.209(resume at the)144 108 R F2(n)3.709 E F0
-1.209(th enclosing loop.)B F2(n)6.569 E F0 1.209(must be)3.949 F/F3 10
-/Symbol SF<b3>3.709 E F0 3.709(1. If)3.709 F F2(n)4.069 E F0 1.209
+/Times-Italic@0 SF(name)144 84 Q F0(for which no speci\214cation e)2.5 E
+(xists, or an error occurs adding a completion speci\214cation.)-.15 E
+/F2 10/Times-Bold@0 SF(continue)108 100.8 Q F0([)2.5 E F1(n)A F0(])A
+1.753(Resume the ne)144 112.8 R 1.753(xt iteration of the enclosing)-.15
+F F2 -.25(fo)4.254 G(r).25 E F0(,)A F2(while)4.254 E F0(,)A F2(until)
+4.254 E F0 4.254(,o)C(r)-4.254 E F2(select)4.254 E F0 4.254(loop. If)
+4.254 F F1(n)4.614 E F0 1.754(is speci\214ed,)4.494 F 1.209
+(resume at the)144 124.8 R F1(n)3.709 E F0 1.209(th enclosing loop.)B F1
+(n)6.569 E F0 1.209(must be)3.949 F/F3 10/Symbol SF<b3>3.709 E F0 3.709
+(1. If)3.709 F F1(n)4.069 E F0 1.209
 (is greater than the number of enclosing)3.949 F .667
-(loops, the last enclosing loop \(the `)144 120 R(`top-le)-.74 E -.15
+(loops, the last enclosing loop \(the `)144 136.8 R(`top-le)-.74 E -.15
 (ve)-.25 G(l').15 E 3.167('l)-.74 G .667(oop\) is resumed.)-3.167 F .668
 (The return v)5.668 F .668(alue is 0 unless the)-.25 F(shell is not e)
-144 132 Q -.15(xe)-.15 G(cuting a loop when).15 E F1(continue)2.5 E F0
-(is e)2.5 E -.15(xe)-.15 G(cuted.).15 E F1(declar)108 148.8 Q(e)-.18 E
-F0([)2.5 E F1(\255afFirtx)A F0 2.5(][)C F1<ad70>-2.5 E F0 2.5(][)C F2
-(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C(..])-2.5 E F1(typeset)108
-160.8 Q F0([)2.5 E F1(\255afFirtx)A F0 2.5(][)C F1<ad70>-2.5 E F0 2.5
-(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C(..])-2.5 E 1.265
-(Declare v)144 172.8 R 1.265(ariables and/or gi)-.25 F 1.565 -.15(ve t)
--.25 H 1.265(hem attrib).15 F 3.765(utes. If)-.2 F(no)3.765 E F2(name)
+144 148.8 Q -.15(xe)-.15 G(cuting a loop when).15 E F2(continue)2.5 E F0
+(is e)2.5 E -.15(xe)-.15 G(cuted.).15 E F2(declar)108 165.6 Q(e)-.18 E
+F0([)2.5 E F2(\255afFirtx)A F0 2.5(][)C F2<ad70>-2.5 E F0 2.5(][)C F1
+(name)-2.5 E F0([=)A F1(value)A F0 2.5(].)C(..])-2.5 E F2(typeset)108
+177.6 Q F0([)2.5 E F2(\255afFirtx)A F0 2.5(][)C F2<ad70>-2.5 E F0 2.5
+(][)C F1(name)-2.5 E F0([=)A F1(value)A F0 2.5(].)C(..])-2.5 E 1.265
+(Declare v)144 189.6 R 1.265(ariables and/or gi)-.25 F 1.565 -.15(ve t)
+-.25 H 1.265(hem attrib).15 F 3.765(utes. If)-.2 F(no)3.765 E F1(name)
 3.765 E F0 3.765(sa)C 1.265(re gi)-3.765 F -.15(ve)-.25 G 3.764(nt).15 G
-1.264(hen display the v)-3.764 F 1.264(alues of)-.25 F -.25(va)144 184.8
-S 3.326(riables. The).25 F F1<ad70>3.326 E F0 .826
+1.264(hen display the v)-3.764 F 1.264(alues of)-.25 F -.25(va)144 201.6
+S 3.326(riables. The).25 F F2<ad70>3.326 E F0 .826
 (option will display the attrib)3.326 F .826(utes and v)-.2 F .826
-(alues of each)-.25 F F2(name)3.326 E F0 5.827(.W).18 G(hen)-5.827 E F1
+(alues of each)-.25 F F1(name)3.326 E F0 5.827(.W).18 G(hen)-5.827 E F2
 <ad70>3.327 E F0 .827(is used,)3.327 F .22
-(additional options are ignored.)144 196.8 R(The)5.22 E F1<ad46>2.72 E
+(additional options are ignored.)144 213.6 R(The)5.22 E F2<ad46>2.72 E
 F0 .22(option inhibits the display of function de\214nitions; only the)
-2.72 F .466(function name and attrib)144 208.8 R .466(utes are printed.)
--.2 F .466(If the)5.466 F F1(extdeb)2.966 E(ug)-.2 E F0 .466
-(shell option is enabled using)2.966 F F1(shopt)2.966 E F0 2.966(,t)C
+2.72 F .466(function name and attrib)144 225.6 R .466(utes are printed.)
+-.2 F .466(If the)5.466 F F2(extdeb)2.966 E(ug)-.2 E F0 .466
+(shell option is enabled using)2.966 F F2(shopt)2.966 E F0 2.966(,t)C
 (he)-2.966 E 1.308(source \214le name and line number where the functio\
-n is de\214ned are displayed as well.)144 220.8 R(The)6.308 E F1<ad46>
-3.808 E F0 .19(option implies)144 232.8 R F1<ad66>2.69 E F0 5.19(.T)C
+n is de\214ned are displayed as well.)144 237.6 R(The)6.308 E F2<ad46>
+3.808 E F0 .19(option implies)144 249.6 R F2<ad66>2.69 E F0 5.19(.T)C
 .19(he follo)-5.19 F .191
 (wing options can be used to restrict output to v)-.25 F .191
-(ariables with the speci-)-.25 F(\214ed attrib)144 244.8 Q(ute or to gi)
--.2 E .3 -.15(ve v)-.25 H(ariables attrib)-.1 E(utes:)-.2 E F1<ad61>144
-256.8 Q F0(Each)25.3 E F2(name)2.5 E F0(is an array v)2.5 E
-(ariable \(see)-.25 E F1(Arrays)2.5 E F0(abo)2.5 E -.15(ve)-.15 G(\).)
-.15 E F1<ad66>144 268.8 Q F0(Use function names only)26.97 E(.)-.65 E F1
-<ad69>144 280.8 Q F0 .558(The v)27.52 F .558
+(ariables with the speci-)-.25 F(\214ed attrib)144 261.6 Q(ute or to gi)
+-.2 E .3 -.15(ve v)-.25 H(ariables attrib)-.1 E(utes:)-.2 E F2<ad61>144
+273.6 Q F0(Each)25.3 E F1(name)2.5 E F0(is an array v)2.5 E
+(ariable \(see)-.25 E F2(Arrays)2.5 E F0(abo)2.5 E -.15(ve)-.15 G(\).)
+.15 E F2<ad66>144 285.6 Q F0(Use function names only)26.97 E(.)-.65 E F2
+<ad69>144 297.6 Q F0 .558(The v)27.52 F .558
 (ariable is treated as an inte)-.25 F .558(ger; arithmetic e)-.15 F -.25
 (va)-.25 G .558(luation \(see).25 F/F4 9/Times-Bold@0 SF .557
-(ARITHMETIC EV)3.058 F(ALU)-1.215 E(A-)-.54 E(TION \))180 292.8 Q F0
+(ARITHMETIC EV)3.058 F(ALU)-1.215 E(A-)-.54 E(TION \))180 309.6 Q F0
 (is performed when the v)2.25 E(ariable is assigned a v)-.25 E(alue.)
--.25 E F1<ad72>144 304.8 Q F0(Mak)25.86 E(e)-.1 E F2(name)5.046 E F0
+-.25 E F2<ad72>144 321.6 Q F0(Mak)25.86 E(e)-.1 E F1(name)5.046 E F0
 5.046(sr)C(eadonly)-5.046 E 7.546(.T)-.65 G 2.546
 (hese names cannot then be assigned v)-7.546 F 2.547
-(alues by subsequent)-.25 F(assignment statements or unset.)180 316.8 Q
-F1<ad74>144 328.8 Q F0(Gi)26.97 E 1.231 -.15(ve e)-.25 H(ach).15 E F2
-(name)3.431 E F0(the)3.431 E F2(tr)3.431 E(ace)-.15 E F0(attrib)3.431 E
-3.431(ute. T)-.2 F .931(raced functions inherit the)-.35 F F1(DEB)3.431
-E(UG)-.1 E F0 .93(trap from the)3.43 F(calling shell.)180 340.8 Q
+(alues by subsequent)-.25 F(assignment statements or unset.)180 333.6 Q
+F2<ad74>144 345.6 Q F0(Gi)26.97 E 1.231 -.15(ve e)-.25 H(ach).15 E F1
+(name)3.431 E F0(the)3.431 E F1(tr)3.431 E(ace)-.15 E F0(attrib)3.431 E
+3.431(ute. T)-.2 F .931(raced functions inherit the)-.35 F F2(DEB)3.431
+E(UG)-.1 E F0 .93(trap from the)3.43 F(calling shell.)180 357.6 Q
 (The trace attrib)5 E(ute has no special meaning for v)-.2 E(ariables.)
--.25 E F1<ad78>144 352.8 Q F0(Mark)25.3 E F2(name)2.5 E F0 2.5(sf)C
+-.25 E F2<ad78>144 369.6 Q F0(Mark)25.3 E F1(name)2.5 E F0 2.5(sf)C
 (or e)-2.5 E(xport to subsequent commands via the en)-.15 E(vironment.)
--.4 E .336(Using `+' instead of `\255' turns of)144 369.6 R 2.837(ft)
+-.4 E .336(Using `+' instead of `\255' turns of)144 386.4 R 2.837(ft)
 -.25 G .337(he attrib)-2.837 F .337(ute instead, with the e)-.2 F .337
-(xception that)-.15 F F1(+a)2.837 E F0 .337(may not be used)2.837 F .793
-(to destro)144 381.6 R 3.293(ya)-.1 G 3.293(na)-3.293 G .793(rray v)
+(xception that)-.15 F F2(+a)2.837 E F0 .337(may not be used)2.837 F .793
+(to destro)144 398.4 R 3.293(ya)-.1 G 3.293(na)-3.293 G .793(rray v)
 -3.293 F 3.293(ariable. When)-.25 F .793(used in a function, mak)3.293 F
-.793(es each)-.1 F F2(name)3.293 E F0 .793(local, as with the)3.293 F F1
-(local)3.292 E F0 2.842(command. If)144 393.6 R 2.842(av)2.842 G .342
-(ariable name is follo)-3.092 F .342(wed by =)-.25 F F2(value)A F0 2.842
+.793(es each)-.1 F F1(name)3.293 E F0 .793(local, as with the)3.293 F F2
+(local)3.292 E F0 2.842(command. If)144 410.4 R 2.842(av)2.842 G .342
+(ariable name is follo)-3.092 F .342(wed by =)-.25 F F1(value)A F0 2.842
 (,t)C .342(he v)-2.842 F .342(alue of the v)-.25 F .343
-(ariable is set to)-.25 F F2(value)2.843 E F0 5.343(.T)C(he)-5.343 E
-.801(return v)144 405.6 R .801(alue is 0 unless an in)-.25 F -.25(va)-.4
+(ariable is set to)-.25 F F1(value)2.843 E F0 5.343(.T)C(he)-5.343 E
+.801(return v)144 422.4 R .801(alue is 0 unless an in)-.25 F -.25(va)-.4
 G .8
 (lid option is encountered, an attempt is made to de\214ne a function)
-.25 F(using)144 417.6 Q/F5 10/Courier@0 SF 1.038(\255f foo=bar)3.538 F
+.25 F(using)144 434.4 Q/F5 10/Courier@0 SF 1.038(\255f foo=bar)3.538 F
 F0 3.538(,a)C 3.538(na)-3.538 G 1.038(ttempt is made to assign a v)
 -3.538 F 1.038(alue to a readonly v)-.25 F 1.039(ariable, an attempt is)
--.25 F .974(made to assign a v)144 429.6 R .974(alue to an array v)-.25
+-.25 F .974(made to assign a v)144 446.4 R .974(alue to an array v)-.25
 F .974(ariable without using the compound assignment syntax \(see)-.25 F
-F1(Arrays)144 441.6 Q F0(abo)2.86 E -.15(ve)-.15 G .36(\), one of the)
-.15 F F2(names)2.86 E F0 .36(is not a v)2.86 F .36(alid shell v)-.25 F
+F2(Arrays)144 458.4 Q F0(abo)2.86 E -.15(ve)-.15 G .36(\), one of the)
+.15 F F1(names)2.86 E F0 .36(is not a v)2.86 F .36(alid shell v)-.25 F
 .36(ariable name, an attempt is made to turn of)-.25 F(f)-.25 E .057
-(readonly status for a readonly v)144 453.6 R .057
+(readonly status for a readonly v)144 470.4 R .057
 (ariable, an attempt is made to turn of)-.25 F 2.556(fa)-.25 G .056
 (rray status for an array v)-2.556 F(ari-)-.25 E
-(able, or an attempt is made to display a non-e)144 465.6 Q
-(xistent function with)-.15 E F1<ad66>2.5 E F0(.)A F1
-(dirs [\255clpv] [+)108 482.4 Q F2(n)A F1 2.5(][)C<ad>-2.5 E F2(n)A F1
-(])A F0 -.4(Wi)144 494.4 S .328
+(able, or an attempt is made to display a non-e)144 482.4 Q
+(xistent function with)-.15 E F2<ad66>2.5 E F0(.)A F2
+(dirs [\255clpv] [+)108 499.2 Q F1(n)A F2 2.5(][)C<ad>-2.5 E F1(n)A F2
+(])A F0 -.4(Wi)144 511.2 S .328
 (thout options, displays the list of currently remembered directories.)
 .4 F .329(The def)5.329 F .329(ault display is on a)-.1 F 1.238
-(single line with directory names separated by spaces.)144 506.4 R 1.238
-(Directories are added to the list with the)6.238 F F1(pushd)144 518.4 Q
-F0(command; the)2.5 E F1(popd)2.5 E F0(command remo)2.5 E -.15(ve)-.15 G
-2.5(se).15 G(ntries from the list.)-2.5 E F1(+)144 530.4 Q F2(n)A F0
-1.564(Displays the)25.3 F F2(n)4.064 E F0 1.565
-(th entry counting from the left of the list sho)B 1.565(wn by)-.25 F F1
+(single line with directory names separated by spaces.)144 523.2 R 1.238
+(Directories are added to the list with the)6.238 F F2(pushd)144 535.2 Q
+F0(command; the)2.5 E F2(popd)2.5 E F0(command remo)2.5 E -.15(ve)-.15 G
+2.5(se).15 G(ntries from the list.)-2.5 E F2(+)144 547.2 Q F1(n)A F0
+1.564(Displays the)25.3 F F1(n)4.064 E F0 1.565
+(th entry counting from the left of the list sho)B 1.565(wn by)-.25 F F2
 (dirs)4.065 E F0 1.565(when in)4.065 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E
-(without options, starting with zero.)180 542.4 Q F1<ad>144 554.4 Q F2
-(n)A F0 1.194(Displays the)25.3 F F2(n)3.694 E F0 1.194
+(without options, starting with zero.)180 559.2 Q F2<ad>144 571.2 Q F1
+(n)A F0 1.194(Displays the)25.3 F F1(n)3.694 E F0 1.194
 (th entry counting from the right of the list sho)B 1.194(wn by)-.25 F
-F1(dirs)3.694 E F0 1.194(when in)3.694 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E
-(without options, starting with zero.)180 566.4 Q F1<ad63>144 578.4 Q F0
-(Clears the directory stack by deleting all of the entries.)25.86 E F1
-<ad6c>144 590.4 Q F0 .324(Produces a longer listing; the def)27.52 F
+F2(dirs)3.694 E F0 1.194(when in)3.694 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E
+(without options, starting with zero.)180 583.2 Q F2<ad63>144 595.2 Q F0
+(Clears the directory stack by deleting all of the entries.)25.86 E F2
+<ad6c>144 607.2 Q F0 .324(Produces a longer listing; the def)27.52 F
 .324(ault listing format uses a tilde to denote the home direc-)-.1 F
-(tory)180 602.4 Q(.)-.65 E F1<ad70>144 614.4 Q F0
-(Print the directory stack with one entry per line.)24.74 E F1<ad76>144
-626.4 Q F0 .273(Print the directory stack with one entry per line, pre\
+(tory)180 619.2 Q(.)-.65 E F2<ad70>144 631.2 Q F0
+(Print the directory stack with one entry per line.)24.74 E F2<ad76>144
+643.2 Q F0 .273(Print the directory stack with one entry per line, pre\
 \214xing each entry with its inde)25.3 F 2.772(xi)-.15 G 2.772(nt)-2.772
-G(he)-2.772 E(stack.)180 638.4 Q .257(The return v)144 655.2 R .258
+G(he)-2.772 E(stack.)180 655.2 Q .257(The return v)144 672 R .258
 (alue is 0 unless an in)-.25 F -.25(va)-.4 G .258
-(lid option is supplied or).25 F F2(n)2.758 E F0(inde)2.758 E -.15(xe)
+(lid option is supplied or).25 F F1(n)2.758 E F0(inde)2.758 E -.15(xe)
 -.15 G 2.758(sb).15 G -.15(ey)-2.758 G .258(ond the end of the direc-)
-.15 F(tory stack.)144 667.2 Q F1(diso)108 684 Q(wn)-.1 E F0([)2.5 E F1
-(\255ar)A F0 2.5(][)C F1<ad68>-2.5 E F0 2.5(][)C F2(jobspec)-2.5 E F0
-(...])2.5 E -.4(Wi)144 696 S .331(thout options, each).4 F F2(jobspec)
+.15 F(tory stack.)144 684 Q F2(diso)108 700.8 Q(wn)-.1 E F0([)2.5 E F2
+(\255ar)A F0 2.5(][)C F2<ad68>-2.5 E F0 2.5(][)C F1(jobspec)-2.5 E F0
+(...])2.5 E -.4(Wi)144 712.8 S .331(thout options, each).4 F F1(jobspec)
 4.571 E F0 .331(is remo)3.141 F -.15(ve)-.15 G 2.831(df).15 G .331
 (rom the table of acti)-2.831 F .63 -.15(ve j)-.25 H 2.83(obs. If).15 F
-(the)2.83 E F1<ad68>2.83 E F0 .33(option is gi)2.83 F -.15(ve)-.25 G(n,)
-.15 E(each)144 708 Q F2(jobspec)4.52 E F0 .28(is not remo)3.09 F -.15
+(the)2.83 E F2<ad68>2.83 E F0 .33(option is gi)2.83 F -.15(ve)-.25 G(n,)
+.15 E(each)144 724.8 Q F1(jobspec)4.52 E F0 .28(is not remo)3.09 F -.15
 (ve)-.15 G 2.78(df).15 G .28(rom the table, b)-2.78 F .28(ut is mark)-.2
 F .28(ed so that)-.1 F F4(SIGHUP)2.78 E F0 .281
-(is not sent to the job if)2.53 F 1.332(the shell recei)144 720 R -.15
-(ve)-.25 G 3.832(sa).15 G F4(SIGHUP)A/F6 9/Times-Roman@0 SF(.)A F0 1.332
-(If no)5.832 F F2(jobspec)5.572 E F0 1.332(is present, and neither the)
-4.142 F F1<ad61>3.832 E F0 1.332(nor the)3.832 F F1<ad72>3.832 E F0
-1.331(option is)3.831 F(GNU Bash-3.0)72 768 Q(2004 Apr 20)148.735 E(5)
-203.725 E 0 Cg EP
+(is not sent to the job if)2.53 F(GNU Bash-3.0)72 768 Q(2004 Apr 20)
+148.735 E(5)203.725 E 0 Cg EP
 %%Page: 6 6
 %%BeginPageSetup
 BP
 %%EndPageSetup
 /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 290.48
-(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E 1.228
-(supplied, the)144 84 R/F1 10/Times-Italic@0 SF(curr)3.728 E 1.228
-(ent job)-.37 F F0 1.229(is used.)3.729 F 1.229(If no)6.229 F F1
-(jobspec)5.469 E F0 1.229(is supplied, the)4.039 F/F2 10/Times-Bold@0 SF
-<ad61>3.729 E F0 1.229(option means to remo)3.729 F 1.529 -.15(ve o)-.15
-H(r).15 E .657(mark all jobs; the)144 96 R F2<ad72>3.157 E F0 .657
-(option without a)3.157 F F1(jobspec)4.897 E F0(ar)3.467 E .656
-(gument restricts operation to running jobs.)-.18 F(The)5.656 E
-(return v)144 108 Q(alue is 0 unless a)-.25 E F1(jobspec)4.24 E F0
-(does not specify a v)2.81 E(alid job)-.25 E(.)-.4 E F2(echo)108 124.8 Q
-F0([)2.5 E F2(\255neE)A F0 2.5(][)C F1(ar)-2.5 E(g)-.37 E F0(...])2.5 E
-.394(Output the)144 136.8 R F1(ar)2.894 E(g)-.37 E F0 .394
+(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E .224
+(the shell recei)144 84 R -.15(ve)-.25 G 2.724(sa).15 G/F1 9
+/Times-Bold@0 SF(SIGHUP)A/F2 9/Times-Roman@0 SF(.)A F0 .224(If no)4.724
+F/F3 10/Times-Italic@0 SF(jobspec)4.464 E F0 .224
+(is present, and neither the)3.034 F/F4 10/Times-Bold@0 SF<ad61>2.724 E
+F0 .224(nor the)2.724 F F4<ad72>2.724 E F0 .223(option is sup-)2.724 F
+.651(plied, the)144 96 R F3(curr)3.151 E .651(ent job)-.37 F F0 .651
+(is used.)3.151 F .652(If no)5.651 F F3(jobspec)4.892 E F0 .652
+(is supplied, the)3.462 F F4<ad61>3.152 E F0 .652(option means to remo)
+3.152 F .952 -.15(ve o)-.15 H 3.152(rm).15 G(ark)-3.152 E .435
+(all jobs; the)144 108 R F4<ad72>2.935 E F0 .435(option without a)2.935
+F F3(jobspec)4.675 E F0(ar)3.245 E .434
+(gument restricts operation to running jobs.)-.18 F .434(The return)
+5.434 F -.25(va)144 120 S(lue is 0 unless a).25 E F3(jobspec)4.24 E F0
+(does not specify a v)2.81 E(alid job)-.25 E(.)-.4 E F4(echo)108 136.8 Q
+F0([)2.5 E F4(\255neE)A F0 2.5(][)C F3(ar)-2.5 E(g)-.37 E F0(...])2.5 E
+.394(Output the)144 148.8 R F3(ar)2.894 E(g)-.37 E F0 .394
 (s, separated by spaces, follo)B .395(wed by a ne)-.25 F 2.895
 (wline. The)-.25 F .395(return status is al)2.895 F -.1(wa)-.1 G .395
-(ys 0.).1 F(If)5.395 E F2<ad6e>2.895 E F0 .549
-(is speci\214ed, the trailing ne)144 148.8 R .548(wline is suppressed.)
--.25 F .548(If the)5.548 F F2<ad65>3.048 E F0 .548(option is gi)3.048 F
--.15(ve)-.25 G .548(n, interpretation of the fol-).15 F(lo)144 160.8 Q
-.052(wing backslash-escaped characters is enabled.)-.25 F(The)5.052 E F2
+(ys 0.).1 F(If)5.395 E F4<ad6e>2.895 E F0 .549
+(is speci\214ed, the trailing ne)144 160.8 R .548(wline is suppressed.)
+-.25 F .548(If the)5.548 F F4<ad65>3.048 E F0 .548(option is gi)3.048 F
+-.15(ve)-.25 G .548(n, interpretation of the fol-).15 F(lo)144 172.8 Q
+.052(wing backslash-escaped characters is enabled.)-.25 F(The)5.052 E F4
 <ad45>2.552 E F0 .053(option disables the interpretation of these)2.553
-F 1.503(escape characters, e)144 172.8 R -.15(ve)-.25 G 4.003(no).15 G
+F 1.503(escape characters, e)144 184.8 R -.15(ve)-.25 G 4.003(no).15 G
 4.003(ns)-4.003 G 1.502(ystems where the)-4.003 F 4.002(ya)-.15 G 1.502
-(re interpreted by def)-4.002 F 4.002(ault. The)-.1 F F2(xpg_echo)4.002
+(re interpreted by def)-4.002 F 4.002(ault. The)-.1 F F4(xpg_echo)4.002
 E F0(shell)4.002 E .009
-(option may be used to dynamically determine whether or not)144 184.8 R
-F2(echo)2.509 E F0 -.15(ex)2.51 G .01(pands these escape characters).15
-F .66(by def)144 196.8 R(ault.)-.1 E F2(echo)5.66 E F0 .66
-(does not interpret)3.16 F F2<adad>3.16 E F0 .659
-(to mean the end of options.)3.159 F F2(echo)5.659 E F0 .659
-(interprets the follo)3.159 F(wing)-.25 E(escape sequences:)144 208.8 Q
-F2(\\a)144 220.8 Q F0(alert \(bell\))28.22 E F2(\\b)144 232.8 Q F0
-(backspace)27.66 E F2(\\c)144 244.8 Q F0(suppress trailing ne)28.78 E
-(wline)-.25 E F2(\\e)144 256.8 Q F0(an escape character)28.78 E F2(\\f)
-144 268.8 Q F0(form feed)29.89 E F2(\\n)144 280.8 Q F0(ne)27.66 E 2.5
-(wl)-.25 G(ine)-2.5 E F2(\\r)144 292.8 Q F0(carriage return)28.78 E F2
-(\\t)144 304.8 Q F0(horizontal tab)29.89 E F2(\\v)144 316.8 Q F0 -.15
-(ve)28.22 G(rtical tab).15 E F2(\\\\)144 328.8 Q F0(backslash)30.44 E F2
-(\\0)144 340.8 Q F1(nnn)A F0(the eight-bit character whose v)13.22 E
-(alue is the octal v)-.25 E(alue)-.25 E F1(nnn)2.5 E F0
-(\(zero to three octal digits\))2.5 E F2(\\)144 352.8 Q F1(nnn)A F0
+(option may be used to dynamically determine whether or not)144 196.8 R
+F4(echo)2.509 E F0 -.15(ex)2.51 G .01(pands these escape characters).15
+F .66(by def)144 208.8 R(ault.)-.1 E F4(echo)5.66 E F0 .66
+(does not interpret)3.16 F F4<adad>3.16 E F0 .659
+(to mean the end of options.)3.159 F F4(echo)5.659 E F0 .659
+(interprets the follo)3.159 F(wing)-.25 E(escape sequences:)144 220.8 Q
+F4(\\a)144 232.8 Q F0(alert \(bell\))28.22 E F4(\\b)144 244.8 Q F0
+(backspace)27.66 E F4(\\c)144 256.8 Q F0(suppress trailing ne)28.78 E
+(wline)-.25 E F4(\\e)144 268.8 Q F0(an escape character)28.78 E F4(\\f)
+144 280.8 Q F0(form feed)29.89 E F4(\\n)144 292.8 Q F0(ne)27.66 E 2.5
+(wl)-.25 G(ine)-2.5 E F4(\\r)144 304.8 Q F0(carriage return)28.78 E F4
+(\\t)144 316.8 Q F0(horizontal tab)29.89 E F4(\\v)144 328.8 Q F0 -.15
+(ve)28.22 G(rtical tab).15 E F4(\\\\)144 340.8 Q F0(backslash)30.44 E F4
+(\\0)144 352.8 Q F3(nnn)A F0(the eight-bit character whose v)13.22 E
+(alue is the octal v)-.25 E(alue)-.25 E F3(nnn)2.5 E F0
+(\(zero to three octal digits\))2.5 E F4(\\)144 364.8 Q F3(nnn)A F0
 (the eight-bit character whose v)18.22 E(alue is the octal v)-.25 E
-(alue)-.25 E F1(nnn)2.5 E F0(\(one to three octal digits\))2.5 E F2(\\x)
-144 364.8 Q F1(HH)A F0(the eight-bit character whose v)13.78 E
-(alue is the he)-.25 E(xadecimal v)-.15 E(alue)-.25 E F1(HH)2.5 E F0
-(\(one or tw)2.5 E 2.5(oh)-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F2
-(enable)108 381.6 Q F0([)2.5 E F2(\255adnps)A F0 2.5(][)C F2<ad66>-2.5 E
-F1(\214lename)2.5 E F0 2.5(][)C F1(name)-2.5 E F0(...])2.5 E .277
-(Enable and disable b)144 393.6 R .278(uiltin shell commands.)-.2 F .278
+(alue)-.25 E F3(nnn)2.5 E F0(\(one to three octal digits\))2.5 E F4(\\x)
+144 376.8 Q F3(HH)A F0(the eight-bit character whose v)13.78 E
+(alue is the he)-.25 E(xadecimal v)-.15 E(alue)-.25 E F3(HH)2.5 E F0
+(\(one or tw)2.5 E 2.5(oh)-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F4
+(enable)108 393.6 Q F0([)2.5 E F4(\255adnps)A F0 2.5(][)C F4<ad66>-2.5 E
+F3(\214lename)2.5 E F0 2.5(][)C F3(name)-2.5 E F0(...])2.5 E .277
+(Enable and disable b)144 405.6 R .278(uiltin shell commands.)-.2 F .278
 (Disabling a b)5.278 F .278(uiltin allo)-.2 F .278
 (ws a disk command which has)-.25 F .834(the same name as a shell b)144
-405.6 R .834(uiltin to be e)-.2 F -.15(xe)-.15 G .834
+417.6 R .834(uiltin to be e)-.2 F -.15(xe)-.15 G .834
 (cuted without specifying a full pathname, e).15 F -.15(ve)-.25 G 3.333
 (nt).15 G(hough)-3.333 E .989(the shell normally searches for b)144
-417.6 R .989(uiltins before disk commands.)-.2 F(If)5.989 E F2<ad6e>
-3.489 E F0 .99(is used, each)3.49 F F1(name)3.49 E F0 .99(is dis-)3.49 F
-1.582(abled; otherwise,)144 429.6 R F1(names)4.082 E F0 1.582
+429.6 R .989(uiltins before disk commands.)-.2 F(If)5.989 E F4<ad6e>
+3.489 E F0 .99(is used, each)3.49 F F3(name)3.49 E F0 .99(is dis-)3.49 F
+1.582(abled; otherwise,)144 441.6 R F3(names)4.082 E F0 1.582
 (are enabled.)4.082 F -.15(Fo)6.582 G 4.082(re).15 G 1.582
-(xample, to use the)-4.232 F F2(test)4.082 E F0 1.582
-(binary found via the)4.082 F/F3 9/Times-Bold@0 SF -.666(PA)4.081 G(TH)
--.189 E F0 .08(instead of the shell b)144 441.6 R .08(uiltin v)-.2 F .08
-(ersion, run)-.15 F/F4 10/Courier@0 SF .081(enable -n test)2.58 F F0
-5.081(.T)C(he)-5.081 E F2<ad66>2.581 E F0 .081
-(option means to load the ne)2.581 F(w)-.25 E -.2(bu)144 453.6 S 1.525
-(iltin command).2 F F1(name)4.385 E F0 1.524(from shared object)4.204 F
-F1(\214lename)4.024 E F0 4.024(,o).18 G 4.024(ns)-4.024 G 1.524
-(ystems that support dynamic loading.)-4.024 F(The)144 465.6 Q F2<ad64>
-2.866 E F0 .366(option will delete a b)2.866 F .366(uiltin pre)-.2 F
-.366(viously loaded with)-.25 F F2<ad66>2.867 E F0 5.367(.I)C 2.867(fn)
--5.367 G(o)-2.867 E F1(name)2.867 E F0(ar)2.867 E .367(guments are gi)
--.18 F -.15(ve)-.25 G .367(n, or).15 F .399(if the)144 477.6 R F2<ad70>
-2.899 E F0 .399(option is supplied, a list of shell b)2.899 F .399
-(uiltins is printed.)-.2 F -.4(Wi)5.399 G .399(th no other option ar).4
-F .398(guments, the)-.18 F .098(list consists of all enabled shell b)144
-489.6 R 2.598(uiltins. If)-.2 F F2<ad6e>2.598 E F0 .098
-(is supplied, only disabled b)2.598 F .099(uiltins are printed.)-.2 F
-(If)5.099 E F2<ad61>2.599 E F0 1.917
-(is supplied, the list printed includes all b)144 501.6 R 1.916
+(xample, to use the)-4.232 F F4(test)4.082 E F0 1.582
+(binary found via the)4.082 F F1 -.666(PA)4.081 G(TH)-.189 E F0 .08
+(instead of the shell b)144 453.6 R .08(uiltin v)-.2 F .08(ersion, run)
+-.15 F/F5 10/Courier@0 SF .081(enable -n test)2.58 F F0 5.081(.T)C(he)
+-5.081 E F4<ad66>2.581 E F0 .081(option means to load the ne)2.581 F(w)
+-.25 E -.2(bu)144 465.6 S 1.525(iltin command).2 F F3(name)4.385 E F0
+1.524(from shared object)4.204 F F3(\214lename)4.024 E F0 4.024(,o).18 G
+4.024(ns)-4.024 G 1.524(ystems that support dynamic loading.)-4.024 F
+(The)144 477.6 Q F4<ad64>2.866 E F0 .366(option will delete a b)2.866 F
+.366(uiltin pre)-.2 F .366(viously loaded with)-.25 F F4<ad66>2.867 E F0
+5.367(.I)C 2.867(fn)-5.367 G(o)-2.867 E F3(name)2.867 E F0(ar)2.867 E
+.367(guments are gi)-.18 F -.15(ve)-.25 G .367(n, or).15 F .399(if the)
+144 489.6 R F4<ad70>2.899 E F0 .399
+(option is supplied, a list of shell b)2.899 F .399(uiltins is printed.)
+-.2 F -.4(Wi)5.399 G .399(th no other option ar).4 F .398(guments, the)
+-.18 F .098(list consists of all enabled shell b)144 501.6 R 2.598
+(uiltins. If)-.2 F F4<ad6e>2.598 E F0 .098(is supplied, only disabled b)
+2.598 F .099(uiltins are printed.)-.2 F(If)5.099 E F4<ad61>2.599 E F0
+1.917(is supplied, the list printed includes all b)144 513.6 R 1.916
 (uiltins, with an indication of whether or not each is)-.2 F 2.878
-(enabled. If)144 513.6 R F2<ad73>2.878 E F0 .379
-(is supplied, the output is restricted to the POSIX)2.878 F F1(special)
+(enabled. If)144 525.6 R F4<ad73>2.878 E F0 .379
+(is supplied, the output is restricted to the POSIX)2.878 F F3(special)
 2.879 E F0 -.2(bu)2.879 G 2.879(iltins. The).2 F .379(return v)2.879 F
-(alue)-.25 E .995(is 0 unless a)144 525.6 R F1(name)3.855 E F0 .994
+(alue)-.25 E .995(is 0 unless a)144 537.6 R F3(name)3.855 E F0 .994
 (is not a shell b)3.675 F .994(uiltin or there is an error loading a ne)
 -.2 F 3.494(wb)-.25 G .994(uiltin from a shared)-3.694 F(object.)144
-537.6 Q F2 -2.3 -.15(ev a)108 554.4 T(l).15 E F0([)2.5 E F1(ar)A(g)-.37
-E F0(...])2.5 E(The)144 566.4 Q F1(ar)3.17 E(g)-.37 E F0 3.17(sa)C .671
+549.6 Q F4 -2.3 -.15(ev a)108 566.4 T(l).15 E F0([)2.5 E F3(ar)A(g)-.37
+E F0(...])2.5 E(The)144 578.4 Q F3(ar)3.17 E(g)-.37 E F0 3.17(sa)C .671
 (re read and concatenated together into a single command.)-3.17 F .671
-(This command is then read)5.671 F .495(and e)144 578.4 R -.15(xe)-.15 G
+(This command is then read)5.671 F .495(and e)144 590.4 R -.15(xe)-.15 G
 .495(cuted by the shell, and its e).15 F .495
-(xit status is returned as the v)-.15 F .495(alue of)-.25 F F2 -2.3 -.15
+(xit status is returned as the v)-.15 F .495(alue of)-.25 F F4 -2.3 -.15
 (ev a)2.995 H(l).15 E F0 5.495(.I)C 2.995(ft)-5.495 G .495(here are no)
--2.995 F F1(ar)2.995 E(gs)-.37 E F0(,).27 E(or only null ar)144 590.4 Q
-(guments,)-.18 E F2 -2.3 -.15(ev a)2.5 H(l).15 E F0(returns 0.)2.5 E F2
-(exec)108 607.2 Q F0([)2.5 E F2(\255cl)A F0 2.5(][)C F2<ad61>-2.5 E F1
-(name)2.5 E F0 2.5(][)C F1(command)-2.5 E F0([)2.5 E F1(ar)A(guments)
--.37 E F0(]])A(If)144 619.2 Q F1(command)3.005 E F0 .305
+-2.995 F F3(ar)2.995 E(gs)-.37 E F0(,).27 E(or only null ar)144 602.4 Q
+(guments,)-.18 E F4 -2.3 -.15(ev a)2.5 H(l).15 E F0(returns 0.)2.5 E F4
+(exec)108 619.2 Q F0([)2.5 E F4(\255cl)A F0 2.5(][)C F4<ad61>-2.5 E F3
+(name)2.5 E F0 2.5(][)C F3(command)-2.5 E F0([)2.5 E F3(ar)A(guments)
+-.37 E F0(]])A(If)144 631.2 Q F3(command)3.005 E F0 .305
 (is speci\214ed, it replaces the shell.)3.575 F .305(No ne)5.305 F 2.805
-(wp)-.25 G .306(rocess is created.)-2.805 F(The)5.306 E F1(ar)3.136 E
-(guments)-.37 E F0(become)3.076 E .177(the ar)144 631.2 R .177
-(guments to)-.18 F F1(command)2.676 E F0 5.176(.I)C 2.676(ft)-5.176 G
-(he)-2.676 E F2<ad6c>2.676 E F0 .176
+(wp)-.25 G .306(rocess is created.)-2.805 F(The)5.306 E F3(ar)3.136 E
+(guments)-.37 E F0(become)3.076 E .177(the ar)144 643.2 R .177
+(guments to)-.18 F F3(command)2.676 E F0 5.176(.I)C 2.676(ft)-5.176 G
+(he)-2.676 E F4<ad6c>2.676 E F0 .176
 (option is supplied, the shell places a dash at the be)2.676 F .176
-(ginning of)-.15 F .159(the zeroth ar)144 643.2 R 2.659(gp)-.18 G .159
-(assed to)-2.659 F F1(command)2.659 E F0 5.159(.T).77 G .159
-(his is what)-5.159 F F1(lo)2.659 E(gin)-.1 E F0 .159(\(1\) does.).24 F
-(The)5.16 E F2<ad63>2.66 E F0 .16(option causes)2.66 F F1(command)2.86 E
-F0(to)3.43 E 1.196(be e)144 655.2 R -.15(xe)-.15 G 1.196
-(cuted with an empty en).15 F 3.696(vironment. If)-.4 F F2<ad61>3.696 E
-F0 1.196(is supplied, the shell passes)3.696 F F1(name)4.055 E F0 1.195
-(as the zeroth)3.875 F(ar)144 667.2 Q .02(gument to the e)-.18 F -.15
-(xe)-.15 G .02(cuted command.).15 F(If)5.02 E F1(command)2.72 E F0 .02
+(ginning of)-.15 F .159(the zeroth ar)144 655.2 R 2.659(gp)-.18 G .159
+(assed to)-2.659 F F3(command)2.659 E F0 5.159(.T).77 G .159
+(his is what)-5.159 F F3(lo)2.659 E(gin)-.1 E F0 .159(\(1\) does.).24 F
+(The)5.16 E F4<ad63>2.66 E F0 .16(option causes)2.66 F F3(command)2.86 E
+F0(to)3.43 E 1.196(be e)144 667.2 R -.15(xe)-.15 G 1.196
+(cuted with an empty en).15 F 3.696(vironment. If)-.4 F F4<ad61>3.696 E
+F0 1.196(is supplied, the shell passes)3.696 F F3(name)4.055 E F0 1.195
+(as the zeroth)3.875 F(ar)144 679.2 Q .02(gument to the e)-.18 F -.15
+(xe)-.15 G .02(cuted command.).15 F(If)5.02 E F3(command)2.72 E F0 .02
 (cannot be e)3.29 F -.15(xe)-.15 G .02
-(cuted for some reason, a non-inter).15 F(-)-.2 E(acti)144 679.2 Q 1.067
+(cuted for some reason, a non-inter).15 F(-)-.2 E(acti)144 691.2 Q 1.067
 -.15(ve s)-.25 H .767(hell e).15 F .767(xits, unless the shell option)
--.15 F F2(execfail)3.266 E F0 .766
+-.15 F F4(execfail)3.266 E F0 .766
 (is enabled, in which case it returns f)3.266 F 3.266(ailure. An)-.1 F
-(interacti)144 691.2 Q 1.518 -.15(ve s)-.25 H 1.218(hell returns f).15 F
+(interacti)144 703.2 Q 1.518 -.15(ve s)-.25 H 1.218(hell returns f).15 F
 1.219(ailure if the \214le cannot be e)-.1 F -.15(xe)-.15 G 3.719
-(cuted. If).15 F F1(command)3.919 E F0 1.219(is not speci\214ed, an)
-4.489 F(y)-.15 E .134(redirections tak)144 703.2 R 2.634(ee)-.1 G -.25
+(cuted. If).15 F F3(command)3.919 E F0 1.219(is not speci\214ed, an)
+4.489 F(y)-.15 E .134(redirections tak)144 715.2 R 2.634(ee)-.1 G -.25
 (ff)-2.634 G .134(ect in the current shell, and the return status is 0.)
 .25 F .134(If there is a redirection error)5.134 F(,)-.4 E
-(the return status is 1.)144 715.2 Q(GNU Bash-3.0)72 768 Q(2004 Apr 20)
+(the return status is 1.)144 727.2 Q(GNU Bash-3.0)72 768 Q(2004 Apr 20)
 148.735 E(6)203.725 E 0 Cg EP
 %%Page: 7 7
 %%BeginPageSetup
index ffcc3eea8c0f79d7083f8e480f3ec820db8dd357..4cb8c94202868254d6e24e08690fd8d1916c15f9 100644 (file)
@@ -1,6 +1,6 @@
 %!PS-Adobe-3.0
 %%Creator: groff version 1.18.1
-%%CreationDate: Mon Aug 30 08:27:13 2004
+%%CreationDate: Tue Sep 21 11:57:03 2004
 %%DocumentNeededResources: font Times-Roman
 %%+ font Times-Bold
 %%DocumentSuppliedResources: procset grops 1.18 1
index 1ef179eae918a2deb00b5ec033419a0ac7fe9dee..98c4a426d502f2a2bf3fa6b1b731caf4baecea0b 100644 (file)
@@ -1360,6 +1360,7 @@ execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close)
 #if defined (JOB_CONTROL)
          terminate_current_pipeline ();
          kill_current_pipeline ();
+         UNBLOCK_CHILD (oset);
 #endif /* JOB_CONTROL */
          last_command_exit_value = EXECUTION_FAILURE;
          /* The unwind-protects installed below will take care
@@ -2190,14 +2191,6 @@ execute_case_command (case_command)
     }
 #endif
 
-  /* Posix.2 specifies that the WORD is tilde expanded. */
-  if (member ('~', case_command->word->word))
-    {
-      word = bash_tilde_expand (case_command->word->word, 0);
-      free (case_command->word->word);
-      case_command->word->word = word;
-    }
-
   wlist = expand_word_unsplit (case_command->word, 0);
   word = wlist ? string_list (wlist) : savestring ("");
   dispose_words (wlist);
@@ -2215,15 +2208,6 @@ execute_case_command (case_command)
       QUIT;
       for (list = clauses->patterns; list; list = list->next)
        {
-         /* Posix.2 specifies to tilde expand each member of the pattern
-            list. */
-         if (member ('~', list->word->word))
-           {
-             pattern = bash_tilde_expand (list->word->word, 0);
-             free (list->word->word);
-             list->word->word = pattern;
-           }
-
          es = expand_word_leave_quoted (list->word, 0);
 
          if (es && es->word && es->word->word && *(es->word->word))
index 44426fda006b317055438bd2da0ccca2686bb415..7873ec5eef67bebba8b03cffb000092c280e2b34 100644 (file)
@@ -1274,6 +1274,11 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close)
 
   tcom = (command->type == cm_subshell) ? command->value.Subshell->command : command;
 
+  if (command->flags & CMD_TIME_PIPELINE)
+    tcom->flags |= CMD_TIME_PIPELINE;
+  if (command->flags & CMD_TIME_POSIX)
+    tcom->flags |= CMD_TIME_POSIX;
+  
   /* Make sure the subshell inherits any CMD_IGNORE_RETURN flag. */
   if ((command->flags & CMD_IGNORE_RETURN) && tcom != command)
     tcom->flags |= CMD_IGNORE_RETURN;
@@ -1360,6 +1365,9 @@ execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close)
          /* The unwind-protects installed below will take care
             of closing all of the open file descriptors. */
          throw_to_top_level ();
+#if defined (JOB_CONTROL)
+         UNBLOCK_CHILD (oset);
+#endif
          return (EXECUTION_FAILURE);   /* XXX */
        }
 
@@ -2185,14 +2193,6 @@ execute_case_command (case_command)
     }
 #endif
 
-  /* Posix.2 specifies that the WORD is tilde expanded. */
-  if (member ('~', case_command->word->word))
-    {
-      word = bash_tilde_expand (case_command->word->word, 0);
-      free (case_command->word->word);
-      case_command->word->word = word;
-    }
-
   wlist = expand_word_unsplit (case_command->word, 0);
   word = wlist ? string_list (wlist) : savestring ("");
   dispose_words (wlist);
@@ -2210,15 +2210,6 @@ execute_case_command (case_command)
       QUIT;
       for (list = clauses->patterns; list; list = list->next)
        {
-         /* Posix.2 specifies to tilde expand each member of the pattern
-            list. */
-         if (member ('~', list->word->word))
-           {
-             pattern = bash_tilde_expand (list->word->word, 0);
-             free (list->word->word);
-             list->word->word = pattern;
-           }
-
          es = expand_word_leave_quoted (list->word, 0);
 
          if (es && es->word && es->word->word && *(es->word->word))
@@ -2508,9 +2499,15 @@ execute_cond_node (cond)
        }
       else
 #endif /* COND_REGEXP */
-       result = binary_test (cond->op->word, arg1, arg2, TEST_PATMATCH|TEST_ARITHEXP)
-                               ? EXECUTION_SUCCESS
-                               : EXECUTION_FAILURE;
+       {
+         int oe;
+         oe = extended_glob;
+         extended_glob = 1;
+         result = binary_test (cond->op->word, arg1, arg2, TEST_PATMATCH|TEST_ARITHEXP)
+                                 ? EXECUTION_SUCCESS
+                                 : EXECUTION_FAILURE;
+         extended_glob = oe;
+       }
       if (arg1 != nullstr)
        free (arg1);
       if (arg2 != nullstr)
index 1ef6d0f6dd1d0e990acd923fbc1c056cddb697ee..de31707dc91b2d9296ab6c839c692780043af8f7 100644 (file)
--- a/general.c
+++ b/general.c
@@ -690,7 +690,9 @@ extern char *get_dirstack_from_string __P((char *));
 #endif
 
 static char **bash_tilde_prefixes;
+static char **bash_tilde_prefixes2;
 static char **bash_tilde_suffixes;
+static char **bash_tilde_suffixes2;
 
 /* If tilde_expand hasn't been able to expand the text, perhaps it
    is a special shell expansion.  This function is installed as the
@@ -738,6 +740,10 @@ tilde_initialize ()
       bash_tilde_prefixes[1] = ":~";
       bash_tilde_prefixes[2] = (char *)NULL;
 
+      bash_tilde_prefixes2 = strvec_create (2);
+      bash_tilde_prefixes2[0] = ":~";
+      bash_tilde_prefixes2[1] = (char *)NULL;
+
       tilde_additional_prefixes = bash_tilde_prefixes;
 
       bash_tilde_suffixes = strvec_create (3);
@@ -746,6 +752,10 @@ tilde_initialize ()
       bash_tilde_suffixes[2] = (char *)NULL;
 
       tilde_additional_suffixes = bash_tilde_suffixes;
+
+      bash_tilde_suffixes2 = strvec_create (2);
+      bash_tilde_suffixes2[0] = ":";
+      bash_tilde_suffixes2[1] = (char *)NULL;
     }
 }
 
@@ -777,9 +787,49 @@ unquoted_tilde_word (s)
   return 1;
 }
 
+/* Find the end of the tilde-prefix starting at S, and return the tilde
+   prefix in newly-allocated memory.  Return the length of the string in
+   *LENP.  FLAGS tells whether or not we're in an assignment context --
+   if so, `:' delimits the end of the tilde prefix as well. */
+char *
+bash_tilde_find_word (s, flags, lenp)
+     const char *s;
+     int flags, *lenp;
+{
+  const char *r;
+  char *ret;
+  int l;
+
+  for (r = s; *r && *r != '/'; r++)
+    {
+      /* Short-circuit immediately if we see a quote character.  Even though
+        POSIX says that `the first unquoted slash' (or `:') terminates the
+        tilde-prefix, in practice, any quoted portion of the tilde prefix
+        will cause it to not be expanded. */
+      if (*r == '\\' || *r == '\'' || *r == '"')  
+       {
+         ret = savestring (s);
+         if (lenp)
+           *lenp = 0;
+         return ret;
+       }
+      else if (flags && *r == ':')
+       break;
+    }
+  l = r - s;
+  ret = xmalloc (l + 1);
+  strncpy (ret, s, l);
+  ret[l] = '\0';
+  if (lenp)
+    *lenp = l;
+  return ret;
+}
+    
 /* Tilde-expand S by running it through the tilde expansion library.
    ASSIGN_P is 1 if this is a variable assignment, so the alternate
-   tilde prefixes should be enabled (`=~' and `:~', see above). */
+   tilde prefixes should be enabled (`=~' and `:~', see above).  If
+   ASSIGN_P is 2, we are expanding the rhs of an assignment statement,
+   so `=~' is not valid. */
 char *
 bash_tilde_expand (s, assign_p)
      const char *s;
@@ -790,7 +840,12 @@ bash_tilde_expand (s, assign_p)
 
   old_immed = interrupt_immediately;
   interrupt_immediately = 1;
-  tilde_additional_prefixes = assign_p ? bash_tilde_prefixes : (char **)0;
+
+  tilde_additional_prefixes = assign_p == 0 ? (char **)0
+                                           : (assign_p == 2 ? bash_tilde_prefixes2 : bash_tilde_prefixes);
+  if (assign_p == 2)
+    tilde_additional_suffixes = bash_tilde_suffixes2;
+
   r = (*s == '~') ? unquoted_tilde_word (s) : 1;
   ret = r ? tilde_expand (s) : savestring (s);
   interrupt_immediately = old_immed;
index 9300bf420d2ff632cca74cb0367b067b45b27a29..9531a1e02db221a74d8618912e0902bedd47384c 100644 (file)
@@ -577,6 +577,7 @@ base_pathname (string)
   if (absolute_pathname (string) == 0)
     return (string);
 #endif
+
   if (string[0] == '/' && string[1] == 0)
     return (string);
 
@@ -689,7 +690,9 @@ extern char *get_dirstack_from_string __P((char *));
 #endif
 
 static char **bash_tilde_prefixes;
+static char **bash_tilde_prefixes2;
 static char **bash_tilde_suffixes;
+static char **bash_tilde_suffixes2;
 
 /* If tilde_expand hasn't been able to expand the text, perhaps it
    is a special shell expansion.  This function is installed as the
@@ -737,6 +740,10 @@ tilde_initialize ()
       bash_tilde_prefixes[1] = ":~";
       bash_tilde_prefixes[2] = (char *)NULL;
 
+      bash_tilde_prefixes2 = strvec_create (2);
+      bash_tilde_prefixes2[0] = ":~";
+      bash_tilde_prefixes2[1] = (char *)NULL;
+
       tilde_additional_prefixes = bash_tilde_prefixes;
 
       bash_tilde_suffixes = strvec_create (3);
@@ -745,6 +752,10 @@ tilde_initialize ()
       bash_tilde_suffixes[2] = (char *)NULL;
 
       tilde_additional_suffixes = bash_tilde_suffixes;
+
+      bash_tilde_suffixes2 = strvec_create (2);
+      bash_tilde_suffixes2[0] = ":";
+      bash_tilde_suffixes2[1] = (char *)NULL;
     }
 }
 
@@ -776,9 +787,45 @@ unquoted_tilde_word (s)
   return 1;
 }
 
+/* Find the end of the tilde-prefix starting at S, and return the tilde
+   prefix in newly-allocated memory.  Return the length of the string in
+   *LENP.  FLAGS tells whether or not we're in an assignment context --
+   if so, `:' delimits the end of the tilde prefix as well. */
+char *
+bash_tilde_find_word (s, flags, lenp)
+     const char *s;
+     int flags, *lenp;
+{
+  const char *r;
+  char *ret;
+  int l;
+
+  for (r = s; *r && *r != '/'; r++)
+    {
+      if (*r == '\\' || *r == '\'' || *r == '"')  
+       {
+         ret = savestring (s);
+         if (lenp)
+           *lenp = 0;
+         return ret;
+       }
+      else if (flags && *r == ':')
+       break;
+    }
+  l = r - s;
+  ret = xmalloc (l + 1);
+  strncpy (ret, s, l);
+  ret[l] = '\0';
+  if (lenp)
+    *lenp = l;
+  return ret;
+}
+    
 /* Tilde-expand S by running it through the tilde expansion library.
    ASSIGN_P is 1 if this is a variable assignment, so the alternate
-   tilde prefixes should be enabled (`=~' and `:~', see above). */
+   tilde prefixes should be enabled (`=~' and `:~', see above).  If
+   ASSIGN_P is 2, we are expanding the rhs of an assignment statement,
+   so `=~' is not valid. */
 char *
 bash_tilde_expand (s, assign_p)
      const char *s;
@@ -789,7 +836,12 @@ bash_tilde_expand (s, assign_p)
 
   old_immed = interrupt_immediately;
   interrupt_immediately = 1;
-  tilde_additional_prefixes = assign_p ? bash_tilde_prefixes : (char **)0;
+
+  tilde_additional_prefixes = assign_p == 0 ? (char **)0
+                                           : (assign_p == 2 ? bash_tilde_prefixes2 : bash_tilde_prefixes);
+  if (assign_p == 2)
+    tilde_additional_suffixes = bash_tilde_suffixes2;
+
   r = (*s == '~') ? unquoted_tilde_word (s) : 1;
   ret = r ? tilde_expand (s) : savestring (s);
   interrupt_immediately = old_immed;
index afc7fb04fac4b9781a847cb7080cbfa2fb78cdff..ce76e1633e5dfe43d0cbe382f2ce5e82d6c3acb6 100644 (file)
--- a/general.h
+++ b/general.h
@@ -303,6 +303,7 @@ extern char *polite_directory_format __P((char *));
 extern char *extract_colon_unit __P((char *, int *));
 
 extern void tilde_initialize __P((void));
+extern char *bash_tilde_find_word __P((const char *, int, int *));
 extern char *bash_tilde_expand __P((const char *, int));
 
 extern int group_member __P((gid_t));
diff --git a/general.h~ b/general.h~
new file mode 100644 (file)
index 0000000..c0eabd7
--- /dev/null
@@ -0,0 +1,314 @@
+/* general.h -- defines that everybody likes to use. */
+
+/* Copyright (C) 1993-2004 Free Software Foundation, Inc.
+
+   This file is part of GNU Bash, the Bourne Again SHell.
+
+   Bash is free software; you can redistribute it and/or modify it under
+   the terms of the GNU General Public License as published by the Free
+   Software Foundation; either version 2, or (at your option) any later
+   version.
+
+   Bash is distributed in the hope that it will be useful, but WITHOUT ANY
+   WARRANTY; without even the implied warranty of MERCHANTABILITY or
+   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+   for more details.
+
+   You should have received a copy of the GNU General Public License along
+   with Bash; see the file COPYING.  If not, write to the Free Software
+   Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
+
+#if !defined (_GENERAL_H_)
+#define _GENERAL_H_
+
+#include "stdc.h"
+
+#include "bashtypes.h"
+
+#if defined (HAVE_SYS_RESOURCE_H) && defined (RLIMTYPE)
+#  if defined (HAVE_SYS_TIME_H)
+#    include <sys/time.h>
+#  endif
+#  include <sys/resource.h>
+#endif
+
+#if defined (HAVE_STRING_H)
+#  include <string.h>
+#else
+#  include <strings.h>
+#endif /* !HAVE_STRING_H */
+
+#if defined (HAVE_LIMITS_H)
+#  include <limits.h>
+#endif
+
+#include "xmalloc.h"
+
+/* NULL pointer type. */
+#if !defined (NULL)
+#  if defined (__STDC__)
+#    define NULL ((void *) 0)
+#  else
+#    define NULL 0x0
+#  endif /* !__STDC__ */
+#endif /* !NULL */
+
+/* Hardly used anymore */
+#define pointer_to_int(x)      (int)((char *)x - (char *)0)
+
+#if defined (alpha) && defined (__GNUC__) && !defined (strchr) && !defined (__STDC__)
+extern char *strchr (), *strrchr ();
+#endif
+
+#if !defined (strcpy) && (defined (HAVE_DECL_STRCPY) && !HAVE_DECL_STRCPY)
+extern char *strcpy __P((char *, const char *));
+#endif
+
+#if !defined (savestring)
+#  define savestring(x) (char *)strcpy (xmalloc (1 + strlen (x)), (x))
+#endif
+
+#ifndef member
+#  define member(c, s) ((c) ? ((char *)xstrchr ((s), (c)) != (char *)NULL) : 0)
+#endif
+
+#ifndef whitespace
+#define whitespace(c) (((c) == ' ') || ((c) == '\t'))
+#endif
+
+#ifndef CHAR_MAX
+#  ifdef __CHAR_UNSIGNED__
+#    define CHAR_MAX   0xff
+#  else
+#    define CHAR_MAX   0x7f
+#  endif
+#endif
+
+#ifndef CHAR_BIT
+#  define CHAR_BIT 8
+#endif
+
+/* Nonzero if the integer type T is signed.  */
+#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1))
+
+/* Bound on length of the string representing an integer value of type T.
+   Subtract one for the sign bit if T is signed;
+   302 / 1000 is log10 (2) rounded up;
+   add one for integer division truncation;
+   add one more for a minus sign if t is signed.  */
+#define INT_STRLEN_BOUND(t) \
+  ((sizeof (t) * CHAR_BIT - TYPE_SIGNED (t)) * 302 / 1000 \
+   + 1 + TYPE_SIGNED (t))
+
+
+/* Define exactly what a legal shell identifier consists of. */
+#define legal_variable_starter(c) (ISALPHA(c) || (c == '_'))
+#define legal_variable_char(c) (ISALNUM(c) || c == '_')
+
+/* Definitions used in subst.c and by the `read' builtin for field
+   splitting. */
+#define spctabnl(c)    ((c) == ' ' || (c) == '\t' || (c) == '\n')
+
+/* All structs which contain a `next' field should have that field
+   as the first field in the struct.  This means that functions
+   can be written to handle the general case for linked lists. */
+typedef struct g_list {
+  struct g_list *next;
+} GENERIC_LIST;
+
+/* Here is a generic structure for associating character strings
+   with integers.  It is used in the parser for shell tokenization. */
+typedef struct {
+  char *word;
+  int token;
+} STRING_INT_ALIST;
+
+/* A macro to avoid making an uneccessary function call. */
+#define REVERSE_LIST(list, type) \
+  ((list && list->next) ? (type)list_reverse ((GENERIC_LIST *)list) \
+                       : (type)(list))
+
+#if __GNUC__ > 1
+#  define FASTCOPY(s, d, n)  __builtin_memcpy (d, s, n)
+#else /* !__GNUC__ */
+#  if !defined (HAVE_BCOPY)
+#    if !defined (HAVE_MEMMOVE)
+#      define FASTCOPY(s, d, n)  memcpy (d, s, n)
+#    else
+#      define FASTCOPY(s, d, n)  memmove (d, s, n)
+#    endif /* !HAVE_MEMMOVE */
+#  else /* HAVE_BCOPY */
+#    define FASTCOPY(s, d, n)  bcopy (s, d, n)
+#  endif /* HAVE_BCOPY */
+#endif /* !__GNUC__ */
+
+/* String comparisons that possibly save a function call each. */
+#define STREQ(a, b) ((a)[0] == (b)[0] && strcmp(a, b) == 0)
+#define STREQN(a, b, n) ((n == 0) ? (1) \
+                                 : ((a)[0] == (b)[0] && strncmp(a, b, n) == 0))
+
+/* More convenience definitions that possibly save system or libc calls. */
+#define STRLEN(s) (((s) && (s)[0]) ? ((s)[1] ? ((s)[2] ? strlen(s) : 2) : 1) : 0)
+#define FREE(s)  do { if (s) free (s); } while (0)
+#define MEMBER(c, s) (((c) && c == (s)[0] && !(s)[1]) || (member(c, s)))
+
+/* A fairly hairy macro to check whether an allocated string has more room,
+   and to resize it using xrealloc if it does not.
+   STR is the string (char *)
+   CIND is the current index into the string (int)
+   ROOM is the amount of additional room we need in the string (int)
+   CSIZE is the currently-allocated size of STR (int)
+   SINCR is how much to increment CSIZE before calling xrealloc (int) */
+
+#define RESIZE_MALLOCED_BUFFER(str, cind, room, csize, sincr) \
+  do { \
+    if ((cind) + (room) >= csize) \
+      { \
+       while ((cind) + (room) >= csize) \
+         csize += (sincr); \
+       str = xrealloc (str, csize); \
+      } \
+  } while (0)
+
+/* Function pointers can be declared as (Function *)foo. */
+#if !defined (_FUNCTION_DEF)
+#  define _FUNCTION_DEF
+typedef int Function ();
+typedef void VFunction ();
+typedef char *CPFunction ();           /* no longer used */
+typedef char **CPPFunction ();         /* no longer used */
+#endif /* _FUNCTION_DEF */
+
+#ifndef SH_FUNCTION_TYPEDEF
+#  define SH_FUNCTION_TYPEDEF
+
+/* Shell function typedefs with prototypes */
+/* `Generic' function pointer typedefs */
+
+typedef int sh_intfunc_t __P((int));
+typedef int sh_ivoidfunc_t __P((void));
+typedef int sh_icpfunc_t __P((char *));
+typedef int sh_icppfunc_t __P((char **));
+typedef int sh_iptrfunc_t __P((PTR_T));
+
+typedef void sh_voidfunc_t __P((void));
+typedef void sh_vintfunc_t __P((int));
+typedef void sh_vcpfunc_t __P((char *));
+typedef void sh_vcppfunc_t __P((char **));
+typedef void sh_vptrfunc_t __P((PTR_T));
+
+typedef int sh_wdesc_func_t __P((WORD_DESC *));
+typedef int sh_wlist_func_t __P((WORD_LIST *));
+
+typedef int sh_glist_func_t __P((GENERIC_LIST *));
+
+typedef char *sh_string_func_t __P((char *));  /* like savestring, et al. */
+
+typedef int sh_msg_func_t __P((const char *, ...));    /* printf(3)-like */
+typedef void sh_vmsg_func_t __P((const char *, ...));  /* printf(3)-like */
+
+/* Specific function pointer typedefs.  Most of these could be done
+   with #defines. */
+typedef void sh_sv_func_t __P((char *));       /* sh_vcpfunc_t */
+typedef void sh_free_func_t __P((PTR_T));      /* sh_vptrfunc_t */
+typedef void sh_resetsig_func_t __P((int));    /* sh_vintfunc_t */
+
+typedef int sh_ignore_func_t __P((const char *));      /* sh_icpfunc_t */
+
+typedef int sh_assign_func_t __P((const char *));      /* sh_icpfunc_t */
+
+typedef int sh_builtin_func_t __P((WORD_LIST *)); /* sh_wlist_func_t */
+
+#endif /* SH_FUNCTION_TYPEDEF */
+
+#define NOW    ((time_t) time ((time_t *) 0))
+
+/* Some defines for calling file status functions. */
+#define FS_EXISTS        0x1
+#define FS_EXECABLE      0x2
+#define FS_EXEC_PREFERRED 0x4
+#define FS_EXEC_ONLY     0x8
+#define FS_DIRECTORY     0x10
+#define FS_NODIRS        0x20
+
+/* Default maximum for move_to_high_fd */
+#define HIGH_FD_MAX    256
+
+/* The type of function passed as the fourth argument to qsort(3). */
+#ifdef __STDC__
+typedef int QSFUNC (const void *, const void *);
+#else
+typedef int QSFUNC ();
+#endif 
+
+/* Some useful definitions for Unix pathnames.  Argument convention:
+   x == string, c == character */
+
+#if !defined (__CYGWIN__)
+#  define ABSPATH(x)   ((x)[0] == '/')
+#  define RELPATH(x)   ((x)[0] != '/')
+#else /* __CYGWIN__ */
+#  define ABSPATH(x)   (((x)[0] && ISALPHA((unsigned char)(x)[0]) && (x)[1] == ':' && (x)[2] == '/') || (x)[0] == '/')
+#  define RELPATH(x)   (!(x)[0] || ((x)[1] != ':' && (x)[0] != '/'))
+#endif /* __CYGWIN__ */
+
+#define ROOTEDPATH(x)  (ABSPATH(x))
+
+#define DIRSEP '/'
+#define ISDIRSEP(c)    ((c) == '/')
+#define PATHSEP(c)     (ISDIRSEP(c) || (c) == 0)
+
+#if 0
+/* Declarations for functions defined in xmalloc.c */
+extern PTR_T xmalloc __P((size_t));
+extern PTR_T xrealloc __P((void *, size_t));
+extern void xfree __P((void *));
+#endif
+
+/* Declarations for functions defined in general.c */
+extern void posix_initialize __P((int));
+
+#if defined (RLIMTYPE)
+extern RLIMTYPE string_to_rlimtype __P((char *));
+extern void print_rlimtype __P((RLIMTYPE, int));
+#endif
+
+extern int all_digits __P((char *));
+extern int legal_number __P((char *, intmax_t *));
+extern int legal_identifier __P((char *));
+extern int check_identifier __P((WORD_DESC *, int));
+extern int legal_alias_name __P((char *, int));
+extern int assignment __P((const char *, int));
+
+extern int sh_unset_nodelay_mode __P((int));
+extern int sh_validfd __P((int));
+extern void check_dev_tty __P((void));
+extern int move_to_high_fd __P((int, int, int));
+extern int check_binary_file __P((char *, int));
+
+#ifdef _POSIXSTAT_H_
+extern int same_file __P((char *, char *, struct stat *, struct stat *));
+#endif
+
+extern int file_isdir __P((char  *));
+extern int file_iswdir __P((char  *));
+
+extern char *make_absolute __P((char *, char *));
+extern int absolute_pathname __P((const char *));
+extern int absolute_program __P((const char *));
+extern char *base_pathname __P((char *));
+extern char *full_pathname __P((char *));
+extern char *polite_directory_format __P((char *));
+
+extern char *extract_colon_unit __P((char *, int *));
+
+extern void tilde_initialize __P((void));
+extern int unquoted_tilde_word __P((const char *));
+extern char *bash_tilde_find_word __P((const char *, int, int *));
+extern char *bash_tilde_expand __P((const char *, int));
+
+extern int group_member __P((gid_t));
+extern char **get_group_list __P((int *));
+extern int *get_group_array __P((int *));
+
+#endif /* _GENERAL_H_ */
diff --git a/jobs.c b/jobs.c
index c1b1c24187c1763be22245838faa9dd294ea7cbc..b89cf242762be60d0396968f91ec82550679bcb7 100644 (file)
--- a/jobs.c
+++ b/jobs.c
@@ -1433,7 +1433,9 @@ make_child (command, async_p)
 
       last_made_pid = pid;
 
-      /* Unblock SIGINT and SIGCHLD. */
+      /* Unblock SIGINT and SIGCHLD unless creating a pipeline, in which case
+        SIGCHLD remains blocked until all commands in the pipeline have been
+        created. */
       sigprocmask (SIG_SETMASK, &oset, (sigset_t *)NULL);
     }
 
diff --git a/jobs.c~ b/jobs.c~
index 7ad91c836ab3b686d7f950ea2b8a3efdf21117f8..c1b1c24187c1763be22245838faa9dd294ea7cbc 100644 (file)
--- a/jobs.c~
+++ b/jobs.c~
@@ -1778,8 +1778,13 @@ raw_job_exit_status (job)
   if (pipefail_opt)
     {
       fail = 0;
-      for (p = jobs[job]->pipe; p->next != jobs[job]->pipe; p = p->next)
-        if (p->status != EXECUTION_SUCCESS) fail = p->status;
+      p = jobs[job]->pipe;
+      do
+       {
+         if (p->status != EXECUTION_SUCCESS) fail = p->status;
+         p = p->next;
+       }
+      while (p != jobs[job]->pipe);
       return fail;
     }
 
@@ -2311,12 +2316,12 @@ start_job (job, foreground)
   p = jobs[job]->pipe;
 
   if (foreground == 0)
-    fprintf (stderr, "[%d]%c ", job + 1,
+    printf ("[%d]%c ", job + 1,
           (job == current_job) ? '+': ((job == previous_job) ? '-' : ' '));
 
   do
     {
-      fprintf (stderr, "%s%s",
+      printf ("%s%s",
               p->command ? p->command : "",
               p->next != jobs[job]->pipe? " | " : "");
       p = p->next;
@@ -2324,12 +2329,12 @@ start_job (job, foreground)
   while (p != jobs[job]->pipe);
 
   if (foreground == 0)
-    fprintf (stderr, " &");
+    printf (" &");
 
   if (strcmp (wd, jobs[job]->wd) != 0)
-    fprintf (stderr, " (wd: %s)", polite_directory_format (jobs[job]->wd));
+    printf ("  (wd: %s)", polite_directory_format (jobs[job]->wd));
 
-  fprintf (stderr, "\n");
+  printf ("\n");
 
   /* Run the job. */
   if (already_running == 0)
index 154f7f8108d075569576990c9ee5c23be93b2950..1136126b6cff6eeac9805c5b26fc1b5bc69356a6 100644 (file)
@@ -277,6 +277,39 @@ isolate_tilde_prefix (fname, lenp)
   return ret;
 }
 
+#if 0
+/* Public function to scan a string (FNAME) beginning with a tilde and find
+   the portion of the string that should be passed to the tilde expansion
+   function.  Right now, it just calls tilde_find_suffix and allocates new
+   memory, but it can be expanded to do different things later. */
+char *
+tilde_find_word (fname, flags, lenp)
+     const char *fname;
+     int flags, *lenp;
+{
+  int x;
+  char *r;
+
+  x = tilde_find_suffix (fname);
+  if (x == 0)
+    {
+      r = savestring (fname);
+      if (lenp)
+       *lenp = 0;
+    }
+  else
+    {
+      r = (char *)xmalloc (1 + x);
+      strncpy (r, fname, x);
+      r[x] = '\0';
+      if (lenp)
+       *lenp = x;
+    }
+
+  return r;
+}
+#endif
+
 /* Return a string that is PREFIX concatenated with SUFFIX starting at
    SUFFIND. */
 static char *
diff --git a/lib/tilde/tilde.c~ b/lib/tilde/tilde.c~
new file mode 100644 (file)
index 0000000..c98e54f
--- /dev/null
@@ -0,0 +1,489 @@
+/* tilde.c -- Tilde expansion code (~/foo := $HOME/foo). */
+
+/* Copyright (C) 1988,1989 Free Software Foundation, Inc.
+
+   This file is part of GNU Readline, a library for reading lines
+   of text with interactive input and history editing.
+
+   Readline is free software; you can redistribute it and/or modify it
+   under the terms of the GNU General Public License as published by the
+   Free Software Foundation; either version 2, or (at your option) any
+   later version.
+
+   Readline is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with Readline; see the file COPYING.  If not, write to the Free
+   Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
+
+#if defined (HAVE_CONFIG_H)
+#  include <config.h>
+#endif
+
+#if defined (HAVE_UNISTD_H)
+#  ifdef _MINIX
+#    include <sys/types.h>
+#  endif
+#  include <unistd.h>
+#endif
+
+#if defined (HAVE_STRING_H)
+#  include <string.h>
+#else /* !HAVE_STRING_H */
+#  include <strings.h>
+#endif /* !HAVE_STRING_H */  
+
+#if defined (HAVE_STDLIB_H)
+#  include <stdlib.h>
+#else
+#  include "ansi_stdlib.h"
+#endif /* HAVE_STDLIB_H */
+
+#include <sys/types.h>
+#include <pwd.h>
+
+#include "tilde.h"
+
+#if defined (TEST) || defined (STATIC_MALLOC)
+static void *xmalloc (), *xrealloc ();
+#else
+#  include "xmalloc.h"
+#endif /* TEST || STATIC_MALLOC */
+
+#if !defined (HAVE_GETPW_DECLS)
+extern struct passwd *getpwuid PARAMS((uid_t));
+extern struct passwd *getpwnam PARAMS((const char *));
+#endif /* !HAVE_GETPW_DECLS */
+
+#if !defined (savestring)
+#define savestring(x) strcpy ((char *)xmalloc (1 + strlen (x)), (x))
+#endif /* !savestring */
+
+#if !defined (NULL)
+#  if defined (__STDC__)
+#    define NULL ((void *) 0)
+#  else
+#    define NULL 0x0
+#  endif /* !__STDC__ */
+#endif /* !NULL */
+
+/* If being compiled as part of bash, these will be satisfied from
+   variables.o.  If being compiled as part of readline, they will
+   be satisfied from shell.o. */
+extern char *sh_get_home_dir PARAMS((void));
+extern char *sh_get_env_value PARAMS((const char *));
+
+/* The default value of tilde_additional_prefixes.  This is set to
+   whitespace preceding a tilde so that simple programs which do not
+   perform any word separation get desired behaviour. */
+static const char *default_prefixes[] =
+  { " ~", "\t~", (const char *)NULL };
+
+/* The default value of tilde_additional_suffixes.  This is set to
+   whitespace or newline so that simple programs which do not
+   perform any word separation get desired behaviour. */
+static const char *default_suffixes[] =
+  { " ", "\n", (const char *)NULL };
+
+/* If non-null, this contains the address of a function that the application
+   wants called before trying the standard tilde expansions.  The function
+   is called with the text sans tilde, and returns a malloc()'ed string
+   which is the expansion, or a NULL pointer if the expansion fails. */
+tilde_hook_func_t *tilde_expansion_preexpansion_hook = (tilde_hook_func_t *)NULL;
+
+/* If non-null, this contains the address of a function to call if the
+   standard meaning for expanding a tilde fails.  The function is called
+   with the text (sans tilde, as in "foo"), and returns a malloc()'ed string
+   which is the expansion, or a NULL pointer if there is no expansion. */
+tilde_hook_func_t *tilde_expansion_failure_hook = (tilde_hook_func_t *)NULL;
+
+/* When non-null, this is a NULL terminated array of strings which
+   are duplicates for a tilde prefix.  Bash uses this to expand
+   `=~' and `:~'. */
+char **tilde_additional_prefixes = (char **)default_prefixes;
+
+/* When non-null, this is a NULL terminated array of strings which match
+   the end of a username, instead of just "/".  Bash sets this to
+   `:' and `=~'. */
+char **tilde_additional_suffixes = (char **)default_suffixes;
+
+static int tilde_find_prefix PARAMS((const char *, int *));
+static int tilde_find_suffix PARAMS((const char *));
+static char *isolate_tilde_prefix PARAMS((const char *, int *));
+static char *glue_prefix_and_suffix PARAMS((char *, const char *, int));
+
+/* Find the start of a tilde expansion in STRING, and return the index of
+   the tilde which starts the expansion.  Place the length of the text
+   which identified this tilde starter in LEN, excluding the tilde itself. */
+static int
+tilde_find_prefix (string, len)
+     const char *string;
+     int *len;
+{
+  register int i, j, string_len;
+  register char **prefixes;
+
+  prefixes = tilde_additional_prefixes;
+
+  string_len = strlen (string);
+  *len = 0;
+
+  if (*string == '\0' || *string == '~')
+    return (0);
+
+  if (prefixes)
+    {
+      for (i = 0; i < string_len; i++)
+       {
+         for (j = 0; prefixes[j]; j++)
+           {
+             if (strncmp (string + i, prefixes[j], strlen (prefixes[j])) == 0)
+               {
+                 *len = strlen (prefixes[j]) - 1;
+                 return (i + *len);
+               }
+           }
+       }
+    }
+  return (string_len);
+}
+
+/* Find the end of a tilde expansion in STRING, and return the index of
+   the character which ends the tilde definition.  */
+static int
+tilde_find_suffix (string)
+     const char *string;
+{
+  register int i, j, string_len;
+  register char **suffixes;
+
+  suffixes = tilde_additional_suffixes;
+  string_len = strlen (string);
+
+  for (i = 0; i < string_len; i++)
+    {
+#if defined (__MSDOS__)
+      if (string[i] == '/' || string[i] == '\\' /* || !string[i] */)
+#else
+      if (string[i] == '/' /* || !string[i] */)
+#endif
+       break;
+
+      for (j = 0; suffixes && suffixes[j]; j++)
+       {
+         if (strncmp (string + i, suffixes[j], strlen (suffixes[j])) == 0)
+           return (i);
+       }
+    }
+  return (i);
+}
+
+/* Return a new string which is the result of tilde expanding STRING. */
+char *
+tilde_expand (string)
+     const char *string;
+{
+  char *result;
+  int result_size, result_index;
+
+  result_index = result_size = 0;
+  if (result = strchr (string, '~'))
+    result = (char *)xmalloc (result_size = (strlen (string) + 16));
+  else
+    result = (char *)xmalloc (result_size = (strlen (string) + 1));
+
+  /* Scan through STRING expanding tildes as we come to them. */
+  while (1)
+    {
+      register int start, end;
+      char *tilde_word, *expansion;
+      int len;
+
+      /* Make START point to the tilde which starts the expansion. */
+      start = tilde_find_prefix (string, &len);
+
+      /* Copy the skipped text into the result. */
+      if ((result_index + start + 1) > result_size)
+       result = (char *)xrealloc (result, 1 + (result_size += (start + 20)));
+
+      strncpy (result + result_index, string, start);
+      result_index += start;
+
+      /* Advance STRING to the starting tilde. */
+      string += start;
+
+      /* Make END be the index of one after the last character of the
+        username. */
+      end = tilde_find_suffix (string);
+
+      /* If both START and END are zero, we are all done. */
+      if (!start && !end)
+       break;
+
+      /* Expand the entire tilde word, and copy it into RESULT. */
+      tilde_word = (char *)xmalloc (1 + end);
+      strncpy (tilde_word, string, end);
+      tilde_word[end] = '\0';
+      string += end;
+
+      expansion = tilde_expand_word (tilde_word);
+      free (tilde_word);
+
+      len = strlen (expansion);
+#ifdef __CYGWIN__
+      /* Fix for Cygwin to prevent ~user/xxx from expanding to //xxx when
+        $HOME for `user' is /.  On cygwin, // denotes a network drive. */
+      if (len > 1 || *expansion != '/' || *string != '/')
+#endif
+       {
+         if ((result_index + len + 1) > result_size)
+           result = (char *)xrealloc (result, 1 + (result_size += (len + 20)));
+
+         strcpy (result + result_index, expansion);
+         result_index += len;
+       }
+      free (expansion);
+    }
+
+  result[result_index] = '\0';
+
+  return (result);
+}
+
+/* Take FNAME and return the tilde prefix we want expanded.  If LENP is
+   non-null, the index of the end of the prefix into FNAME is returned in
+   the location it points to. */
+static char *
+isolate_tilde_prefix (fname, lenp)
+     const char *fname;
+     int *lenp;
+{
+  char *ret;
+  int i;
+
+  ret = (char *)xmalloc (strlen (fname));
+#if defined (__MSDOS__)
+  for (i = 1; fname[i] && fname[i] != '/' && fname[i] != '\\'; i++)
+#else
+  for (i = 1; fname[i] && fname[i] != '/'; i++)
+#endif
+    ret[i - 1] = fname[i];
+  ret[i - 1] = '\0';
+  if (lenp)
+    *lenp = i;
+  return ret;
+}
+
+/* Public function to scan a string (FNAME) beginning with a tilde and find
+   the portion of the string that should be passed to the tilde expansion
+   function.  Right now, it just calls tilde_find_suffix and allocates new
+   memory, but it can be expanded to do different things later. */
+char *
+tilde_find_word (fname, flags, lenp)
+     const char *fname;
+     int flags, *lenp;
+{
+  int x;
+  char *r;
+
+  x = tilde_find_suffix (fname);
+  if (x == 0)
+    {
+      r = savestring (fname);
+      if (lenp)
+       *lenp = 0;
+    }
+  else
+    {
+      r = (char *)xmalloc (1 + x);
+      strncpy (r, fname, x);
+      r[x] = '\0';
+      if (lenp)
+       *lenp = x;
+    }
+
+  return r;
+}
+
+/* Return a string that is PREFIX concatenated with SUFFIX starting at
+   SUFFIND. */
+static char *
+glue_prefix_and_suffix (prefix, suffix, suffind)
+     char *prefix;
+     const char *suffix;
+     int suffind;
+{
+  char *ret;
+  int plen, slen;
+
+  plen = (prefix && *prefix) ? strlen (prefix) : 0;
+  slen = strlen (suffix + suffind);
+  ret = (char *)xmalloc (plen + slen + 1);
+  if (plen)
+    strcpy (ret, prefix);
+  strcpy (ret + plen, suffix + suffind);
+  return ret;
+}
+
+/* Do the work of tilde expansion on FILENAME.  FILENAME starts with a
+   tilde.  If there is no expansion, call tilde_expansion_failure_hook.
+   This always returns a newly-allocated string, never static storage. */
+char *
+tilde_expand_word (filename)
+     const char *filename;
+{
+  char *dirname, *expansion, *username;
+  int user_len;
+  struct passwd *user_entry;
+
+  if (filename == 0)
+    return ((char *)NULL);
+
+  if (*filename != '~')
+    return (savestring (filename));
+
+  /* A leading `~/' or a bare `~' is *always* translated to the value of
+     $HOME or the home directory of the current user, regardless of any
+     preexpansion hook. */
+  if (filename[1] == '\0' || filename[1] == '/')
+    {
+      /* Prefix $HOME to the rest of the string. */
+      expansion = sh_get_env_value ("HOME");
+
+      /* If there is no HOME variable, look up the directory in
+        the password database. */
+      if (expansion == 0)
+       expansion = sh_get_home_dir ();
+
+      return (glue_prefix_and_suffix (expansion, filename, 1));
+    }
+
+  username = isolate_tilde_prefix (filename, &user_len);
+
+  if (tilde_expansion_preexpansion_hook)
+    {
+      expansion = (*tilde_expansion_preexpansion_hook) (username);
+      if (expansion)
+       {
+         dirname = glue_prefix_and_suffix (expansion, filename, user_len);
+         free (username);
+         free (expansion);
+         return (dirname);
+       }
+    }
+
+  /* No preexpansion hook, or the preexpansion hook failed.  Look in the
+     password database. */
+  dirname = (char *)NULL;
+  user_entry = getpwnam (username);
+  if (user_entry == 0)
+    {
+      /* If the calling program has a special syntax for expanding tildes,
+        and we couldn't find a standard expansion, then let them try. */
+      if (tilde_expansion_failure_hook)
+       {
+         expansion = (*tilde_expansion_failure_hook) (username);
+         if (expansion)
+           {
+             dirname = glue_prefix_and_suffix (expansion, filename, user_len);
+             free (expansion);
+           }
+       }
+      free (username);
+      /* If we don't have a failure hook, or if the failure hook did not
+        expand the tilde, return a copy of what we were passed. */
+      if (dirname == 0)
+       dirname = savestring (filename);
+    }
+  else
+    {
+      free (username);
+      dirname = glue_prefix_and_suffix (user_entry->pw_dir, filename, user_len);
+    }
+
+  endpwent ();
+  return (dirname);
+}
+
+\f
+#if defined (TEST)
+#undef NULL
+#include <stdio.h>
+
+main (argc, argv)
+     int argc;
+     char **argv;
+{
+  char *result, line[512];
+  int done = 0;
+
+  while (!done)
+    {
+      printf ("~expand: ");
+      fflush (stdout);
+
+      if (!gets (line))
+       strcpy (line, "done");
+
+      if ((strcmp (line, "done") == 0) ||
+         (strcmp (line, "quit") == 0) ||
+         (strcmp (line, "exit") == 0))
+       {
+         done = 1;
+         break;
+       }
+
+      result = tilde_expand (line);
+      printf ("  --> %s\n", result);
+      free (result);
+    }
+  exit (0);
+}
+
+static void memory_error_and_abort ();
+
+static void *
+xmalloc (bytes)
+     size_t bytes;
+{
+  void *temp = (char *)malloc (bytes);
+
+  if (!temp)
+    memory_error_and_abort ();
+  return (temp);
+}
+
+static void *
+xrealloc (pointer, bytes)
+     void *pointer;
+     int bytes;
+{
+  void *temp;
+
+  if (!pointer)
+    temp = malloc (bytes);
+  else
+    temp = realloc (pointer, bytes);
+
+  if (!temp)
+    memory_error_and_abort ();
+
+  return (temp);
+}
+
+static void
+memory_error_and_abort ()
+{
+  fprintf (stderr, "readline: out of virtual memory\n");
+  abort ();
+}
+
+/*
+ * Local variables:
+ * compile-command: "gcc -g -DTEST -o tilde tilde.c"
+ * end:
+ */
+#endif /* TEST */
index f8182c999d9b43c2b88cceb0f4142eb607b95154..c58ce20e7a25e92968d84a319792f2957e90c724 100644 (file)
@@ -71,6 +71,9 @@ extern char *tilde_expand PARAMS((const char *));
    tilde.  If there is no expansion, call tilde_expansion_failure_hook. */
 extern char *tilde_expand_word PARAMS((const char *));
 
+/* Find the portion of the string beginning with ~ that should be expanded. */
+extern char *tilde_find_word PARAMS((const char *, int, int *));
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/lib/tilde/tilde.h~ b/lib/tilde/tilde.h~
new file mode 100644 (file)
index 0000000..c76234b
--- /dev/null
@@ -0,0 +1,81 @@
+/* tilde.h: Externally available variables and function in libtilde.a. */
+
+/* Copyright (C) 1992 Free Software Foundation, Inc.
+
+   This file contains the Readline Library (the Library), a set of
+   routines for providing Emacs style line input to programs that ask
+   for it.
+
+   The Library is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   The Library is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   General Public License for more details.
+
+   The GNU General Public License is often shipped with GNU software, and
+   is generally kept in a file called COPYING or LICENSE.  If you do not
+   have a copy of the license, write to the Free Software Foundation,
+   59 Temple Place, Suite 330, Boston, MA 02111 USA. */
+
+#if !defined (_TILDE_H_)
+#  define _TILDE_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* A function can be defined using prototypes and compile on both ANSI C
+   and traditional C compilers with something like this:
+       extern char *func PARAMS((char *, char *, int)); */
+
+#if !defined (PARAMS)
+#  if defined (__STDC__) || defined (__GNUC__) || defined (__cplusplus)
+#    define PARAMS(protos) protos
+#  else
+#    define PARAMS(protos) ()
+#  endif
+#endif
+
+typedef char *tilde_hook_func_t PARAMS((char *));
+
+/* If non-null, this contains the address of a function that the application
+   wants called before trying the standard tilde expansions.  The function
+   is called with the text sans tilde, and returns a malloc()'ed string
+   which is the expansion, or a NULL pointer if the expansion fails. */
+extern tilde_hook_func_t *tilde_expansion_preexpansion_hook;
+
+/* If non-null, this contains the address of a function to call if the
+   standard meaning for expanding a tilde fails.  The function is called
+   with the text (sans tilde, as in "foo"), and returns a malloc()'ed string
+   which is the expansion, or a NULL pointer if there is no expansion. */
+extern tilde_hook_func_t *tilde_expansion_failure_hook;
+
+/* When non-null, this is a NULL terminated array of strings which
+   are duplicates for a tilde prefix.  Bash uses this to expand
+   `=~' and `:~'. */
+extern char **tilde_additional_prefixes;
+
+/* When non-null, this is a NULL terminated array of strings which match
+   the end of a username, instead of just "/".  Bash sets this to
+   `:' and `=~'. */
+extern char **tilde_additional_suffixes;
+
+/* Return a new string which is the result of tilde expanding STRING. */
+extern char *tilde_expand PARAMS((const char *));
+
+/* Do the work of tilde expansion on FILENAME.  FILENAME starts with a
+   tilde.  If there is no expansion, call tilde_expansion_failure_hook. */
+extern char *tilde_expand_word PARAMS((const char *));
+
+/* Find the portion of the string beginning with ~ that should be expanded. */
+extern char *tilde_find_word PARAMS((const char *, int *));
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _TILDE_H_ */
index d195ab73d436ee13220372b87ed15f28001ccffc..b12787bda14c4ae5442b9389855de1be45923363 100644 (file)
 #: builtins.c:943 builtins.c:946 builtins.c:948 builtins.c:950 builtins.c:952
 #: builtins.c:954 builtins.c:957 builtins.c:966 builtins.c:968 builtins.c:973
 #: builtins.c:976 builtins.c:1020 builtins.c:1025 builtins.c:1029
-#: builtins.c:1033 builtins.c:1035 builtins.c:1048 builtins.c:1063
-#: builtins.c:1226 builtins.c:1231 builtins.c:1304 builtins.c:1308
-#: builtins.c:1312 builtins.c:1315 builtins.c:1318 builtins.c:1330
-#: builtins.c:1334 builtins.c:1338 builtins.c:1341 builtins.c:1353
-#: builtins.c:1361 builtins.c:1364
+#: builtins.c:1033 builtins.c:1035 builtins.c:1048 builtins.c:1066
+#: builtins.c:1231 builtins.c:1236 builtins.c:1309 builtins.c:1313
+#: builtins.c:1317 builtins.c:1320 builtins.c:1323 builtins.c:1335
+#: builtins.c:1339 builtins.c:1343 builtins.c:1346 builtins.c:1358
+#: builtins.c:1366 builtins.c:1369
 #, fuzzy
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: bug-bash@gnu.org\n"
-"POT-Creation-Date: 2004-09-09 17:59-0400\n"
+"POT-Creation-Date: 2004-09-26 17:34-0400\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -34,11 +34,11 @@ msgstr ""
 "Content-Type: text/plain; charset=CHARSET\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: arrayfunc.c:45
+#: arrayfunc.c:46
 msgid "bad array subscript"
 msgstr ""
 
-#: arrayfunc.c:306
+#: arrayfunc.c:309
 #, c-format
 msgid "%s: cannot assign to non-numeric index"
 msgstr ""
@@ -48,21 +48,21 @@ msgstr ""
 msgid "%s: cannot create: %s"
 msgstr ""
 
-#: bashline.c:2916
+#: bashline.c:2923
 msgid "bash_execute_unix_command: cannot find keymap for command"
 msgstr ""
 
-#: bashline.c:2965
+#: bashline.c:2972
 #, c-format
 msgid "%s: first non-whitespace character is not `\"'"
 msgstr ""
 
-#: bashline.c:2994
+#: bashline.c:3001
 #, c-format
 msgid "no closing `%c' in %s"
 msgstr ""
 
-#: bashline.c:3028
+#: bashline.c:3035
 #, c-format
 msgid "%s: missing colon separator"
 msgstr ""
@@ -270,7 +270,7 @@ msgstr ""
 msgid "cannot use `-f' to make functions"
 msgstr ""
 
-#: builtins/declare.def:307 execute_cmd.c:3969
+#: builtins/declare.def:307 execute_cmd.c:3953
 #, c-format
 msgid "%s: readonly function"
 msgstr ""
@@ -304,7 +304,7 @@ msgstr ""
 msgid "%s: cannot delete: %s"
 msgstr ""
 
-#: builtins/evalfile.c:129 execute_cmd.c:3841 shell.c:1396
+#: builtins/evalfile.c:129 execute_cmd.c:3825 shell.c:1396
 #, c-format
 msgid "%s: is a directory"
 msgstr ""
@@ -329,6 +329,7 @@ msgid "not login shell: use `exit'"
 msgstr ""
 
 #: builtins/exit.def:111
+#, c-format
 msgid "There are stopped jobs.\n"
 msgstr ""
 
@@ -370,10 +371,12 @@ msgid "%s: hash table empty\n"
 msgstr ""
 
 #: builtins/help.def:108
+#, c-format
 msgid "Shell commands matching keywords `"
 msgstr ""
 
 #: builtins/help.def:110
+#, c-format
 msgid "Shell commands matching keyword `"
 msgstr ""
 
@@ -389,6 +392,7 @@ msgid "%s: cannot open: %s"
 msgstr ""
 
 #: builtins/help.def:182
+#, c-format
 msgid ""
 "These shell commands are defined internally.  Type `help' to see this list.\n"
 "Type `help name' to find out more about the function `name'.\n"
@@ -451,43 +455,43 @@ msgstr ""
 msgid "<no current directory>"
 msgstr ""
 
-#: builtins/pushd.def:652 builtins.c:1350
+#: builtins/pushd.def:652 builtins.c:1355
 msgid "Display the list of currently remembered directories.  Directories"
 msgstr ""
 
-#: builtins/pushd.def:653 builtins.c:1351
+#: builtins/pushd.def:653 builtins.c:1356
 msgid "find their way onto the list with the `pushd' command; you can get"
 msgstr ""
 
-#: builtins/pushd.def:654 builtins.c:1352
+#: builtins/pushd.def:654 builtins.c:1357
 msgid "back up through the list with the `popd' command."
 msgstr ""
 
-#: builtins/pushd.def:656 builtins.c:1354
+#: builtins/pushd.def:656 builtins.c:1359
 msgid "The -l flag specifies that `dirs' should not print shorthand versions"
 msgstr ""
 
-#: builtins/pushd.def:657 builtins.c:1355
+#: builtins/pushd.def:657 builtins.c:1360
 msgid "of directories which are relative to your home directory.  This means"
 msgstr ""
 
-#: builtins/pushd.def:658 builtins.c:1356
+#: builtins/pushd.def:658 builtins.c:1361
 msgid "that `~/bin' might be displayed as `/homes/bfox/bin'.  The -v flag"
 msgstr ""
 
-#: builtins/pushd.def:659 builtins.c:1357
+#: builtins/pushd.def:659 builtins.c:1362
 msgid "causes `dirs' to print the directory stack with one entry per line,"
 msgstr ""
 
-#: builtins/pushd.def:660 builtins.c:1358
+#: builtins/pushd.def:660 builtins.c:1363
 msgid "prepending the directory name with its position in the stack.  The -p"
 msgstr ""
 
-#: builtins/pushd.def:661 builtins.c:1359
+#: builtins/pushd.def:661 builtins.c:1364
 msgid "flag does the same thing, but the stack position is not prepended."
 msgstr ""
 
-#: builtins/pushd.def:662 builtins.c:1360
+#: builtins/pushd.def:662 builtins.c:1365
 msgid "The -c flag clears the directory stack by deleting all of the elements."
 msgstr ""
 
@@ -504,15 +508,15 @@ msgid ""
 "-N   displays the Nth entry counting from the right of the list shown by"
 msgstr ""
 
-#: builtins/pushd.def:673 builtins.c:1301
+#: builtins/pushd.def:673 builtins.c:1306
 msgid "Adds a directory to the top of the directory stack, or rotates"
 msgstr ""
 
-#: builtins/pushd.def:674 builtins.c:1302
+#: builtins/pushd.def:674 builtins.c:1307
 msgid "the stack, making the new top of the stack the current working"
 msgstr ""
 
-#: builtins/pushd.def:675 builtins.c:1303
+#: builtins/pushd.def:675 builtins.c:1308
 msgid "directory.  With no arguments, exchanges the top two directories."
 msgstr ""
 
@@ -552,20 +556,20 @@ msgstr ""
 msgid "     new current working directory."
 msgstr ""
 
-#: builtins/pushd.def:691 builtins/pushd.def:711 builtins.c:1319
-#: builtins.c:1342
+#: builtins/pushd.def:691 builtins/pushd.def:711 builtins.c:1324
+#: builtins.c:1347
 msgid "You can see the directory stack with the `dirs' command."
 msgstr ""
 
-#: builtins/pushd.def:696 builtins.c:1327
+#: builtins/pushd.def:696 builtins.c:1332
 msgid "Removes entries from the directory stack.  With no arguments,"
 msgstr ""
 
-#: builtins/pushd.def:697 builtins.c:1328
+#: builtins/pushd.def:697 builtins.c:1333
 msgid "removes the top directory from the stack, and cd's to the new"
 msgstr ""
 
-#: builtins/pushd.def:698 builtins.c:1329
+#: builtins/pushd.def:698 builtins.c:1334
 msgid "top directory."
 msgstr ""
 
@@ -709,22 +713,22 @@ msgstr ""
 msgid "%s is hashed (%s)\n"
 msgstr ""
 
-#: builtins/ulimit.def:332
+#: builtins/ulimit.def:344
 #, c-format
 msgid "%s: invalid limit argument"
 msgstr ""
 
-#: builtins/ulimit.def:358
+#: builtins/ulimit.def:370
 #, c-format
 msgid "`%c': bad command"
 msgstr ""
 
-#: builtins/ulimit.def:387
+#: builtins/ulimit.def:399
 #, c-format
 msgid "%s: cannot get limit: %s"
 msgstr ""
 
-#: builtins/ulimit.def:425
+#: builtins/ulimit.def:437
 #, c-format
 msgid "%s: cannot modify limit: %s"
 msgstr ""
@@ -749,6 +753,7 @@ msgid "last command: %s\n"
 msgstr ""
 
 #: error.c:173
+#, c-format
 msgid "Aborting..."
 msgstr ""
 
@@ -779,6 +784,7 @@ msgid "%s: unbound variable"
 msgstr ""
 
 #: eval.c:175
+#, c-format
 msgid "\atimed out waiting for input: auto-logout\n"
 msgstr ""
 
@@ -792,27 +798,27 @@ msgstr ""
 msgid "TIMEFORMAT: `%c': invalid format character"
 msgstr ""
 
-#: execute_cmd.c:3541
+#: execute_cmd.c:3525
 #, c-format
 msgid "%s: restricted: cannot specify `/' in command names"
 msgstr ""
 
-#: execute_cmd.c:3629
+#: execute_cmd.c:3613
 #, c-format
 msgid "%s: command not found"
 msgstr ""
 
-#: execute_cmd.c:3859
+#: execute_cmd.c:3843
 #, c-format
 msgid "%s: %s: bad interpreter"
 msgstr ""
 
-#: execute_cmd.c:3896
+#: execute_cmd.c:3880
 #, c-format
 msgid "%s: cannot execute binary file"
 msgstr ""
 
-#: execute_cmd.c:4008
+#: execute_cmd.c:3992
 #, c-format
 msgid "cannot duplicate fd %d to fd %d"
 msgstr ""
@@ -897,32 +903,32 @@ msgstr ""
 msgid "describe_pid: %ld: no such pid"
 msgstr ""
 
-#: jobs.c:1633 nojobs.c:648
+#: jobs.c:1635 nojobs.c:648
 #, c-format
 msgid "wait: pid %ld is not a child of this shell"
 msgstr ""
 
-#: jobs.c:1821
+#: jobs.c:1823
 #, c-format
 msgid "wait_for: No record of process %ld"
 msgstr ""
 
-#: jobs.c:2068
+#: jobs.c:2070
 #, c-format
 msgid "wait_for_job: job %d is stopped"
 msgstr ""
 
-#: jobs.c:2290
+#: jobs.c:2292
 #, c-format
 msgid "%s: job has terminated"
 msgstr ""
 
-#: jobs.c:2299
+#: jobs.c:2301
 #, c-format
 msgid "%s: job %d already in background"
 msgstr ""
 
-#: jobs.c:3043
+#: jobs.c:3045
 msgid "no job control in this shell"
 msgstr ""
 
@@ -971,6 +977,7 @@ msgid "realloc: start and end chunk sizes differ"
 msgstr ""
 
 #: lib/malloc/table.c:175
+#, c-format
 msgid "register_alloc: alloc table is full with FIND_ALLOC?\n"
 msgstr ""
 
@@ -1032,15 +1039,15 @@ msgstr ""
 msgid "network operations not supported"
 msgstr ""
 
-#: mailcheck.c:382
+#: mailcheck.c:386
 msgid "You have mail in $_"
 msgstr ""
 
-#: mailcheck.c:407
+#: mailcheck.c:411
 msgid "You have new mail in $_"
 msgstr ""
 
-#: mailcheck.c:423
+#: mailcheck.c:427
 #, c-format
 msgid "The mail in %s has been read\n"
 msgstr ""
@@ -1068,99 +1075,99 @@ msgstr ""
 msgid "make_redirection: redirection instruction `%d' out of range"
 msgstr ""
 
-#: parse.y:2726
+#: parse.y:2733
 #, c-format
 msgid "unexpected EOF while looking for matching `%c'"
 msgstr ""
 
-#: parse.y:3011
+#: parse.y:3018
 msgid "unexpected EOF while looking for `]]'"
 msgstr ""
 
-#: parse.y:3016
+#: parse.y:3023
 #, c-format
 msgid "syntax error in conditional expression: unexpected token `%s'"
 msgstr ""
 
-#: parse.y:3020
+#: parse.y:3027
 msgid "syntax error in conditional expression"
 msgstr ""
 
-#: parse.y:3098
+#: parse.y:3105
 #, c-format
 msgid "unexpected token `%s', expected `)'"
 msgstr ""
 
-#: parse.y:3102
+#: parse.y:3109
 msgid "expected `)'"
 msgstr ""
 
-#: parse.y:3130
+#: parse.y:3137
 #, c-format
 msgid "unexpected argument `%s' to conditional unary operator"
 msgstr ""
 
-#: parse.y:3134
+#: parse.y:3141
 msgid "unexpected argument to conditional unary operator"
 msgstr ""
 
-#: parse.y:3171
+#: parse.y:3178
 #, c-format
 msgid "unexpected token `%s', conditional binary operator expected"
 msgstr ""
 
-#: parse.y:3175
+#: parse.y:3182
 msgid "conditional binary operator expected"
 msgstr ""
 
-#: parse.y:3191
+#: parse.y:3198
 #, c-format
 msgid "unexpected argument `%s' to conditional binary operator"
 msgstr ""
 
-#: parse.y:3195
+#: parse.y:3202
 msgid "unexpected argument to conditional binary operator"
 msgstr ""
 
-#: parse.y:3206
+#: parse.y:3213
 #, c-format
 msgid "unexpected token `%c' in conditional command"
 msgstr ""
 
-#: parse.y:3209
+#: parse.y:3216
 #, c-format
 msgid "unexpected token `%s' in conditional command"
 msgstr ""
 
-#: parse.y:3213
+#: parse.y:3220
 #, c-format
 msgid "unexpected token %d in conditional command"
 msgstr ""
 
-#: parse.y:4409
+#: parse.y:4426
 #, c-format
 msgid "syntax error near unexpected token `%s'"
 msgstr ""
 
-#: parse.y:4427
+#: parse.y:4444
 #, c-format
 msgid "syntax error near `%s'"
 msgstr ""
 
-#: parse.y:4437
+#: parse.y:4454
 msgid "syntax error: unexpected end of file"
 msgstr ""
 
-#: parse.y:4437
+#: parse.y:4454
 msgid "syntax error"
 msgstr ""
 
-#: parse.y:4499
+#: parse.y:4516
 #, c-format
 msgid "Use \"%s\" to leave the shell.\n"
 msgstr ""
 
-#: parse.y:4658
+#: parse.y:4675
 msgid "unexpected EOF while looking for matching `)'"
 msgstr ""
 
@@ -1268,6 +1275,7 @@ msgid "Type `%s -c help' for more information about shell builtin commands.\n"
 msgstr ""
 
 #: shell.c:1756
+#, c-format
 msgid "Use the `bashbug' command to report bugs.\n"
 msgstr ""
 
@@ -1276,77 +1284,77 @@ msgstr ""
 msgid "sigprocmask: %d: invalid operation"
 msgstr ""
 
-#: subst.c:1046
+#: subst.c:1102
 #, c-format
 msgid "bad substitution: no closing `%s' in %s"
 msgstr ""
 
-#: subst.c:2053
+#: subst.c:2187
 #, c-format
 msgid "%s: cannot assign list to array member"
 msgstr ""
 
-#: subst.c:3880 subst.c:3896
+#: subst.c:4026 subst.c:4042
 msgid "cannot make pipe for process substitution"
 msgstr ""
 
-#: subst.c:3927
+#: subst.c:4073
 msgid "cannot make child for process substitution"
 msgstr ""
 
-#: subst.c:3972
+#: subst.c:4118
 #, c-format
 msgid "cannot open named pipe %s for reading"
 msgstr ""
 
-#: subst.c:3974
+#: subst.c:4120
 #, c-format
 msgid "cannot open named pipe %s for writing"
 msgstr ""
 
-#: subst.c:3982
+#: subst.c:4128
 #, c-format
 msgid "cannout reset nodelay mode for fd %d"
 msgstr ""
 
-#: subst.c:3992
+#: subst.c:4138
 #, c-format
 msgid "cannot duplicate named pipe %s as fd %d"
 msgstr ""
 
-#: subst.c:4167
+#: subst.c:4313
 msgid "cannot make pipe for command substitution"
 msgstr ""
 
-#: subst.c:4196
+#: subst.c:4342
 msgid "cannot make child for command substitution"
 msgstr ""
 
-#: subst.c:4213
+#: subst.c:4359
 msgid "command_substitute: cannot duplicate pipe as fd 1"
 msgstr ""
 
-#: subst.c:4671
+#: subst.c:4802
 #, c-format
 msgid "%s: parameter null or not set"
 msgstr ""
 
-#: subst.c:4937
+#: subst.c:5068
 #, c-format
 msgid "%s: substring expression < 0"
 msgstr ""
 
-#: subst.c:5667
+#: subst.c:5791
 #, c-format
 msgid "%s: bad substitution"
 msgstr ""
 
-#: subst.c:5741
+#: subst.c:5865
 #, c-format
 msgid "$%s: cannot assign in this way"
 msgstr ""
 
-#: subst.c:7110
+#: subst.c:7325
 #, c-format
 msgid "no match: %s"
 msgstr ""
@@ -1444,6 +1452,7 @@ msgid "pop_scope: head of shell_variables not a temporary environment scope"
 msgstr ""
 
 #: version.c:82
+#, c-format
 msgid "Copyright (C) 2004 Free Software Foundation, Inc.\n"
 msgstr ""
 
@@ -2394,7 +2403,7 @@ msgid ""
 msgstr ""
 
 #: builtins.c:675
-msgid "Send the processes named by PID (or JOB) the signal SIGSPEC.  If"
+msgid "Send the processes named by PID (or JOBSPEC) the signal SIGSPEC.  If"
 msgstr ""
 
 #: builtins.c:676
@@ -3420,747 +3429,767 @@ msgid "    -f\tthe maximum size of files created by the shell"
 msgstr ""
 
 #: builtins.c:1055
-msgid "    -l\tthe maximum size a process may lock into memory"
+msgid "    -i  the maximum number of pending signals"
 msgstr ""
 
 #: builtins.c:1056
-msgid "    -m\tthe maximum resident set size"
+msgid "    -l\tthe maximum size a process may lock into memory"
 msgstr ""
 
 #: builtins.c:1057
-msgid "    -n\tthe maximum number of open file descriptors"
+msgid "    -m\tthe maximum resident set size"
 msgstr ""
 
 #: builtins.c:1058
-msgid "    -p\tthe pipe buffer size"
+msgid "    -n\tthe maximum number of open file descriptors"
 msgstr ""
 
 #: builtins.c:1059
-msgid "    -s\tthe maximum stack size"
+msgid "    -p\tthe pipe buffer size"
 msgstr ""
 
 #: builtins.c:1060
-msgid "    -t\tthe maximum amount of cpu time in seconds"
+msgid "    -q  the maximum number of bytes in POSIX message queues"
 msgstr ""
 
 #: builtins.c:1061
-msgid "    -u\tthe maximum number of user processes"
+msgid "    -s\tthe maximum stack size"
 msgstr ""
 
 #: builtins.c:1062
-msgid "    -v\tthe size of virtual memory"
+msgid "    -t\tthe maximum amount of cpu time in seconds"
+msgstr ""
+
+#: builtins.c:1063
+msgid "    -u\tthe maximum number of user processes"
 msgstr ""
 
 #: builtins.c:1064
-msgid "If LIMIT is given, it is the new value of the specified resource;"
+msgid "    -v\tthe size of virtual memory"
 msgstr ""
 
 #: builtins.c:1065
+msgid "    -x  the maximum number of file locks"
+msgstr ""
+
+#: builtins.c:1067
+msgid "If LIMIT is given, it is the new value of the specified resource;"
+msgstr ""
+
+#: builtins.c:1068
 msgid "the special LIMIT values `soft', `hard', and `unlimited' stand for"
 msgstr ""
 
-#: builtins.c:1066
+#: builtins.c:1069
 msgid ""
 "the current soft limit, the current hard limit, and no limit, respectively."
 msgstr ""
 
-#: builtins.c:1067
+#: builtins.c:1070
 msgid "Otherwise, the current value of the specified resource is printed."
 msgstr ""
 
-#: builtins.c:1068
+#: builtins.c:1071
 msgid "If no option is given, then -f is assumed.  Values are in 1024-byte"
 msgstr ""
 
-#: builtins.c:1069
+#: builtins.c:1072
 msgid "increments, except for -t, which is in seconds, -p, which is in"
 msgstr ""
 
-#: builtins.c:1070
+#: builtins.c:1073
 msgid "increments of 512 bytes, and -u, which is an unscaled number of"
 msgstr ""
 
-#: builtins.c:1071
+#: builtins.c:1074
 msgid "processes."
 msgstr ""
 
-#: builtins.c:1078
+#: builtins.c:1081
 msgid "The user file-creation mask is set to MODE.  If MODE is omitted, or if"
 msgstr ""
 
-#: builtins.c:1079
+#: builtins.c:1082
 msgid "`-S' is supplied, the current value of the mask is printed.  The `-S'"
 msgstr ""
 
-#: builtins.c:1080
+#: builtins.c:1083
 msgid "option makes the output symbolic; otherwise an octal number is output."
 msgstr ""
 
-#: builtins.c:1081
+#: builtins.c:1084
 msgid "If `-p' is supplied, and MODE is omitted, the output is in a form"
 msgstr ""
 
-#: builtins.c:1082
+#: builtins.c:1085
 msgid "that may be used as input.  If MODE begins with a digit, it is"
 msgstr ""
 
-#: builtins.c:1083
+#: builtins.c:1086
 msgid "interpreted as an octal number, otherwise it is a symbolic mode string"
 msgstr ""
 
-#: builtins.c:1084
+#: builtins.c:1087
 msgid "like that accepted by chmod(1)."
 msgstr ""
 
-#: builtins.c:1091 builtins.c:1103
+#: builtins.c:1094 builtins.c:1106
 msgid "Wait for the specified process and report its termination status.  If"
 msgstr ""
 
-#: builtins.c:1092 builtins.c:1104
+#: builtins.c:1095 builtins.c:1107
 msgid "N is not given, all currently active child processes are waited for,"
 msgstr ""
 
-#: builtins.c:1093
+#: builtins.c:1096
 msgid "and the return code is zero.  N may be a process ID or a job"
 msgstr ""
 
-#: builtins.c:1094
+#: builtins.c:1097
 msgid "specification; if a job spec is given, all processes in the job's"
 msgstr ""
 
-#: builtins.c:1095
+#: builtins.c:1098
 msgid "pipeline are waited for."
 msgstr ""
 
-#: builtins.c:1105
+#: builtins.c:1108
 msgid "and the return code is zero.  N is a process ID; if it is not given,"
 msgstr ""
 
-#: builtins.c:1106
+#: builtins.c:1109
 msgid "all child processes of the shell are waited for."
 msgstr ""
 
-#: builtins.c:1113
+#: builtins.c:1116
 msgid "The `for' loop executes a sequence of commands for each member in a"
 msgstr ""
 
-#: builtins.c:1114
+#: builtins.c:1117
 msgid "list of items.  If `in WORDS ...;' is not present, then `in \"$@\"' is"
 msgstr ""
 
-#: builtins.c:1115
+#: builtins.c:1118
 msgid "assumed.  For each element in WORDS, NAME is set to that element, and"
 msgstr ""
 
-#: builtins.c:1116
+#: builtins.c:1119
 msgid "the COMMANDS are executed."
 msgstr ""
 
-#: builtins.c:1122
+#: builtins.c:1125
 msgid "Equivalent to"
 msgstr ""
 
-#: builtins.c:1123
+#: builtins.c:1126
 msgid "\t(( EXP1 ))"
 msgstr ""
 
-#: builtins.c:1124
+#: builtins.c:1127
 msgid "\twhile (( EXP2 )); do"
 msgstr ""
 
-#: builtins.c:1125
+#: builtins.c:1128
 msgid "\t\tCOMMANDS"
 msgstr ""
 
-#: builtins.c:1126
+#: builtins.c:1129
 msgid "\t\t(( EXP3 ))"
 msgstr ""
 
-#: builtins.c:1127
+#: builtins.c:1130
 msgid "\tdone"
 msgstr ""
 
-#: builtins.c:1128
+#: builtins.c:1131
 msgid "EXP1, EXP2, and EXP3 are arithmetic expressions.  If any expression is"
 msgstr ""
 
-#: builtins.c:1129
+#: builtins.c:1132
 msgid "omitted, it behaves as if it evaluates to 1."
 msgstr ""
 
-#: builtins.c:1135
+#: builtins.c:1138
 msgid "The WORDS are expanded, generating a list of words.  The"
 msgstr ""
 
-#: builtins.c:1136
+#: builtins.c:1139
 msgid "set of expanded words is printed on the standard error, each"
 msgstr ""
 
-#: builtins.c:1137
+#: builtins.c:1140
 msgid "preceded by a number.  If `in WORDS' is not present, `in \"$@\"'"
 msgstr ""
 
-#: builtins.c:1138
+#: builtins.c:1141
 msgid "is assumed.  The PS3 prompt is then displayed and a line read"
 msgstr ""
 
-#: builtins.c:1139
+#: builtins.c:1142
 msgid "from the standard input.  If the line consists of the number"
 msgstr ""
 
-#: builtins.c:1140
+#: builtins.c:1143
 msgid "corresponding to one of the displayed words, then NAME is set"
 msgstr ""
 
-#: builtins.c:1141
+#: builtins.c:1144
 msgid "to that word.  If the line is empty, WORDS and the prompt are"
 msgstr ""
 
-#: builtins.c:1142
+#: builtins.c:1145
 msgid "redisplayed.  If EOF is read, the command completes.  Any other"
 msgstr ""
 
-#: builtins.c:1143
+#: builtins.c:1146
 msgid "value read causes NAME to be set to null.  The line read is saved"
 msgstr ""
 
-#: builtins.c:1144
+#: builtins.c:1147
 msgid "in the variable REPLY.  COMMANDS are executed after each selection"
 msgstr ""
 
-#: builtins.c:1145
+#: builtins.c:1148
 msgid "until a break command is executed."
 msgstr ""
 
-#: builtins.c:1151
+#: builtins.c:1154
 msgid "Execute PIPELINE and print a summary of the real time, user CPU time,"
 msgstr ""
 
-#: builtins.c:1152
+#: builtins.c:1155
 msgid "and system CPU time spent executing PIPELINE when it terminates."
 msgstr ""
 
-#: builtins.c:1153
+#: builtins.c:1156
 msgid "The return status is the return status of PIPELINE.  The `-p' option"
 msgstr ""
 
-#: builtins.c:1154
+#: builtins.c:1157
 msgid "prints the timing summary in a slightly different format.  This uses"
 msgstr ""
 
-#: builtins.c:1155
+#: builtins.c:1158
 msgid "the value of the TIMEFORMAT variable as the output format."
 msgstr ""
 
-#: builtins.c:1161
+#: builtins.c:1164
 msgid "Selectively execute COMMANDS based upon WORD matching PATTERN.  The"
 msgstr ""
 
-#: builtins.c:1162
+#: builtins.c:1165
 msgid "`|' is used to separate multiple patterns."
 msgstr ""
 
-#: builtins.c:1168
+#: builtins.c:1171
 msgid ""
 "The if COMMANDS are executed.  If the exit status is zero, then the then"
 msgstr ""
 
-#: builtins.c:1169
+#: builtins.c:1172
 msgid ""
 "COMMANDS are executed.  Otherwise, each of the elif COMMANDS are executed"
 msgstr ""
 
-#: builtins.c:1170
+#: builtins.c:1173
 msgid ""
 "in turn, and if the exit status is zero, the corresponding then COMMANDS"
 msgstr ""
 
-#: builtins.c:1171
+#: builtins.c:1174
 msgid ""
 "are executed and the if command completes.  Otherwise, the else COMMANDS"
 msgstr ""
 
-#: builtins.c:1172
+#: builtins.c:1175
 msgid ""
 "are executed, if present.  The exit status is the exit status of the last"
 msgstr ""
 
-#: builtins.c:1173
+#: builtins.c:1176
 msgid "command executed, or zero if no condition tested true."
 msgstr ""
 
-#: builtins.c:1179 builtins.c:1186
+#: builtins.c:1182 builtins.c:1189
 msgid "Expand and execute COMMANDS as long as the final command in the"
 msgstr ""
 
-#: builtins.c:1180
+#: builtins.c:1183
 msgid "`while' COMMANDS has an exit status of zero."
 msgstr ""
 
-#: builtins.c:1187
+#: builtins.c:1190
 msgid "`until' COMMANDS has an exit status which is not zero."
 msgstr ""
 
-#: builtins.c:1193
+#: builtins.c:1196
 msgid "Create a simple command invoked by NAME which runs COMMANDS."
 msgstr ""
 
-#: builtins.c:1194
+#: builtins.c:1197
 msgid "Arguments on the command line along with NAME are passed to the"
 msgstr ""
 
-#: builtins.c:1195
+#: builtins.c:1198
 msgid "function as $0 .. $n."
 msgstr ""
 
-#: builtins.c:1201
+#: builtins.c:1204
 msgid "Run a set of commands in a group.  This is one way to redirect an"
 msgstr ""
 
-#: builtins.c:1202
+#: builtins.c:1205
 msgid "entire set of commands."
 msgstr ""
 
-#: builtins.c:1208
-msgid "This is similar to the `fg' command.  Resume a stopped or background"
+#: builtins.c:1211
+msgid "Equivalent to the JOB_SPEC argument to the `fg' command.  Resume a"
+msgstr ""
+
+#: builtins.c:1212
+msgid "stopped or background job.  JOB_SPEC can specify either a job name"
 msgstr ""
 
-#: builtins.c:1209
-msgid "job specified by %JOBSPEC.  Following the job specification with a `&'"
+#: builtins.c:1213
+msgid "or a job number.  Following JOB_SPEC with a `&' places the job in"
 msgstr ""
 
-#: builtins.c:1210
-msgid "places the job in the background."
+#: builtins.c:1214
+msgid "the background, as if the job specification had been supplied as an"
 msgstr ""
 
-#: builtins.c:1216
+#: builtins.c:1215
+msgid "argument to `bg'."
+msgstr ""
+
+#: builtins.c:1221
 msgid "The EXPRESSION is evaluated according to the rules for arithmetic"
 msgstr ""
 
-#: builtins.c:1217
+#: builtins.c:1222
 msgid "evaluation.  Equivalent to \"let EXPRESSION\"."
 msgstr ""
 
-#: builtins.c:1223
+#: builtins.c:1228
 msgid ""
 "Returns a status of 0 or 1 depending on the evaluation of the conditional"
 msgstr ""
 
-#: builtins.c:1224
+#: builtins.c:1229
 msgid ""
 "expression EXPRESSION.  Expressions are composed of the same primaries used"
 msgstr ""
 
-#: builtins.c:1225
+#: builtins.c:1230
 msgid ""
 "by the `test' builtin, and may be combined using the following operators"
 msgstr ""
 
-#: builtins.c:1227
+#: builtins.c:1232
 msgid "\t( EXPRESSION )\tReturns the value of EXPRESSION"
 msgstr ""
 
-#: builtins.c:1228
+#: builtins.c:1233
 msgid "\t! EXPRESSION\tTrue if EXPRESSION is false; else false"
 msgstr ""
 
-#: builtins.c:1229
+#: builtins.c:1234
 msgid "\tEXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false"
 msgstr ""
 
-#: builtins.c:1230
+#: builtins.c:1235
 msgid "\tEXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false"
 msgstr ""
 
-#: builtins.c:1232
+#: builtins.c:1237
 msgid ""
 "When the `==' and `!=' operators are used, the string to the right of the"
 msgstr ""
 
-#: builtins.c:1233
+#: builtins.c:1238
 msgid "operator is used as a pattern and pattern matching is performed.  The"
 msgstr ""
 
-#: builtins.c:1234
+#: builtins.c:1239
 msgid "&& and || operators do not evaluate EXPR2 if EXPR1 is sufficient to"
 msgstr ""
 
-#: builtins.c:1235
+#: builtins.c:1240
 msgid "determine the expression's value."
 msgstr ""
 
-#: builtins.c:1241
+#: builtins.c:1246
 msgid "BASH_VERSION    Version information for this Bash."
 msgstr ""
 
-#: builtins.c:1242
+#: builtins.c:1247
 msgid "CDPATH          A colon-separated list of directories to search"
 msgstr ""
 
-#: builtins.c:1243
+#: builtins.c:1248
 msgid "\t\tfor directries given as arguments to `cd'."
 msgstr ""
 
-#: builtins.c:1244
+#: builtins.c:1249
 msgid "GLOBIGNORE\tA colon-separated list of patterns describing filenames to"
 msgstr ""
 
-#: builtins.c:1245
+#: builtins.c:1250
 msgid "\t\tbe ignored by pathname expansion."
 msgstr ""
 
-#: builtins.c:1247
+#: builtins.c:1252
 msgid ""
 "HISTFILE        The name of the file where your command history is stored."
 msgstr ""
 
-#: builtins.c:1248
+#: builtins.c:1253
 msgid "HISTFILESIZE    The maximum number of lines this file can contain."
 msgstr ""
 
-#: builtins.c:1249
+#: builtins.c:1254
 msgid "HISTSIZE        The maximum number of history lines that a running"
 msgstr ""
 
-#: builtins.c:1250
+#: builtins.c:1255
 msgid "\t\tshell can access."
 msgstr ""
 
-#: builtins.c:1252
+#: builtins.c:1257
 msgid "HOME            The complete pathname to your login directory."
 msgstr ""
 
-#: builtins.c:1253
+#: builtins.c:1258
 msgid "HOSTNAME\tThe name of the current host."
 msgstr ""
 
-#: builtins.c:1254
+#: builtins.c:1259
 msgid "HOSTTYPE        The type of CPU this version of Bash is running under."
 msgstr ""
 
-#: builtins.c:1255
+#: builtins.c:1260
 msgid "IGNOREEOF       Controls the action of the shell on receipt of an EOF"
 msgstr ""
 
-#: builtins.c:1256
+#: builtins.c:1261
 msgid "\t\tcharacter as the sole input.  If set, then the value"
 msgstr ""
 
-#: builtins.c:1257
+#: builtins.c:1262
 msgid "\t\tof it is the number of EOF characters that can be seen"
 msgstr ""
 
-#: builtins.c:1258
+#: builtins.c:1263
 msgid "\t\tin a row on an empty line before the shell will exit"
 msgstr ""
 
-#: builtins.c:1259
+#: builtins.c:1264
 msgid "\t\t(default 10).  When unset, EOF signifies the end of input."
 msgstr ""
 
-#: builtins.c:1260
+#: builtins.c:1265
 msgid "MACHTYPE\tA string describing the current system Bash is running on."
 msgstr ""
 
-#: builtins.c:1261
+#: builtins.c:1266
 msgid "MAILCHECK\tHow often, in seconds, Bash checks for new mail."
 msgstr ""
 
-#: builtins.c:1262
+#: builtins.c:1267
 msgid "MAILPATH\tA colon-separated list of filenames which Bash checks"
 msgstr ""
 
-#: builtins.c:1263
+#: builtins.c:1268
 msgid "\t\tfor new mail."
 msgstr ""
 
-#: builtins.c:1264
+#: builtins.c:1269
 msgid "OSTYPE\t\tThe version of Unix this version of Bash is running on."
 msgstr ""
 
-#: builtins.c:1265
+#: builtins.c:1270
 msgid "PATH            A colon-separated list of directories to search when"
 msgstr ""
 
-#: builtins.c:1266
+#: builtins.c:1271
 msgid "\t\tlooking for commands."
 msgstr ""
 
-#: builtins.c:1267
+#: builtins.c:1272
 msgid "PROMPT_COMMAND  A command to be executed before the printing of each"
 msgstr ""
 
-#: builtins.c:1268
+#: builtins.c:1273
 msgid "\t\tprimary prompt."
 msgstr ""
 
-#: builtins.c:1269
+#: builtins.c:1274
 msgid "PS1             The primary prompt string."
 msgstr ""
 
-#: builtins.c:1270
+#: builtins.c:1275
 msgid "PS2             The secondary prompt string."
 msgstr ""
 
-#: builtins.c:1271
+#: builtins.c:1276
 msgid "PWD\t\tThe full pathname of the current directory."
 msgstr ""
 
-#: builtins.c:1272
+#: builtins.c:1277
 msgid "SHELLOPTS\tA colon-separated list of enabled shell options."
 msgstr ""
 
-#: builtins.c:1273
+#: builtins.c:1278
 msgid "TERM            The name of the current terminal type."
 msgstr ""
 
-#: builtins.c:1274
+#: builtins.c:1279
 msgid "TIMEFORMAT\tThe output format for timing statistics displayed by the"
 msgstr ""
 
-#: builtins.c:1275
+#: builtins.c:1280
 msgid "\t\t`time' reserved word."
 msgstr ""
 
-#: builtins.c:1276
+#: builtins.c:1281
 msgid "auto_resume     Non-null means a command word appearing on a line by"
 msgstr ""
 
-#: builtins.c:1277
+#: builtins.c:1282
 msgid "\t\titself is first looked for in the list of currently"
 msgstr ""
 
-#: builtins.c:1278
+#: builtins.c:1283
 msgid "\t\tstopped jobs.  If found there, that job is foregrounded."
 msgstr ""
 
-#: builtins.c:1279
+#: builtins.c:1284
 msgid "\t\tA value of `exact' means that the command word must"
 msgstr ""
 
-#: builtins.c:1280
+#: builtins.c:1285
 msgid "\t\texactly match a command in the list of stopped jobs.  A"
 msgstr ""
 
-#: builtins.c:1281
+#: builtins.c:1286
 msgid "\t\tvalue of `substring' means that the command word must"
 msgstr ""
 
-#: builtins.c:1282
+#: builtins.c:1287
 msgid "\t\tmatch a substring of the job.  Any other value means that"
 msgstr ""
 
-#: builtins.c:1283
+#: builtins.c:1288
 msgid "\t\tthe command must be a prefix of a stopped job."
 msgstr ""
 
-#: builtins.c:1286
+#: builtins.c:1291
 msgid "histchars       Characters controlling history expansion and quick"
 msgstr ""
 
-#: builtins.c:1287
+#: builtins.c:1292
 msgid "\t\tsubstitution.  The first character is the history"
 msgstr ""
 
-#: builtins.c:1288
+#: builtins.c:1293
 msgid "\t\tsubstitution character, usually `!'.  The second is"
 msgstr ""
 
-#: builtins.c:1289
+#: builtins.c:1294
 msgid "\t\tthe `quick substitution' character, usually `^'.  The"
 msgstr ""
 
-#: builtins.c:1290
+#: builtins.c:1295
 msgid "\t\tthird is the `history comment' character, usually `#'."
 msgstr ""
 
-#: builtins.c:1292
+#: builtins.c:1297
 msgid "HISTIGNORE\tA colon-separated list of patterns used to decide which"
 msgstr ""
 
-#: builtins.c:1293
+#: builtins.c:1298
 msgid "\t\tcommands should be saved on the history list."
 msgstr ""
 
-#: builtins.c:1305
+#: builtins.c:1310
 msgid "+N\tRotates the stack so that the Nth directory (counting"
 msgstr ""
 
-#: builtins.c:1306
+#: builtins.c:1311
 msgid "\tfrom the left of the list shown by `dirs', starting with"
 msgstr ""
 
-#: builtins.c:1307 builtins.c:1311
+#: builtins.c:1312 builtins.c:1316
 msgid "\tzero) is at the top."
 msgstr ""
 
-#: builtins.c:1309
+#: builtins.c:1314
 msgid "-N\tRotates the stack so that the Nth directory (counting"
 msgstr ""
 
-#: builtins.c:1310
+#: builtins.c:1315
 msgid "\tfrom the right of the list shown by `dirs', starting with"
 msgstr ""
 
-#: builtins.c:1313
+#: builtins.c:1318
 msgid "-n\tsuppress the normal change of directory when adding directories"
 msgstr ""
 
-#: builtins.c:1314
+#: builtins.c:1319
 msgid "\tto the stack, so only the stack is manipulated."
 msgstr ""
 
-#: builtins.c:1316
+#: builtins.c:1321
 msgid "dir\tadds DIR to the directory stack at the top, making it the"
 msgstr ""
 
-#: builtins.c:1317
+#: builtins.c:1322
 msgid "\tnew current working directory."
 msgstr ""
 
-#: builtins.c:1331
+#: builtins.c:1336
 msgid "+N\tremoves the Nth entry counting from the left of the list"
 msgstr ""
 
-#: builtins.c:1332
+#: builtins.c:1337
 msgid "\tshown by `dirs', starting with zero.  For example: `popd +0'"
 msgstr ""
 
-#: builtins.c:1333
+#: builtins.c:1338
 msgid "\tremoves the first directory, `popd +1' the second."
 msgstr ""
 
-#: builtins.c:1335
+#: builtins.c:1340
 msgid "-N\tremoves the Nth entry counting from the right of the list"
 msgstr ""
 
-#: builtins.c:1336
+#: builtins.c:1341
 msgid "\tshown by `dirs', starting with zero.  For example: `popd -0'"
 msgstr ""
 
-#: builtins.c:1337
+#: builtins.c:1342
 msgid "\tremoves the last directory, `popd -1' the next to last."
 msgstr ""
 
-#: builtins.c:1339
+#: builtins.c:1344
 msgid "-n\tsuppress the normal change of directory when removing directories"
 msgstr ""
 
-#: builtins.c:1340
+#: builtins.c:1345
 msgid "\tfrom the stack, so only the stack is manipulated."
 msgstr ""
 
-#: builtins.c:1362
+#: builtins.c:1367
 msgid "+N\tdisplays the Nth entry counting from the left of the list shown by"
 msgstr ""
 
-#: builtins.c:1363 builtins.c:1366
+#: builtins.c:1368 builtins.c:1371
 msgid "\tdirs when invoked without options, starting with zero."
 msgstr ""
 
-#: builtins.c:1365
+#: builtins.c:1370
 msgid "-N\tdisplays the Nth entry counting from the right of the list shown by"
 msgstr ""
 
-#: builtins.c:1373
+#: builtins.c:1378
 msgid "Toggle the values of variables controlling optional behavior."
 msgstr ""
 
-#: builtins.c:1374
+#: builtins.c:1379
 msgid "The -s flag means to enable (set) each OPTNAME; the -u flag"
 msgstr ""
 
-#: builtins.c:1375
+#: builtins.c:1380
 msgid "unsets each OPTNAME.  The -q flag suppresses output; the exit"
 msgstr ""
 
-#: builtins.c:1376
+#: builtins.c:1381
 msgid "status indicates whether each OPTNAME is set or unset.  The -o"
 msgstr ""
 
-#: builtins.c:1377
+#: builtins.c:1382
 msgid "option restricts the OPTNAMEs to those defined for use with"
 msgstr ""
 
-#: builtins.c:1378
+#: builtins.c:1383
 msgid "`set -o'.  With no options, or with the -p option, a list of all"
 msgstr ""
 
-#: builtins.c:1379
+#: builtins.c:1384
 msgid "settable options is displayed, with an indication of whether or"
 msgstr ""
 
-#: builtins.c:1380
+#: builtins.c:1385
 msgid "not each is set."
 msgstr ""
 
-#: builtins.c:1386
+#: builtins.c:1391
 msgid "printf formats and prints ARGUMENTS under control of the FORMAT. FORMAT"
 msgstr ""
 
-#: builtins.c:1387
+#: builtins.c:1392
 msgid "is a character string which contains three types of objects: plain"
 msgstr ""
 
-#: builtins.c:1388
+#: builtins.c:1393
 msgid ""
 "characters, which are simply copied to standard output, character escape"
 msgstr ""
 
-#: builtins.c:1389
+#: builtins.c:1394
 msgid "sequences which are converted and copied to the standard output, and"
 msgstr ""
 
-#: builtins.c:1390
+#: builtins.c:1395
 msgid ""
 "format specifications, each of which causes printing of the next successive"
 msgstr ""
 
-#: builtins.c:1391
+#: builtins.c:1396
 msgid "argument.  In addition to the standard printf(1) formats, %b means to"
 msgstr ""
 
-#: builtins.c:1392
+#: builtins.c:1397
 msgid "expand backslash escape sequences in the corresponding argument, and %q"
 msgstr ""
 
-#: builtins.c:1393
+#: builtins.c:1398
 msgid "means to quote the argument in a way that can be reused as shell input."
 msgstr ""
 
-#: builtins.c:1400
+#: builtins.c:1405
 msgid "For each NAME, specify how arguments are to be completed."
 msgstr ""
 
-#: builtins.c:1401
+#: builtins.c:1406
 msgid "If the -p option is supplied, or if no options are supplied, existing"
 msgstr ""
 
-#: builtins.c:1402
+#: builtins.c:1407
 msgid "completion specifications are printed in a way that allows them to be"
 msgstr ""
 
-#: builtins.c:1403
+#: builtins.c:1408
 msgid "reused as input.  The -r option removes a completion specification for"
 msgstr ""
 
-#: builtins.c:1404
+#: builtins.c:1409
 msgid "each NAME, or, if no NAMEs are supplied, all completion specifications."
 msgstr ""
 
-#: builtins.c:1412
+#: builtins.c:1417
 msgid "Display the possible completions depending on the options.  Intended"
 msgstr ""
 
-#: builtins.c:1413
+#: builtins.c:1418
 msgid ""
 "to be used from within a shell function generating possible completions."
 msgstr ""
 
-#: builtins.c:1414
+#: builtins.c:1419
 msgid "If the optional WORD argument is supplied, matches against WORD are"
 msgstr ""
 
-#: builtins.c:1415
+#: builtins.c:1420
 msgid "generated."
 msgstr ""
index 6a9c77ba25ca19e810fecf4cbdf2859e979a677f..6382b17df61be3a6c2ea17233bc72eed46f75bab 100644 (file)
Binary files a/po/en@boldquot.gmo and b/po/en@boldquot.gmo differ
index 652c51b0c068d99f537e958b803ca557c48a955d..c66f3b6dc1ca88e76effc50b21fd17071a78299a 100644 (file)
 #: builtins.c:722 builtins.c:745 builtins.c:835 builtins.c:919 builtins.c:921
 #: builtins.c:943 builtins.c:946 builtins.c:948 builtins.c:950 builtins.c:952
 #: builtins.c:954 builtins.c:957 builtins.c:966 builtins.c:968 builtins.c:973
-#: builtins.c:976 builtins.c:1019 builtins.c:1024 builtins.c:1028
-#: builtins.c:1032 builtins.c:1034 builtins.c:1047 builtins.c:1062
-#: builtins.c:1226 builtins.c:1231 builtins.c:1305 builtins.c:1309
-#: builtins.c:1313 builtins.c:1316 builtins.c:1319 builtins.c:1331
-#: builtins.c:1335 builtins.c:1339 builtins.c:1342 builtins.c:1354
-#: builtins.c:1362 builtins.c:1365
+#: builtins.c:976 builtins.c:1020 builtins.c:1025 builtins.c:1029
+#: builtins.c:1033 builtins.c:1035 builtins.c:1048 builtins.c:1063
+#: builtins.c:1226 builtins.c:1231 builtins.c:1304 builtins.c:1308
+#: builtins.c:1312 builtins.c:1315 builtins.c:1318 builtins.c:1330
+#: builtins.c:1334 builtins.c:1338 builtins.c:1341 builtins.c:1353
+#: builtins.c:1361 builtins.c:1364
 msgid ""
 msgstr ""
 "Project-Id-Version: GNU bash 3.0-rc1\n"
-"POT-Creation-Date: 2003-12-22 15:34-0500\n"
+"Report-Msgid-Bugs-To: bug-bash@gnu.org\n"
+"POT-Creation-Date: 2004-09-09 17:59-0400\n"
 "PO-Revision-Date: 2003-12-22 15:34-0500\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Report-Msgid-Bugs-To: bug-bash@gnu.org\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: arrayfunc.c:45
@@ -68,35 +68,30 @@ msgstr "bad array subscript"
 msgid "%s: cannot assign to non-numeric index"
 msgstr "%s: cannot assign to non-numeric index"
 
-#: bashhist.c:321
+#: bashhist.c:322
 #, c-format
 msgid "%s: cannot create: %s"
 msgstr "%s: cannot create: %s"
 
-#: bashline.c:2791
+#: bashline.c:2916
 msgid "bash_execute_unix_command: cannot find keymap for command"
 msgstr "bash_execute_unix_command: cannot find keymap for command"
 
-#: bashline.c:2840
+#: bashline.c:2965
 #, c-format
 msgid "%s: first non-whitespace character is not `\"'"
 msgstr "%s: first non-whitespace character is not ‘\e[1m\"\e[0m’"
 
-#: bashline.c:2869
+#: bashline.c:2994
 #, c-format
 msgid "no closing `%c' in %s"
 msgstr "no closing ‘\e[1m%c\e[0m’ in %s"
 
-#: bashline.c:2903
+#: bashline.c:3028
 #, c-format
 msgid "%s: missing colon separator"
 msgstr "%s: missing colon separator"
 
-#: builtins/alias.def:123
-#, c-format
-msgid "`%s': invalid alias name"
-msgstr "‘\e[1m%s\e[0m’: invalid alias name"
-
 #: builtins/bind.def:194
 #, c-format
 msgid "`%s': invalid keymap name"
@@ -155,19 +150,14 @@ msgstr "The value of EXPR indicates how many call frames to go back before the"
 msgid "current one; the top frame is frame 0."
 msgstr "current one; the top frame is frame 0."
 
-#: builtins/cd.def:188
+#: builtins/cd.def:190
 msgid "HOME not set"
 msgstr "HOME not set"
 
-#: builtins/cd.def:200
+#: builtins/cd.def:202
 msgid "OLDPWD not set"
 msgstr "OLDPWD not set"
 
-#: builtins/cd.def:357
-#, c-format
-msgid "write error: %s"
-msgstr "write error: %s"
-
 #: builtins/common.c:133 test.c:921
 msgid "too many arguments"
 msgstr "too many arguments"
@@ -197,7 +187,7 @@ msgstr "%s: invalid option"
 msgid "%s: invalid option name"
 msgstr "%s: invalid option name"
 
-#: builtins/common.c:194 general.c:229 general.c:234
+#: builtins/common.c:194 general.c:231 general.c:236
 #, c-format
 msgid "`%s': not a valid identifier"
 msgstr "‘\e[1m%s\e[0m’: not a valid identifier"
@@ -264,12 +254,17 @@ msgstr "restricted"
 msgid "%s: not a shell builtin"
 msgstr "%s: not a shell builtin"
 
-#: builtins/common.c:486
+#: builtins/common.c:276
+#, c-format
+msgid "write error: %s"
+msgstr "write error: %s"
+
+#: builtins/common.c:484
 #, c-format
 msgid "%s: error retrieving current directory: %s: %s\n"
 msgstr "%s: error retrieving current directory: %s: %s\n"
 
-#: builtins/common.c:553 builtins/common.c:555
+#: builtins/common.c:548 builtins/common.c:550
 #, c-format
 msgid "%s: ambiguous job spec"
 msgstr "%s: ambiguous job spec"
@@ -300,7 +295,7 @@ msgstr "can only be used in a function"
 msgid "cannot use `-f' to make functions"
 msgstr "cannot use ‘\e[1m-f\e[0m’ to make functions"
 
-#: builtins/declare.def:307 execute_cmd.c:3949
+#: builtins/declare.def:307 execute_cmd.c:3969
 #, c-format
 msgid "%s: readonly function"
 msgstr "%s: readonly function"
@@ -334,17 +329,17 @@ msgstr "%s: not dynamically loaded"
 msgid "%s: cannot delete: %s"
 msgstr "%s: cannot delete: %s"
 
-#: builtins/evalfile.c:128 execute_cmd.c:3821 shell.c:1395
+#: builtins/evalfile.c:129 execute_cmd.c:3841 shell.c:1396
 #, c-format
 msgid "%s: is a directory"
 msgstr "%s: is a directory"
 
-#: builtins/evalfile.c:133
+#: builtins/evalfile.c:134
 #, c-format
 msgid "%s: not a regular file"
 msgstr "%s: not a regular file"
 
-#: builtins/evalfile.c:141
+#: builtins/evalfile.c:142
 #, c-format
 msgid "%s: file is too large"
 msgstr "%s: file is too large"
@@ -362,20 +357,20 @@ msgstr "not login shell: use ‘\e[1mexit\e[0m’"
 msgid "There are stopped jobs.\n"
 msgstr "There are stopped jobs.\n"
 
-#: builtins/fc.def:252
+#: builtins/fc.def:254
 msgid "no command found"
 msgstr "no command found"
 
-#: builtins/fc.def:317
+#: builtins/fc.def:319
 msgid "history specification"
 msgstr "history specification"
 
-#: builtins/fc.def:338
+#: builtins/fc.def:340
 #, c-format
 msgid "%s: cannot open temp file: %s"
 msgstr "%s: cannot open temp file: %s"
 
-#: builtins/fg_bg.def:133
+#: builtins/fg_bg.def:145
 #, c-format
 msgid "job %d started without job control"
 msgstr "job %d started without job control"
@@ -466,7 +461,7 @@ msgstr "%s: arguments must be process or job IDs"
 msgid "Unknown error"
 msgstr "Unknown error"
 
-#: builtins/let.def:94 builtins/let.def:119 expr.c:496 expr.c:511
+#: builtins/let.def:94 builtins/let.def:119 expr.c:497 expr.c:512
 msgid "expression expected"
 msgstr "expression expected"
 
@@ -475,12 +470,12 @@ msgstr "expression expected"
 msgid "`%s': missing format character"
 msgstr "‘\e[1m%s\e[0m’: missing format character"
 
-#: builtins/printf.def:408
+#: builtins/printf.def:423
 #, c-format
 msgid "`%c': invalid format character"
 msgstr "‘\e[1m%c\e[0m’: invalid format character"
 
-#: builtins/printf.def:601
+#: builtins/printf.def:629
 msgid "missing hex digit for \\x"
 msgstr "missing hex digit for \\x"
 
@@ -492,48 +487,48 @@ msgstr "no other directory"
 msgid "<no current directory>"
 msgstr "<no current directory>"
 
-#: builtins/pushd.def:652 builtins.c:1351
+#: builtins/pushd.def:652 builtins.c:1350
 msgid "Display the list of currently remembered directories.  Directories"
 msgstr "Display the list of currently remembered directories.  Directories"
 
-#: builtins/pushd.def:653 builtins.c:1352
+#: builtins/pushd.def:653 builtins.c:1351
 msgid "find their way onto the list with the `pushd' command; you can get"
 msgstr ""
 "find their way onto the list with the ‘\e[1mpushd\e[0m’ command; you can get"
 
-#: builtins/pushd.def:654 builtins.c:1353
+#: builtins/pushd.def:654 builtins.c:1352
 msgid "back up through the list with the `popd' command."
 msgstr "back up through the list with the ‘\e[1mpopd\e[0m’ command."
 
-#: builtins/pushd.def:656 builtins.c:1355
+#: builtins/pushd.def:656 builtins.c:1354
 msgid "The -l flag specifies that `dirs' should not print shorthand versions"
 msgstr ""
 "The -l flag specifies that ‘\e[1mdirs\e[0m’ should not print shorthand versions"
 
-#: builtins/pushd.def:657 builtins.c:1356
+#: builtins/pushd.def:657 builtins.c:1355
 msgid "of directories which are relative to your home directory.  This means"
 msgstr "of directories which are relative to your home directory.  This means"
 
-#: builtins/pushd.def:658 builtins.c:1357
+#: builtins/pushd.def:658 builtins.c:1356
 msgid "that `~/bin' might be displayed as `/homes/bfox/bin'.  The -v flag"
 msgstr ""
 "that ‘\e[1m~/bin\e[0m’ might be displayed as ‘\e[1m/homes/bfox/bin\e[0m’.  The -v "
 "flag"
 
-#: builtins/pushd.def:659 builtins.c:1358
+#: builtins/pushd.def:659 builtins.c:1357
 msgid "causes `dirs' to print the directory stack with one entry per line,"
 msgstr ""
 "causes ‘\e[1mdirs\e[0m’ to print the directory stack with one entry per line,"
 
-#: builtins/pushd.def:660 builtins.c:1359
+#: builtins/pushd.def:660 builtins.c:1358
 msgid "prepending the directory name with its position in the stack.  The -p"
 msgstr "prepending the directory name with its position in the stack.  The -p"
 
-#: builtins/pushd.def:661 builtins.c:1360
+#: builtins/pushd.def:661 builtins.c:1359
 msgid "flag does the same thing, but the stack position is not prepended."
 msgstr "flag does the same thing, but the stack position is not prepended."
 
-#: builtins/pushd.def:662 builtins.c:1361
+#: builtins/pushd.def:662 builtins.c:1360
 msgid "The -c flag clears the directory stack by deleting all of the elements."
 msgstr ""
 "The -c flag clears the directory stack by deleting all of the elements."
@@ -553,15 +548,15 @@ msgid ""
 msgstr ""
 "-N   displays the Nth entry counting from the right of the list shown by"
 
-#: builtins/pushd.def:673 builtins.c:1302
+#: builtins/pushd.def:673 builtins.c:1301
 msgid "Adds a directory to the top of the directory stack, or rotates"
 msgstr "Adds a directory to the top of the directory stack, or rotates"
 
-#: builtins/pushd.def:674 builtins.c:1303
+#: builtins/pushd.def:674 builtins.c:1302
 msgid "the stack, making the new top of the stack the current working"
 msgstr "the stack, making the new top of the stack the current working"
 
-#: builtins/pushd.def:675 builtins.c:1304
+#: builtins/pushd.def:675 builtins.c:1303
 msgid "directory.  With no arguments, exchanges the top two directories."
 msgstr "directory.  With no arguments, exchanges the top two directories."
 
@@ -601,20 +596,20 @@ msgstr "dir  adds DIR to the directory stack at the top, making it the"
 msgid "     new current working directory."
 msgstr "     new current working directory."
 
-#: builtins/pushd.def:691 builtins/pushd.def:711 builtins.c:1320
-#: builtins.c:1343
+#: builtins/pushd.def:691 builtins/pushd.def:711 builtins.c:1319
+#: builtins.c:1342
 msgid "You can see the directory stack with the `dirs' command."
 msgstr "You can see the directory stack with the ‘\e[1mdirs\e[0m’ command."
 
-#: builtins/pushd.def:696 builtins.c:1328
+#: builtins/pushd.def:696 builtins.c:1327
 msgid "Removes entries from the directory stack.  With no arguments,"
 msgstr "Removes entries from the directory stack.  With no arguments,"
 
-#: builtins/pushd.def:697 builtins.c:1329
+#: builtins/pushd.def:697 builtins.c:1328
 msgid "removes the top directory from the stack, and cd's to the new"
 msgstr "removes the top directory from the stack, and cd's to the new"
 
-#: builtins/pushd.def:698 builtins.c:1330
+#: builtins/pushd.def:698 builtins.c:1329
 msgid "top directory."
 msgstr "top directory."
 
@@ -730,32 +725,32 @@ msgstr "cannot suspend"
 msgid "cannot suspend a login shell"
 msgstr "cannot suspend a login shell"
 
-#: builtins/type.def:231
+#: builtins/type.def:232
 #, c-format
 msgid "%s is aliased to `%s'\n"
 msgstr "%s is aliased to ‘\e[1m%s\e[0m’\n"
 
-#: builtins/type.def:252
+#: builtins/type.def:253
 #, c-format
 msgid "%s is a shell keyword\n"
 msgstr "%s is a shell keyword\n"
 
-#: builtins/type.def:272
+#: builtins/type.def:273
 #, c-format
 msgid "%s is a function\n"
 msgstr "%s is a function\n"
 
-#: builtins/type.def:297
+#: builtins/type.def:298
 #, c-format
 msgid "%s is a shell builtin\n"
 msgstr "%s is a shell builtin\n"
 
-#: builtins/type.def:318
+#: builtins/type.def:319
 #, c-format
 msgid "%s is %s\n"
 msgstr "%s is %s\n"
 
-#: builtins/type.def:338
+#: builtins/type.def:339
 #, c-format
 msgid "%s is hashed (%s)\n"
 msgstr "%s is hashed (%s)\n"
@@ -789,7 +784,7 @@ msgstr "octal number"
 msgid "`%c': invalid symbolic mode operator"
 msgstr "‘\e[1m%c\e[0m’: invalid symbolic mode operator"
 
-#: builtins/umask.def:279
+#: builtins/umask.def:281
 #, c-format
 msgid "`%c': invalid symbolic mode character"
 msgstr "‘\e[1m%c\e[0m’: invalid symbolic mode character"
@@ -833,98 +828,98 @@ msgstr "%s: unbound variable"
 msgid "\atimed out waiting for input: auto-logout\n"
 msgstr "\atimed out waiting for input: auto-logout\n"
 
-#: execute_cmd.c:466
+#: execute_cmd.c:467
 #, c-format
 msgid "cannot redirect standard input from /dev/null: %s"
 msgstr "cannot redirect standard input from /dev/null: %s"
 
-#: execute_cmd.c:1036
+#: execute_cmd.c:1037
 #, c-format
 msgid "TIMEFORMAT: `%c': invalid format character"
 msgstr "TIMEFORMAT: ‘\e[1m%c\e[0m’: invalid format character"
 
-#: execute_cmd.c:3521
+#: execute_cmd.c:3541
 #, c-format
 msgid "%s: restricted: cannot specify `/' in command names"
 msgstr "%s: restricted: cannot specify ‘\e[1m/\e[0m’ in command names"
 
-#: execute_cmd.c:3609
+#: execute_cmd.c:3629
 #, c-format
 msgid "%s: command not found"
 msgstr "%s: command not found"
 
-#: execute_cmd.c:3839
+#: execute_cmd.c:3859
 #, c-format
 msgid "%s: %s: bad interpreter"
 msgstr "%s: %s: bad interpreter"
 
-#: execute_cmd.c:3876
+#: execute_cmd.c:3896
 #, c-format
 msgid "%s: cannot execute binary file"
 msgstr "%s: cannot execute binary file"
 
-#: execute_cmd.c:3988
+#: execute_cmd.c:4008
 #, c-format
 msgid "cannot duplicate fd %d to fd %d"
 msgstr "cannot duplicate fd %d to fd %d"
 
-#: expr.c:239
+#: expr.c:240
 msgid "expression recursion level exceeded"
 msgstr "expression recursion level exceeded"
 
-#: expr.c:263
+#: expr.c:264
 msgid "recursion stack underflow"
 msgstr "recursion stack underflow"
 
-#: expr.c:374
+#: expr.c:375
 msgid "syntax error in expression"
 msgstr "syntax error in expression"
 
-#: expr.c:414
+#: expr.c:415
 msgid "attempted assignment to non-variable"
 msgstr "attempted assignment to non-variable"
 
-#: expr.c:435 expr.c:440 expr.c:750
+#: expr.c:436 expr.c:441 expr.c:751
 msgid "division by 0"
 msgstr "division by 0"
 
-#: expr.c:466
+#: expr.c:467
 msgid "bug: bad expassign token"
 msgstr "bug: bad expassign token"
 
-#: expr.c:508
+#: expr.c:509
 msgid "`:' expected for conditional expression"
 msgstr "‘\e[1m:\e[0m’ expected for conditional expression"
 
-#: expr.c:775
+#: expr.c:776
 msgid "exponent less than 0"
 msgstr "exponent less than 0"
 
-#: expr.c:819
+#: expr.c:821
 msgid "identifier expected after pre-increment or pre-decrement"
 msgstr "identifier expected after pre-increment or pre-decrement"
 
-#: expr.c:847
+#: expr.c:849
 msgid "missing `)'"
 msgstr "missing ‘\e[1m)\e[0m’"
 
-#: expr.c:871
+#: expr.c:892
 msgid "syntax error: operand expected"
 msgstr "syntax error: operand expected"
 
-#: expr.c:1146
+#: expr.c:1178
 msgid "invalid number"
 msgstr "invalid number"
 
-#: expr.c:1150
+#: expr.c:1182
 msgid "invalid arithmetic base"
 msgstr "invalid arithmetic base"
 
-#: expr.c:1170
+#: expr.c:1202
 msgid "value too great for base"
 msgstr "value too great for base"
 
-#: general.c:60
+#: general.c:62
 msgid "getcwd: cannot access parent directories"
 msgstr "getcwd: cannot access parent directories"
 
@@ -938,42 +933,42 @@ msgstr "cannot allocate new file descriptor for bash input from fd %d"
 msgid "save_bash_input: buffer already exists for new fd %d"
 msgstr "save_bash_input: buffer already exists for new fd %d"
 
-#: jobs.c:693
+#: jobs.c:694
 #, c-format
 msgid "deleting stopped job %d with process group %ld"
 msgstr "deleting stopped job %d with process group %ld"
 
-#: jobs.c:1001
+#: jobs.c:1002
 #, c-format
 msgid "describe_pid: %ld: no such pid"
 msgstr "describe_pid: %ld: no such pid"
 
-#: jobs.c:1632 nojobs.c:648
+#: jobs.c:1633 nojobs.c:648
 #, c-format
 msgid "wait: pid %ld is not a child of this shell"
 msgstr "wait: pid %ld is not a child of this shell"
 
-#: jobs.c:1815
+#: jobs.c:1821
 #, c-format
 msgid "wait_for: No record of process %ld"
 msgstr "wait_for: No record of process %ld"
 
-#: jobs.c:2062
+#: jobs.c:2068
 #, c-format
 msgid "wait_for_job: job %d is stopped"
 msgstr "wait_for_job: job %d is stopped"
 
-#: jobs.c:2284
+#: jobs.c:2290
 #, c-format
 msgid "%s: job has terminated"
 msgstr "%s: job has terminated"
 
-#: jobs.c:2293
+#: jobs.c:2299
 #, c-format
 msgid "%s: job %d already in background"
 msgstr "%s: job %d already in background"
 
-#: jobs.c:3037
+#: jobs.c:3043
 msgid "no job control in this shell"
 msgstr "no job control in this shell"
 
@@ -1111,12 +1106,12 @@ msgstr "syntax error: ‘\e[1m;\e[0m’ unexpected"
 msgid "syntax error: `((%s))'"
 msgstr "syntax error: ‘\e[1m((%s))\e[0m’"
 
-#: make_cmd.c:560
+#: make_cmd.c:561
 #, c-format
 msgid "make_here_document: bad instruction type %d"
 msgstr "make_here_document: bad instruction type %d"
 
-#: make_cmd.c:730
+#: make_cmd.c:731
 #, c-format
 msgid "make_redirection: redirection instruction `%d' out of range"
 msgstr "make_redirection: redirection instruction ‘\e[1m%d\e[0m’ out of range"
@@ -1190,34 +1185,34 @@ msgstr "unexpected token ‘\e[1m%s\e[0m’ in conditional command"
 msgid "unexpected token %d in conditional command"
 msgstr "unexpected token %d in conditional command"
 
-#: parse.y:4400
+#: parse.y:4409
 #, c-format
 msgid "syntax error near unexpected token `%s'"
 msgstr "syntax error near unexpected token ‘\e[1m%s\e[0m’"
 
-#: parse.y:4418
+#: parse.y:4427
 #, c-format
 msgid "syntax error near `%s'"
 msgstr "syntax error near ‘\e[1m%s\e[0m’"
 
-#: parse.y:4428
+#: parse.y:4437
 msgid "syntax error: unexpected end of file"
 msgstr "syntax error: unexpected end of file"
 
-#: parse.y:4428
+#: parse.y:4437
 msgid "syntax error"
 msgstr "syntax error"
 
-#: parse.y:4490
+#: parse.y:4499
 #, c-format
 msgid "Use \"%s\" to leave the shell.\n"
 msgstr "Use “\e[1m%s\e[0m” to leave the shell.\n"
 
-#: parse.y:4649
+#: parse.y:4658
 msgid "unexpected EOF while looking for matching `)'"
 msgstr "unexpected EOF while looking for matching ‘\e[1m)\e[0m’"
 
-#: pcomplete.c:988
+#: pcomplete.c:998
 #, c-format
 msgid "completion: function `%s' not found"
 msgstr "completion: function ‘\e[1m%s\e[0m’ not found"
@@ -1227,12 +1222,12 @@ msgstr "completion: function ‘\e[1m%s\e[0m’ not found"
 msgid "progcomp_insert: %s: NULL COMPSPEC"
 msgstr "progcomp_insert: %s: NULL COMPSPEC"
 
-#: print_cmd.c:260
+#: print_cmd.c:261
 #, c-format
 msgid "print_command: bad connector `%d'"
 msgstr "print_command: bad connector ‘\e[1m%d\e[0m’"
 
-#: print_cmd.c:1172
+#: print_cmd.c:1211
 #, c-format
 msgid "cprintf: `%c': invalid format character"
 msgstr "cprintf: ‘\e[1m%c\e[0m’: invalid format character"
@@ -1282,11 +1277,11 @@ msgstr "/tmp must be a valid directory name"
 msgid "%c%c: invalid option"
 msgstr "%c%c: invalid option"
 
-#: shell.c:1590
+#: shell.c:1591
 msgid "I have no name!"
 msgstr "I have no name!"
 
-#: shell.c:1725
+#: shell.c:1726
 #, c-format
 msgid ""
 "Usage:\t%s [GNU long option] [option] ...\n"
@@ -1295,116 +1290,116 @@ msgstr ""
 "Usage:\t%s [GNU long option] [option] ...\n"
 "\t%s [GNU long option] [option] script-file ...\n"
 
-#: shell.c:1727
+#: shell.c:1728
 msgid "GNU long options:\n"
 msgstr "GNU long options:\n"
 
-#: shell.c:1731
+#: shell.c:1732
 msgid "Shell options:\n"
 msgstr "Shell options:\n"
 
-#: shell.c:1732
+#: shell.c:1733
 msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n"
 msgstr "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n"
 
-#: shell.c:1747
+#: shell.c:1748
 #, c-format
 msgid "\t-%s or -o option\n"
 msgstr "\t-%s or -o option\n"
 
-#: shell.c:1753
+#: shell.c:1754
 #, c-format
 msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
 msgstr ""
 "Type ‘\e[1m%s -c “\e[1mhelp set\e[0m”\e[0m’ for more information about shell "
 "options.\n"
 
-#: shell.c:1754
+#: shell.c:1755
 #, c-format
 msgid "Type `%s -c help' for more information about shell builtin commands.\n"
 msgstr ""
 "Type ‘\e[1m%s -c help\e[0m’ for more information about shell builtin commands.\n"
 
-#: shell.c:1755
+#: shell.c:1756
 msgid "Use the `bashbug' command to report bugs.\n"
 msgstr "Use the ‘\e[1mbashbug\e[0m’ command to report bugs.\n"
 
-#: sig.c:485
+#: sig.c:490
 #, c-format
 msgid "sigprocmask: %d: invalid operation"
 msgstr "sigprocmask: %d: invalid operation"
 
-#: subst.c:1011
+#: subst.c:1046
 #, c-format
 msgid "bad substitution: no closing `%s' in %s"
 msgstr "bad substitution: no closing ‘\e[1m%s\e[0m’ in %s"
 
-#: subst.c:2020
+#: subst.c:2053
 #, c-format
 msgid "%s: cannot assign list to array member"
 msgstr "%s: cannot assign list to array member"
 
-#: subst.c:3516 subst.c:3532
+#: subst.c:3880 subst.c:3896
 msgid "cannot make pipe for process substitution"
 msgstr "cannot make pipe for process substitution"
 
-#: subst.c:3563
+#: subst.c:3927
 msgid "cannot make child for process substitution"
 msgstr "cannot make child for process substitution"
 
-#: subst.c:3608
+#: subst.c:3972
 #, c-format
 msgid "cannot open named pipe %s for reading"
 msgstr "cannot open named pipe %s for reading"
 
-#: subst.c:3610
+#: subst.c:3974
 #, c-format
 msgid "cannot open named pipe %s for writing"
 msgstr "cannot open named pipe %s for writing"
 
-#: subst.c:3618
+#: subst.c:3982
 #, c-format
 msgid "cannout reset nodelay mode for fd %d"
 msgstr "cannout reset nodelay mode for fd %d"
 
-#: subst.c:3628
+#: subst.c:3992
 #, c-format
 msgid "cannot duplicate named pipe %s as fd %d"
 msgstr "cannot duplicate named pipe %s as fd %d"
 
-#: subst.c:3803
+#: subst.c:4167
 msgid "cannot make pipe for command substitution"
 msgstr "cannot make pipe for command substitution"
 
-#: subst.c:3832
+#: subst.c:4196
 msgid "cannot make child for command substitution"
 msgstr "cannot make child for command substitution"
 
-#: subst.c:3849
+#: subst.c:4213
 msgid "command_substitute: cannot duplicate pipe as fd 1"
 msgstr "command_substitute: cannot duplicate pipe as fd 1"
 
-#: subst.c:4284
+#: subst.c:4671
 #, c-format
 msgid "%s: parameter null or not set"
 msgstr "%s: parameter null or not set"
 
-#: subst.c:4529
+#: subst.c:4937
 #, c-format
 msgid "%s: substring expression < 0"
 msgstr "%s: substring expression < 0"
 
-#: subst.c:5209
+#: subst.c:5667
 #, c-format
 msgid "%s: bad substitution"
 msgstr "%s: bad substitution"
 
-#: subst.c:5283
+#: subst.c:5741
 #, c-format
 msgid "$%s: cannot assign in this way"
 msgstr "$%s: cannot assign in this way"
 
-#: subst.c:6652
+#: subst.c:7110
 #, c-format
 msgid "no match: %s"
 msgstr "no match: %s"
@@ -1462,43 +1457,43 @@ msgstr ""
 msgid "trap_handler: bad signal %d"
 msgstr "trap_handler: bad signal %d"
 
-#: variables.c:310
+#: variables.c:314
 #, c-format
 msgid "error importing function definition for `%s'"
 msgstr "error importing function definition for ‘\e[1m%s\e[0m’"
 
-#: variables.c:670
+#: variables.c:674
 #, c-format
 msgid "shell level (%d) too high, resetting to 1"
 msgstr "shell level (%d) too high, resetting to 1"
 
-#: variables.c:1610
+#: variables.c:1617
 msgid "make_local_variable: no function context at current scope"
 msgstr "make_local_variable: no function context at current scope"
 
-#: variables.c:2709
+#: variables.c:2724
 msgid "all_local_variables: no function context at current scope"
 msgstr "all_local_variables: no function context at current scope"
 
-#: variables.c:2923 variables.c:2932
+#: variables.c:2938 variables.c:2947
 #, c-format
 msgid "invalid character %d in exportstr for %s"
 msgstr "invalid character %d in exportstr for %s"
 
-#: variables.c:2938
+#: variables.c:2953
 #, c-format
 msgid "no `=' in exportstr for %s"
 msgstr "no ‘\e[1m=\e[0m’ in exportstr for %s"
 
-#: variables.c:3363
+#: variables.c:3378
 msgid "pop_var_context: head of shell_variables not a function context"
 msgstr "pop_var_context: head of shell_variables not a function context"
 
-#: variables.c:3376
+#: variables.c:3391
 msgid "pop_var_context: no global_variables context"
 msgstr "pop_var_context: no global_variables context"
 
-#: variables.c:3442
+#: variables.c:3457
 msgid "pop_scope: head of shell_variables not a temporary environment scope"
 msgstr "pop_scope: head of shell_variables not a temporary environment scope"
 
@@ -3400,499 +3395,503 @@ msgid "The command ARG is to be read and executed when the shell receives"
 msgstr "The command ARG is to be read and executed when the shell receives"
 
 #: builtins.c:1000
-msgid "signal(s) SIGNAL_SPEC.  If ARG is absent all specified signals are"
+#, fuzzy
+msgid "signal(s) SIGNAL_SPEC.  If ARG is absent (and a single SIGNAL_SPEC"
 msgstr "signal(s) SIGNAL_SPEC.  If ARG is absent all specified signals are"
 
 #: builtins.c:1001
-msgid "reset to their original values.  If ARG is the null string each"
-msgstr "reset to their original values.  If ARG is the null string each"
+msgid "is supplied) or `-', each specified signal is reset to its original"
+msgstr ""
 
 #: builtins.c:1002
-msgid "SIGNAL_SPEC is ignored by the shell and by the commands it invokes."
-msgstr "SIGNAL_SPEC is ignored by the shell and by the commands it invokes."
+msgid "value.  If ARG is the null string each SIGNAL_SPEC is ignored by the"
+msgstr ""
 
 #: builtins.c:1003
-msgid "If a SIGNAL_SPEC is EXIT (0) the command ARG is executed on exit from"
-msgstr "If a SIGNAL_SPEC is EXIT (0) the command ARG is executed on exit from"
+msgid "shell and by the commands it invokes.  If a SIGNAL_SPEC is EXIT (0)"
+msgstr ""
 
 #: builtins.c:1004
-msgid "the shell.  If a SIGNAL_SPEC is DEBUG, ARG is executed after every"
-msgstr "the shell.  If a SIGNAL_SPEC is DEBUG, ARG is executed after every"
+msgid "the command ARG is executed on exit from the shell.  If a SIGNAL_SPEC"
+msgstr ""
 
 #: builtins.c:1005
-msgid "command.  If ARG is `-p' then the trap commands associated with"
-msgstr "command.  If ARG is ‘\e[1m-p\e[0m’ then the trap commands associated with"
+msgid ""
+"is DEBUG, ARG is executed after every simple command.  If the`-p' option"
+msgstr ""
 
 #: builtins.c:1006
-msgid "each SIGNAL_SPEC are displayed.  If no arguments are supplied or if"
-msgstr "each SIGNAL_SPEC are displayed.  If no arguments are supplied or if"
+#, fuzzy
+msgid "is supplied then the trap commands associated with each SIGNAL_SPEC are"
+msgstr "command.  If ARG is ‘\e[1m-p\e[0m’ then the trap commands associated with"
 
 #: builtins.c:1007
-msgid "only `-p' is given, trap prints the list of commands associated with"
-msgstr ""
-"only ‘\e[1m-p\e[0m’ is given, trap prints the list of commands associated with"
+#, fuzzy
+msgid "displayed.  If no arguments are supplied or if only `-p' is given, trap"
+msgstr "each SIGNAL_SPEC are displayed.  If no arguments are supplied or if"
 
 #: builtins.c:1008
+#, fuzzy
 msgid ""
-"each signal number.  Each SIGNAL_SPEC is either a signal name in <signal.h>"
+"prints the list of commands associated with each signal.  Each SIGNAL_SPEC"
 msgstr ""
-"each signal number.  Each SIGNAL_SPEC is either a signal name in <signal.h>"
+"only ‘\e[1m-p\e[0m’ is given, trap prints the list of commands associated with"
 
 #: builtins.c:1009
-msgid "or a signal number.  `trap -l' prints a list of signal names and their"
+msgid "is either a signal name in <signal.h> or a signal number.  Signal names"
 msgstr ""
-"or a signal number.  ‘\e[1mtrap -l\e[0m’ prints a list of signal names and their"
 
 #: builtins.c:1010
-msgid "corresponding numbers.  Note that a signal can be sent to the shell"
-msgstr "corresponding numbers.  Note that a signal can be sent to the shell"
+msgid "are case insensitive and the SIG prefix is optional.  `trap -l' prints"
+msgstr ""
 
 #: builtins.c:1011
-msgid "with \"kill -signal $$\"."
-msgstr "with “\e[1mkill -signal $$\e[0m”."
+msgid "a list of signal names and their corresponding numbers.  Note that a"
+msgstr ""
 
-#: builtins.c:1017
+#: builtins.c:1012
+msgid "signal can be sent to the shell with \"kill -signal $$\"."
+msgstr ""
+
+#: builtins.c:1018
 msgid "For each NAME, indicate how it would be interpreted if used as a"
 msgstr "For each NAME, indicate how it would be interpreted if used as a"
 
-#: builtins.c:1018
+#: builtins.c:1019
 msgid "command name."
 msgstr "command name."
 
-#: builtins.c:1020
+#: builtins.c:1021
 msgid "If the -t option is used, `type' outputs a single word which is one of"
 msgstr ""
 "If the -t option is used, ‘\e[1mtype\e[0m’ outputs a single word which is one of"
 
-#: builtins.c:1021
+#: builtins.c:1022
 msgid "`alias', `keyword', `function', `builtin', `file' or `', if NAME is an"
 msgstr ""
 "‘\e[1malias\e[0m’, ‘\e[1mkeyword\e[0m’, ‘\e[1mfunction\e[0m’, ‘\e[1mbuiltin\e[0m’, ‘\e[1mfile\e"
 "[0m’ or ‘\e[1m\e[0m’, if NAME is an"
 
-#: builtins.c:1022
+#: builtins.c:1023
 msgid "alias, shell reserved word, shell function, shell builtin, disk file,"
 msgstr "alias, shell reserved word, shell function, shell builtin, disk file,"
 
-#: builtins.c:1023
+#: builtins.c:1024
 msgid "or unfound, respectively."
 msgstr "or unfound, respectively."
 
-#: builtins.c:1025
+#: builtins.c:1026
 msgid "If the -p flag is used, `type' either returns the name of the disk"
 msgstr ""
 "If the -p flag is used, ‘\e[1mtype\e[0m’ either returns the name of the disk"
 
-#: builtins.c:1026
+#: builtins.c:1027
 msgid "file that would be executed, or nothing if `type -t NAME' would not"
 msgstr ""
 "file that would be executed, or nothing if ‘\e[1mtype -t NAME\e[0m’ would not"
 
-#: builtins.c:1027
+#: builtins.c:1028
 msgid "return `file'."
 msgstr "return ‘\e[1mfile\e[0m’."
 
-#: builtins.c:1029
+#: builtins.c:1030
 msgid "If the -a flag is used, `type' displays all of the places that contain"
 msgstr ""
 "If the -a flag is used, ‘\e[1mtype\e[0m’ displays all of the places that contain"
 
-#: builtins.c:1030
+#: builtins.c:1031
 msgid "an executable named `file'.  This includes aliases, builtins, and"
 msgstr ""
 "an executable named ‘\e[1mfile\e[0m’.  This includes aliases, builtins, and"
 
-#: builtins.c:1031
+#: builtins.c:1032
 msgid "functions, if and only if the -p flag is not also used."
 msgstr "functions, if and only if the -p flag is not also used."
 
-#: builtins.c:1033
+#: builtins.c:1034
 msgid "The -f flag suppresses shell function lookup."
 msgstr "The -f flag suppresses shell function lookup."
 
-#: builtins.c:1035
+#: builtins.c:1036
 msgid "The -P flag forces a PATH search for each NAME, even if it is an alias,"
 msgstr ""
 "The -P flag forces a PATH search for each NAME, even if it is an alias,"
 
-#: builtins.c:1036
+#: builtins.c:1037
 msgid "builtin, or function, and returns the name of the disk file that would"
 msgstr "builtin, or function, and returns the name of the disk file that would"
 
-#: builtins.c:1037
+#: builtins.c:1038
 msgid "be executed."
 msgstr "be executed."
 
-#: builtins.c:1044
+#: builtins.c:1045
 msgid "Ulimit provides control over the resources available to processes"
 msgstr "Ulimit provides control over the resources available to processes"
 
-#: builtins.c:1045
+#: builtins.c:1046
 msgid "started by the shell, on systems that allow such control.  If an"
 msgstr "started by the shell, on systems that allow such control.  If an"
 
-#: builtins.c:1046
+#: builtins.c:1047
 msgid "option is given, it is interpreted as follows:"
 msgstr "option is given, it is interpreted as follows:"
 
-#: builtins.c:1048
+#: builtins.c:1049
 msgid "    -S\tuse the `soft' resource limit"
 msgstr "    -S\tuse the ‘\e[1msoft\e[0m’ resource limit"
 
-#: builtins.c:1049
+#: builtins.c:1050
 msgid "    -H\tuse the `hard' resource limit"
 msgstr "    -H\tuse the ‘\e[1mhard\e[0m’ resource limit"
 
-#: builtins.c:1050
+#: builtins.c:1051
 msgid "    -a\tall current limits are reported"
 msgstr "    -a\tall current limits are reported"
 
-#: builtins.c:1051
+#: builtins.c:1052
 msgid "    -c\tthe maximum size of core files created"
 msgstr "    -c\tthe maximum size of core files created"
 
-#: builtins.c:1052
+#: builtins.c:1053
 msgid "    -d\tthe maximum size of a process's data segment"
 msgstr "    -d\tthe maximum size of a process's data segment"
 
-#: builtins.c:1053
+#: builtins.c:1054
 msgid "    -f\tthe maximum size of files created by the shell"
 msgstr "    -f\tthe maximum size of files created by the shell"
 
-#: builtins.c:1054
+#: builtins.c:1055
 msgid "    -l\tthe maximum size a process may lock into memory"
 msgstr "    -l\tthe maximum size a process may lock into memory"
 
-#: builtins.c:1055
+#: builtins.c:1056
 msgid "    -m\tthe maximum resident set size"
 msgstr "    -m\tthe maximum resident set size"
 
-#: builtins.c:1056
+#: builtins.c:1057
 msgid "    -n\tthe maximum number of open file descriptors"
 msgstr "    -n\tthe maximum number of open file descriptors"
 
-#: builtins.c:1057
+#: builtins.c:1058
 msgid "    -p\tthe pipe buffer size"
 msgstr "    -p\tthe pipe buffer size"
 
-#: builtins.c:1058
+#: builtins.c:1059
 msgid "    -s\tthe maximum stack size"
 msgstr "    -s\tthe maximum stack size"
 
-#: builtins.c:1059
+#: builtins.c:1060
 msgid "    -t\tthe maximum amount of cpu time in seconds"
 msgstr "    -t\tthe maximum amount of cpu time in seconds"
 
-#: builtins.c:1060
+#: builtins.c:1061
 msgid "    -u\tthe maximum number of user processes"
 msgstr "    -u\tthe maximum number of user processes"
 
-#: builtins.c:1061
+#: builtins.c:1062
 msgid "    -v\tthe size of virtual memory"
 msgstr "    -v\tthe size of virtual memory"
 
-#: builtins.c:1063
+#: builtins.c:1064
 msgid "If LIMIT is given, it is the new value of the specified resource;"
 msgstr "If LIMIT is given, it is the new value of the specified resource;"
 
-#: builtins.c:1064
+#: builtins.c:1065
 msgid "the special LIMIT values `soft', `hard', and `unlimited' stand for"
 msgstr ""
 "the special LIMIT values ‘\e[1msoft\e[0m’, ‘\e[1mhard\e[0m’, and ‘\e[1munlimited\e[0m’ "
 "stand for"
 
-#: builtins.c:1065
+#: builtins.c:1066
 msgid ""
 "the current soft limit, the current hard limit, and no limit, respectively."
 msgstr ""
 "the current soft limit, the current hard limit, and no limit, respectively."
 
-#: builtins.c:1066
+#: builtins.c:1067
 msgid "Otherwise, the current value of the specified resource is printed."
 msgstr "Otherwise, the current value of the specified resource is printed."
 
-#: builtins.c:1067
+#: builtins.c:1068
 msgid "If no option is given, then -f is assumed.  Values are in 1024-byte"
 msgstr "If no option is given, then -f is assumed.  Values are in 1024-byte"
 
-#: builtins.c:1068
+#: builtins.c:1069
 msgid "increments, except for -t, which is in seconds, -p, which is in"
 msgstr "increments, except for -t, which is in seconds, -p, which is in"
 
-#: builtins.c:1069
+#: builtins.c:1070
 msgid "increments of 512 bytes, and -u, which is an unscaled number of"
 msgstr "increments of 512 bytes, and -u, which is an unscaled number of"
 
-#: builtins.c:1070
+#: builtins.c:1071
 msgid "processes."
 msgstr "processes."
 
-#: builtins.c:1077
+#: builtins.c:1078
 msgid "The user file-creation mask is set to MODE.  If MODE is omitted, or if"
 msgstr "The user file-creation mask is set to MODE.  If MODE is omitted, or if"
 
-#: builtins.c:1078
+#: builtins.c:1079
 msgid "`-S' is supplied, the current value of the mask is printed.  The `-S'"
 msgstr ""
 "‘\e[1m-S\e[0m’ is supplied, the current value of the mask is printed.  The ‘\e[1m-S\e"
 "[0m’"
 
-#: builtins.c:1079
+#: builtins.c:1080
 msgid "option makes the output symbolic; otherwise an octal number is output."
 msgstr "option makes the output symbolic; otherwise an octal number is output."
 
-#: builtins.c:1080
+#: builtins.c:1081
 msgid "If `-p' is supplied, and MODE is omitted, the output is in a form"
 msgstr ""
 "If ‘\e[1m-p\e[0m’ is supplied, and MODE is omitted, the output is in a form"
 
-#: builtins.c:1081
+#: builtins.c:1082
 msgid "that may be used as input.  If MODE begins with a digit, it is"
 msgstr "that may be used as input.  If MODE begins with a digit, it is"
 
-#: builtins.c:1082
+#: builtins.c:1083
 msgid "interpreted as an octal number, otherwise it is a symbolic mode string"
 msgstr "interpreted as an octal number, otherwise it is a symbolic mode string"
 
-#: builtins.c:1083
+#: builtins.c:1084
 msgid "like that accepted by chmod(1)."
 msgstr "like that accepted by chmod(1)."
 
-#: builtins.c:1090 builtins.c:1102
+#: builtins.c:1091 builtins.c:1103
 msgid "Wait for the specified process and report its termination status.  If"
 msgstr "Wait for the specified process and report its termination status.  If"
 
-#: builtins.c:1091 builtins.c:1103
+#: builtins.c:1092 builtins.c:1104
 msgid "N is not given, all currently active child processes are waited for,"
 msgstr "N is not given, all currently active child processes are waited for,"
 
-#: builtins.c:1092
+#: builtins.c:1093
 msgid "and the return code is zero.  N may be a process ID or a job"
 msgstr "and the return code is zero.  N may be a process ID or a job"
 
-#: builtins.c:1093
+#: builtins.c:1094
 msgid "specification; if a job spec is given, all processes in the job's"
 msgstr "specification; if a job spec is given, all processes in the job's"
 
-#: builtins.c:1094
+#: builtins.c:1095
 msgid "pipeline are waited for."
 msgstr "pipeline are waited for."
 
-#: builtins.c:1104
+#: builtins.c:1105
 msgid "and the return code is zero.  N is a process ID; if it is not given,"
 msgstr "and the return code is zero.  N is a process ID; if it is not given,"
 
-#: builtins.c:1105
+#: builtins.c:1106
 msgid "all child processes of the shell are waited for."
 msgstr "all child processes of the shell are waited for."
 
-#: builtins.c:1112
+#: builtins.c:1113
 msgid "The `for' loop executes a sequence of commands for each member in a"
 msgstr ""
 "The ‘\e[1mfor\e[0m’ loop executes a sequence of commands for each member in a"
 
-#: builtins.c:1113
+#: builtins.c:1114
 msgid "list of items.  If `in WORDS ...;' is not present, then `in \"$@\"' is"
 msgstr ""
 "list of items.  If ‘\e[1min WORDS ...;\e[0m’ is not present, then ‘\e[1min “\e[1m$@\e"
 "[0m”\e[0m’ is"
 
-#: builtins.c:1114
+#: builtins.c:1115
 msgid "assumed.  For each element in WORDS, NAME is set to that element, and"
 msgstr "assumed.  For each element in WORDS, NAME is set to that element, and"
 
-#: builtins.c:1115
+#: builtins.c:1116
 msgid "the COMMANDS are executed."
 msgstr "the COMMANDS are executed."
 
-#: builtins.c:1121
+#: builtins.c:1122
 msgid "Equivalent to"
 msgstr "Equivalent to"
 
-#: builtins.c:1122
+#: builtins.c:1123
 msgid "\t(( EXP1 ))"
 msgstr "\t(( EXP1 ))"
 
-#: builtins.c:1123
+#: builtins.c:1124
 msgid "\twhile (( EXP2 )); do"
 msgstr "\twhile (( EXP2 )); do"
 
-#: builtins.c:1124
+#: builtins.c:1125
 msgid "\t\tCOMMANDS"
 msgstr "\t\tCOMMANDS"
 
-#: builtins.c:1125
+#: builtins.c:1126
 msgid "\t\t(( EXP3 ))"
 msgstr "\t\t(( EXP3 ))"
 
-#: builtins.c:1126
+#: builtins.c:1127
 msgid "\tdone"
 msgstr "\tdone"
 
-#: builtins.c:1127
+#: builtins.c:1128
 msgid "EXP1, EXP2, and EXP3 are arithmetic expressions.  If any expression is"
 msgstr "EXP1, EXP2, and EXP3 are arithmetic expressions.  If any expression is"
 
-#: builtins.c:1128
+#: builtins.c:1129
 msgid "omitted, it behaves as if it evaluates to 1."
 msgstr "omitted, it behaves as if it evaluates to 1."
 
-#: builtins.c:1134
+#: builtins.c:1135
 msgid "The WORDS are expanded, generating a list of words.  The"
 msgstr "The WORDS are expanded, generating a list of words.  The"
 
-#: builtins.c:1135
+#: builtins.c:1136
 msgid "set of expanded words is printed on the standard error, each"
 msgstr "set of expanded words is printed on the standard error, each"
 
-#: builtins.c:1136
+#: builtins.c:1137
 msgid "preceded by a number.  If `in WORDS' is not present, `in \"$@\"'"
 msgstr ""
 "preceded by a number.  If ‘\e[1min WORDS\e[0m’ is not present, ‘\e[1min “\e[1m$@\e"
 "[0m”\e[0m’"
 
-#: builtins.c:1137
+#: builtins.c:1138
 msgid "is assumed.  The PS3 prompt is then displayed and a line read"
 msgstr "is assumed.  The PS3 prompt is then displayed and a line read"
 
-#: builtins.c:1138
+#: builtins.c:1139
 msgid "from the standard input.  If the line consists of the number"
 msgstr "from the standard input.  If the line consists of the number"
 
-#: builtins.c:1139
+#: builtins.c:1140
 msgid "corresponding to one of the displayed words, then NAME is set"
 msgstr "corresponding to one of the displayed words, then NAME is set"
 
-#: builtins.c:1140
+#: builtins.c:1141
 msgid "to that word.  If the line is empty, WORDS and the prompt are"
 msgstr "to that word.  If the line is empty, WORDS and the prompt are"
 
-#: builtins.c:1141
+#: builtins.c:1142
 msgid "redisplayed.  If EOF is read, the command completes.  Any other"
 msgstr "redisplayed.  If EOF is read, the command completes.  Any other"
 
-#: builtins.c:1142
+#: builtins.c:1143
 msgid "value read causes NAME to be set to null.  The line read is saved"
 msgstr "value read causes NAME to be set to null.  The line read is saved"
 
-#: builtins.c:1143
+#: builtins.c:1144
 msgid "in the variable REPLY.  COMMANDS are executed after each selection"
 msgstr "in the variable REPLY.  COMMANDS are executed after each selection"
 
-#: builtins.c:1144
+#: builtins.c:1145
 msgid "until a break command is executed."
 msgstr "until a break command is executed."
 
-#: builtins.c:1150
+#: builtins.c:1151
 msgid "Execute PIPELINE and print a summary of the real time, user CPU time,"
 msgstr "Execute PIPELINE and print a summary of the real time, user CPU time,"
 
-#: builtins.c:1151
+#: builtins.c:1152
 msgid "and system CPU time spent executing PIPELINE when it terminates."
 msgstr "and system CPU time spent executing PIPELINE when it terminates."
 
-#: builtins.c:1152
+#: builtins.c:1153
 msgid "The return status is the return status of PIPELINE.  The `-p' option"
 msgstr ""
 "The return status is the return status of PIPELINE.  The ‘\e[1m-p\e[0m’ option"
 
-#: builtins.c:1153
+#: builtins.c:1154
 msgid "prints the timing summary in a slightly different format.  This uses"
 msgstr "prints the timing summary in a slightly different format.  This uses"
 
-#: builtins.c:1154
+#: builtins.c:1155
 msgid "the value of the TIMEFORMAT variable as the output format."
 msgstr "the value of the TIMEFORMAT variable as the output format."
 
-#: builtins.c:1160
+#: builtins.c:1161
 msgid "Selectively execute COMMANDS based upon WORD matching PATTERN.  The"
 msgstr "Selectively execute COMMANDS based upon WORD matching PATTERN.  The"
 
-#: builtins.c:1161
+#: builtins.c:1162
 msgid "`|' is used to separate multiple patterns."
 msgstr "‘\e[1m|\e[0m’ is used to separate multiple patterns."
 
-#: builtins.c:1167
+#: builtins.c:1168
 msgid ""
 "The if COMMANDS are executed.  If the exit status is zero, then the then"
 msgstr ""
 "The if COMMANDS are executed.  If the exit status is zero, then the then"
 
-#: builtins.c:1168
+#: builtins.c:1169
 msgid ""
 "COMMANDS are executed.  Otherwise, each of the elif COMMANDS are executed"
 msgstr ""
 "COMMANDS are executed.  Otherwise, each of the elif COMMANDS are executed"
 
-#: builtins.c:1169
+#: builtins.c:1170
 msgid ""
 "in turn, and if the exit status is zero, the corresponding then COMMANDS"
 msgstr ""
 "in turn, and if the exit status is zero, the corresponding then COMMANDS"
 
-#: builtins.c:1170
+#: builtins.c:1171
 msgid ""
 "are executed and the if command completes.  Otherwise, the else COMMANDS"
 msgstr ""
 "are executed and the if command completes.  Otherwise, the else COMMANDS"
 
-#: builtins.c:1171
+#: builtins.c:1172
 msgid ""
 "are executed, if present.  The exit status is the exit status of the last"
 msgstr ""
 "are executed, if present.  The exit status is the exit status of the last"
 
-#: builtins.c:1172
+#: builtins.c:1173
 msgid "command executed, or zero if no condition tested true."
 msgstr "command executed, or zero if no condition tested true."
 
-#: builtins.c:1178 builtins.c:1185
+#: builtins.c:1179 builtins.c:1186
 msgid "Expand and execute COMMANDS as long as the final command in the"
 msgstr "Expand and execute COMMANDS as long as the final command in the"
 
-#: builtins.c:1179
+#: builtins.c:1180
 msgid "`while' COMMANDS has an exit status of zero."
 msgstr "‘\e[1mwhile\e[0m’ COMMANDS has an exit status of zero."
 
-#: builtins.c:1186
+#: builtins.c:1187
 msgid "`until' COMMANDS has an exit status which is not zero."
 msgstr "‘\e[1muntil\e[0m’ COMMANDS has an exit status which is not zero."
 
-#: builtins.c:1192
+#: builtins.c:1193
 msgid "Create a simple command invoked by NAME which runs COMMANDS."
 msgstr "Create a simple command invoked by NAME which runs COMMANDS."
 
-#: builtins.c:1193
+#: builtins.c:1194
 msgid "Arguments on the command line along with NAME are passed to the"
 msgstr "Arguments on the command line along with NAME are passed to the"
 
-#: builtins.c:1194
+#: builtins.c:1195
 msgid "function as $0 .. $n."
 msgstr "function as $0 .. $n."
 
-#: builtins.c:1200
+#: builtins.c:1201
 msgid "Run a set of commands in a group.  This is one way to redirect an"
 msgstr "Run a set of commands in a group.  This is one way to redirect an"
 
-#: builtins.c:1201
+#: builtins.c:1202
 msgid "entire set of commands."
 msgstr "entire set of commands."
 
-#: builtins.c:1207
+#: builtins.c:1208
 msgid "This is similar to the `fg' command.  Resume a stopped or background"
 msgstr ""
 "This is similar to the ‘\e[1mfg\e[0m’ command.  Resume a stopped or background"
 
-#: builtins.c:1208
-msgid "job.  If you specifiy DIGITS, then that job is used.  If you specify"
-msgstr "job.  If you specifiy DIGITS, then that job is used.  If you specify"
-
 #: builtins.c:1209
-msgid "WORD, then the job whose name begins with WORD is used.  Following the"
-msgstr "WORD, then the job whose name begins with WORD is used.  Following the"
+msgid "job specified by %JOBSPEC.  Following the job specification with a `&'"
+msgstr ""
 
 #: builtins.c:1210
-msgid "job specification with a `&' places the job in the background."
+#, fuzzy
+msgid "places the job in the background."
 msgstr "job specification with a ‘\e[1m&\e[0m’ places the job in the background."
 
 #: builtins.c:1216
@@ -3962,388 +3961,436 @@ msgid "BASH_VERSION    Version information for this Bash."
 msgstr "BASH_VERSION    Version information for this Bash."
 
 #: builtins.c:1242
-msgid "CDPATH          A colon separated list of directories to search"
+#, fuzzy
+msgid "CDPATH          A colon-separated list of directories to search"
 msgstr "CDPATH          A colon separated list of directories to search"
 
 #: builtins.c:1243
-msgid "\t\twhen the argument to `cd' is not found in the current"
-msgstr "\t\twhen the argument to ‘\e[1mcd\e[0m’ is not found in the current"
+msgid "\t\tfor directries given as arguments to `cd'."
+msgstr ""
 
 #: builtins.c:1244
-msgid "\t\tdirectory."
-msgstr "\t\tdirectory."
-
-#: builtins.c:1245
 msgid "GLOBIGNORE\tA colon-separated list of patterns describing filenames to"
 msgstr "GLOBIGNORE\tA colon-separated list of patterns describing filenames to"
 
-#: builtins.c:1246
+#: builtins.c:1245
 msgid "\t\tbe ignored by pathname expansion."
 msgstr "\t\tbe ignored by pathname expansion."
 
-#: builtins.c:1248
+#: builtins.c:1247
 msgid ""
 "HISTFILE        The name of the file where your command history is stored."
 msgstr ""
 "HISTFILE        The name of the file where your command history is stored."
 
-#: builtins.c:1249
+#: builtins.c:1248
 msgid "HISTFILESIZE    The maximum number of lines this file can contain."
 msgstr "HISTFILESIZE    The maximum number of lines this file can contain."
 
-#: builtins.c:1250
+#: builtins.c:1249
 msgid "HISTSIZE        The maximum number of history lines that a running"
 msgstr "HISTSIZE        The maximum number of history lines that a running"
 
-#: builtins.c:1251
+#: builtins.c:1250
 msgid "\t\tshell can access."
 msgstr "\t\tshell can access."
 
-#: builtins.c:1253
+#: builtins.c:1252
 msgid "HOME            The complete pathname to your login directory."
 msgstr "HOME            The complete pathname to your login directory."
 
-#: builtins.c:1254
+#: builtins.c:1253
 msgid "HOSTNAME\tThe name of the current host."
 msgstr "HOSTNAME\tThe name of the current host."
 
-#: builtins.c:1255
+#: builtins.c:1254
 msgid "HOSTTYPE        The type of CPU this version of Bash is running under."
 msgstr "HOSTTYPE        The type of CPU this version of Bash is running under."
 
-#: builtins.c:1256
+#: builtins.c:1255
 msgid "IGNOREEOF       Controls the action of the shell on receipt of an EOF"
 msgstr "IGNOREEOF       Controls the action of the shell on receipt of an EOF"
 
-#: builtins.c:1257
+#: builtins.c:1256
 msgid "\t\tcharacter as the sole input.  If set, then the value"
 msgstr "\t\tcharacter as the sole input.  If set, then the value"
 
-#: builtins.c:1258
+#: builtins.c:1257
 msgid "\t\tof it is the number of EOF characters that can be seen"
 msgstr "\t\tof it is the number of EOF characters that can be seen"
 
-#: builtins.c:1259
+#: builtins.c:1258
 msgid "\t\tin a row on an empty line before the shell will exit"
 msgstr "\t\tin a row on an empty line before the shell will exit"
 
-#: builtins.c:1260
+#: builtins.c:1259
 msgid "\t\t(default 10).  When unset, EOF signifies the end of input."
 msgstr "\t\t(default 10).  When unset, EOF signifies the end of input."
 
-#: builtins.c:1261
+#: builtins.c:1260
 msgid "MACHTYPE\tA string describing the current system Bash is running on."
 msgstr "MACHTYPE\tA string describing the current system Bash is running on."
 
-#: builtins.c:1262
+#: builtins.c:1261
 msgid "MAILCHECK\tHow often, in seconds, Bash checks for new mail."
 msgstr "MAILCHECK\tHow often, in seconds, Bash checks for new mail."
 
-#: builtins.c:1263
+#: builtins.c:1262
 msgid "MAILPATH\tA colon-separated list of filenames which Bash checks"
 msgstr "MAILPATH\tA colon-separated list of filenames which Bash checks"
 
-#: builtins.c:1264
+#: builtins.c:1263
 msgid "\t\tfor new mail."
 msgstr "\t\tfor new mail."
 
-#: builtins.c:1265
+#: builtins.c:1264
 msgid "OSTYPE\t\tThe version of Unix this version of Bash is running on."
 msgstr "OSTYPE\t\tThe version of Unix this version of Bash is running on."
 
-#: builtins.c:1266
+#: builtins.c:1265
 msgid "PATH            A colon-separated list of directories to search when"
 msgstr "PATH            A colon-separated list of directories to search when"
 
-#: builtins.c:1267
+#: builtins.c:1266
 msgid "\t\tlooking for commands."
 msgstr "\t\tlooking for commands."
 
-#: builtins.c:1268
+#: builtins.c:1267
 msgid "PROMPT_COMMAND  A command to be executed before the printing of each"
 msgstr "PROMPT_COMMAND  A command to be executed before the printing of each"
 
-#: builtins.c:1269
+#: builtins.c:1268
 msgid "\t\tprimary prompt."
 msgstr "\t\tprimary prompt."
 
-#: builtins.c:1270
+#: builtins.c:1269
 msgid "PS1             The primary prompt string."
 msgstr "PS1             The primary prompt string."
 
-#: builtins.c:1271
+#: builtins.c:1270
 msgid "PS2             The secondary prompt string."
 msgstr "PS2             The secondary prompt string."
 
-#: builtins.c:1272
+#: builtins.c:1271
 msgid "PWD\t\tThe full pathname of the current directory."
 msgstr "PWD\t\tThe full pathname of the current directory."
 
-#: builtins.c:1273
+#: builtins.c:1272
 msgid "SHELLOPTS\tA colon-separated list of enabled shell options."
 msgstr "SHELLOPTS\tA colon-separated list of enabled shell options."
 
-#: builtins.c:1274
+#: builtins.c:1273
 msgid "TERM            The name of the current terminal type."
 msgstr "TERM            The name of the current terminal type."
 
-#: builtins.c:1275
+#: builtins.c:1274
 msgid "TIMEFORMAT\tThe output format for timing statistics displayed by the"
 msgstr "TIMEFORMAT\tThe output format for timing statistics displayed by the"
 
-#: builtins.c:1276
+#: builtins.c:1275
 msgid "\t\t`time' reserved word."
 msgstr "\t\t‘\e[1mtime\e[0m’ reserved word."
 
-#: builtins.c:1277
+#: builtins.c:1276
 msgid "auto_resume     Non-null means a command word appearing on a line by"
 msgstr "auto_resume     Non-null means a command word appearing on a line by"
 
-#: builtins.c:1278
+#: builtins.c:1277
 msgid "\t\titself is first looked for in the list of currently"
 msgstr "\t\titself is first looked for in the list of currently"
 
-#: builtins.c:1279
+#: builtins.c:1278
 msgid "\t\tstopped jobs.  If found there, that job is foregrounded."
 msgstr "\t\tstopped jobs.  If found there, that job is foregrounded."
 
-#: builtins.c:1280
+#: builtins.c:1279
 msgid "\t\tA value of `exact' means that the command word must"
 msgstr "\t\tA value of ‘\e[1mexact\e[0m’ means that the command word must"
 
-#: builtins.c:1281
+#: builtins.c:1280
 msgid "\t\texactly match a command in the list of stopped jobs.  A"
 msgstr "\t\texactly match a command in the list of stopped jobs.  A"
 
-#: builtins.c:1282
+#: builtins.c:1281
 msgid "\t\tvalue of `substring' means that the command word must"
 msgstr "\t\tvalue of ‘\e[1msubstring\e[0m’ means that the command word must"
 
-#: builtins.c:1283
+#: builtins.c:1282
 msgid "\t\tmatch a substring of the job.  Any other value means that"
 msgstr "\t\tmatch a substring of the job.  Any other value means that"
 
-#: builtins.c:1284
+#: builtins.c:1283
 msgid "\t\tthe command must be a prefix of a stopped job."
 msgstr "\t\tthe command must be a prefix of a stopped job."
 
-#: builtins.c:1287
+#: builtins.c:1286
 msgid "histchars       Characters controlling history expansion and quick"
 msgstr "histchars       Characters controlling history expansion and quick"
 
-#: builtins.c:1288
+#: builtins.c:1287
 msgid "\t\tsubstitution.  The first character is the history"
 msgstr "\t\tsubstitution.  The first character is the history"
 
-#: builtins.c:1289
+#: builtins.c:1288
 msgid "\t\tsubstitution character, usually `!'.  The second is"
 msgstr "\t\tsubstitution character, usually ‘\e[1m!\e[0m’.  The second is"
 
-#: builtins.c:1290
+#: builtins.c:1289
 msgid "\t\tthe `quick substitution' character, usually `^'.  The"
 msgstr "\t\tthe ‘\e[1mquick substitution\e[0m’ character, usually ‘\e[1m^\e[0m’.  The"
 
-#: builtins.c:1291
+#: builtins.c:1290
 msgid "\t\tthird is the `history comment' character, usually `#'."
 msgstr "\t\tthird is the ‘\e[1mhistory comment\e[0m’ character, usually ‘\e[1m#\e[0m’."
 
-#: builtins.c:1293
+#: builtins.c:1292
 msgid "HISTIGNORE\tA colon-separated list of patterns used to decide which"
 msgstr "HISTIGNORE\tA colon-separated list of patterns used to decide which"
 
-#: builtins.c:1294
+#: builtins.c:1293
 msgid "\t\tcommands should be saved on the history list."
 msgstr "\t\tcommands should be saved on the history list."
 
-#: builtins.c:1306
+#: builtins.c:1305
 msgid "+N\tRotates the stack so that the Nth directory (counting"
 msgstr "+N\tRotates the stack so that the Nth directory (counting"
 
-#: builtins.c:1307
+#: builtins.c:1306
 msgid "\tfrom the left of the list shown by `dirs', starting with"
 msgstr "\tfrom the left of the list shown by ‘\e[1mdirs\e[0m’, starting with"
 
-#: builtins.c:1308 builtins.c:1312
+#: builtins.c:1307 builtins.c:1311
 msgid "\tzero) is at the top."
 msgstr "\tzero) is at the top."
 
-#: builtins.c:1310
+#: builtins.c:1309
 msgid "-N\tRotates the stack so that the Nth directory (counting"
 msgstr "-N\tRotates the stack so that the Nth directory (counting"
 
-#: builtins.c:1311
+#: builtins.c:1310
 msgid "\tfrom the right of the list shown by `dirs', starting with"
 msgstr "\tfrom the right of the list shown by ‘\e[1mdirs\e[0m’, starting with"
 
-#: builtins.c:1314
+#: builtins.c:1313
 msgid "-n\tsuppress the normal change of directory when adding directories"
 msgstr "-n\tsuppress the normal change of directory when adding directories"
 
-#: builtins.c:1315
+#: builtins.c:1314
 msgid "\tto the stack, so only the stack is manipulated."
 msgstr "\tto the stack, so only the stack is manipulated."
 
-#: builtins.c:1317
+#: builtins.c:1316
 msgid "dir\tadds DIR to the directory stack at the top, making it the"
 msgstr "dir\tadds DIR to the directory stack at the top, making it the"
 
-#: builtins.c:1318
+#: builtins.c:1317
 msgid "\tnew current working directory."
 msgstr "\tnew current working directory."
 
-#: builtins.c:1332
+#: builtins.c:1331
 msgid "+N\tremoves the Nth entry counting from the left of the list"
 msgstr "+N\tremoves the Nth entry counting from the left of the list"
 
-#: builtins.c:1333
+#: builtins.c:1332
 msgid "\tshown by `dirs', starting with zero.  For example: `popd +0'"
 msgstr ""
 "\tshown by ‘\e[1mdirs\e[0m’, starting with zero.  For example: ‘\e[1mpopd +0\e[0m’"
 
-#: builtins.c:1334
+#: builtins.c:1333
 msgid "\tremoves the first directory, `popd +1' the second."
 msgstr "\tremoves the first directory, ‘\e[1mpopd +1\e[0m’ the second."
 
-#: builtins.c:1336
+#: builtins.c:1335
 msgid "-N\tremoves the Nth entry counting from the right of the list"
 msgstr "-N\tremoves the Nth entry counting from the right of the list"
 
-#: builtins.c:1337
+#: builtins.c:1336
 msgid "\tshown by `dirs', starting with zero.  For example: `popd -0'"
 msgstr ""
 "\tshown by ‘\e[1mdirs\e[0m’, starting with zero.  For example: ‘\e[1mpopd -0\e[0m’"
 
-#: builtins.c:1338
+#: builtins.c:1337
 msgid "\tremoves the last directory, `popd -1' the next to last."
 msgstr "\tremoves the last directory, ‘\e[1mpopd -1\e[0m’ the next to last."
 
-#: builtins.c:1340
+#: builtins.c:1339
 msgid "-n\tsuppress the normal change of directory when removing directories"
 msgstr "-n\tsuppress the normal change of directory when removing directories"
 
-#: builtins.c:1341
+#: builtins.c:1340
 msgid "\tfrom the stack, so only the stack is manipulated."
 msgstr "\tfrom the stack, so only the stack is manipulated."
 
-#: builtins.c:1363
+#: builtins.c:1362
 msgid "+N\tdisplays the Nth entry counting from the left of the list shown by"
 msgstr "+N\tdisplays the Nth entry counting from the left of the list shown by"
 
-#: builtins.c:1364 builtins.c:1367
+#: builtins.c:1363 builtins.c:1366
 msgid "\tdirs when invoked without options, starting with zero."
 msgstr "\tdirs when invoked without options, starting with zero."
 
-#: builtins.c:1366
+#: builtins.c:1365
 msgid "-N\tdisplays the Nth entry counting from the right of the list shown by"
 msgstr ""
 "-N\tdisplays the Nth entry counting from the right of the list shown by"
 
-#: builtins.c:1374
+#: builtins.c:1373
 msgid "Toggle the values of variables controlling optional behavior."
 msgstr "Toggle the values of variables controlling optional behavior."
 
-#: builtins.c:1375
+#: builtins.c:1374
 msgid "The -s flag means to enable (set) each OPTNAME; the -u flag"
 msgstr "The -s flag means to enable (set) each OPTNAME; the -u flag"
 
-#: builtins.c:1376
+#: builtins.c:1375
 msgid "unsets each OPTNAME.  The -q flag suppresses output; the exit"
 msgstr "unsets each OPTNAME.  The -q flag suppresses output; the exit"
 
-#: builtins.c:1377
+#: builtins.c:1376
 msgid "status indicates whether each OPTNAME is set or unset.  The -o"
 msgstr "status indicates whether each OPTNAME is set or unset.  The -o"
 
-#: builtins.c:1378
+#: builtins.c:1377
 msgid "option restricts the OPTNAMEs to those defined for use with"
 msgstr "option restricts the OPTNAMEs to those defined for use with"
 
-#: builtins.c:1379
+#: builtins.c:1378
 msgid "`set -o'.  With no options, or with the -p option, a list of all"
 msgstr "‘\e[1mset -o\e[0m’.  With no options, or with the -p option, a list of all"
 
-#: builtins.c:1380
+#: builtins.c:1379
 msgid "settable options is displayed, with an indication of whether or"
 msgstr "settable options is displayed, with an indication of whether or"
 
-#: builtins.c:1381
+#: builtins.c:1380
 msgid "not each is set."
 msgstr "not each is set."
 
-#: builtins.c:1387
+#: builtins.c:1386
 msgid "printf formats and prints ARGUMENTS under control of the FORMAT. FORMAT"
 msgstr ""
 "printf formats and prints ARGUMENTS under control of the FORMAT. FORMAT"
 
-#: builtins.c:1388
+#: builtins.c:1387
 msgid "is a character string which contains three types of objects: plain"
 msgstr "is a character string which contains three types of objects: plain"
 
-#: builtins.c:1389
+#: builtins.c:1388
 msgid ""
 "characters, which are simply copied to standard output, character escape"
 msgstr ""
 "characters, which are simply copied to standard output, character escape"
 
-#: builtins.c:1390
+#: builtins.c:1389
 msgid "sequences which are converted and copied to the standard output, and"
 msgstr "sequences which are converted and copied to the standard output, and"
 
-#: builtins.c:1391
+#: builtins.c:1390
 msgid ""
 "format specifications, each of which causes printing of the next successive"
 msgstr ""
 "format specifications, each of which causes printing of the next successive"
 
-#: builtins.c:1392
+#: builtins.c:1391
 msgid "argument.  In addition to the standard printf(1) formats, %b means to"
 msgstr "argument.  In addition to the standard printf(1) formats, %b means to"
 
-#: builtins.c:1393
+#: builtins.c:1392
 msgid "expand backslash escape sequences in the corresponding argument, and %q"
 msgstr ""
 "expand backslash escape sequences in the corresponding argument, and %q"
 
-#: builtins.c:1394
+#: builtins.c:1393
 msgid "means to quote the argument in a way that can be reused as shell input."
 msgstr ""
 "means to quote the argument in a way that can be reused as shell input."
 
-#: builtins.c:1401
+#: builtins.c:1400
 msgid "For each NAME, specify how arguments are to be completed."
 msgstr "For each NAME, specify how arguments are to be completed."
 
-#: builtins.c:1402
+#: builtins.c:1401
 msgid "If the -p option is supplied, or if no options are supplied, existing"
 msgstr "If the -p option is supplied, or if no options are supplied, existing"
 
-#: builtins.c:1403
+#: builtins.c:1402
 msgid "completion specifications are printed in a way that allows them to be"
 msgstr "completion specifications are printed in a way that allows them to be"
 
-#: builtins.c:1404
+#: builtins.c:1403
 msgid "reused as input.  The -r option removes a completion specification for"
 msgstr "reused as input.  The -r option removes a completion specification for"
 
-#: builtins.c:1405
+#: builtins.c:1404
 msgid "each NAME, or, if no NAMEs are supplied, all completion specifications."
 msgstr ""
 "each NAME, or, if no NAMEs are supplied, all completion specifications."
 
-#: builtins.c:1413
+#: builtins.c:1412
 msgid "Display the possible completions depending on the options.  Intended"
 msgstr "Display the possible completions depending on the options.  Intended"
 
-#: builtins.c:1414
+#: builtins.c:1413
 msgid ""
 "to be used from within a shell function generating possible completions."
 msgstr ""
 "to be used from within a shell function generating possible completions."
 
-#: builtins.c:1415
+#: builtins.c:1414
 msgid "If the optional WORD argument is supplied, matches against WORD are"
 msgstr "If the optional WORD argument is supplied, matches against WORD are"
 
-#: builtins.c:1416
+#: builtins.c:1415
 msgid "generated."
 msgstr "generated."
+
+#~ msgid "`%s': invalid alias name"
+#~ msgstr "‘\e[1m%s\e[0m’: invalid alias name"
+
+#~ msgid "reset to their original values.  If ARG is the null string each"
+#~ msgstr "reset to their original values.  If ARG is the null string each"
+
+#~ msgid "SIGNAL_SPEC is ignored by the shell and by the commands it invokes."
+#~ msgstr "SIGNAL_SPEC is ignored by the shell and by the commands it invokes."
+
+#~ msgid ""
+#~ "If a SIGNAL_SPEC is EXIT (0) the command ARG is executed on exit from"
+#~ msgstr ""
+#~ "If a SIGNAL_SPEC is EXIT (0) the command ARG is executed on exit from"
+
+#~ msgid "the shell.  If a SIGNAL_SPEC is DEBUG, ARG is executed after every"
+#~ msgstr "the shell.  If a SIGNAL_SPEC is DEBUG, ARG is executed after every"
+
+#~ msgid ""
+#~ "each signal number.  Each SIGNAL_SPEC is either a signal name in <signal."
+#~ "h>"
+#~ msgstr ""
+#~ "each signal number.  Each SIGNAL_SPEC is either a signal name in <signal."
+#~ "h>"
+
+#~ msgid ""
+#~ "or a signal number.  `trap -l' prints a list of signal names and their"
+#~ msgstr ""
+#~ "or a signal number.  ‘\e[1mtrap -l\e[0m’ prints a list of signal names and "
+#~ "their"
+
+#~ msgid "corresponding numbers.  Note that a signal can be sent to the shell"
+#~ msgstr "corresponding numbers.  Note that a signal can be sent to the shell"
+
+#~ msgid "with \"kill -signal $$\"."
+#~ msgstr "with “\e[1mkill -signal $$\e[0m”."
+
+#~ msgid "job.  If you specifiy DIGITS, then that job is used.  If you specify"
+#~ msgstr ""
+#~ "job.  If you specifiy DIGITS, then that job is used.  If you specify"
+
+#~ msgid ""
+#~ "WORD, then the job whose name begins with WORD is used.  Following the"
+#~ msgstr ""
+#~ "WORD, then the job whose name begins with WORD is used.  Following the"
+
+#~ msgid "\t\twhen the argument to `cd' is not found in the current"
+#~ msgstr "\t\twhen the argument to ‘\e[1mcd\e[0m’ is not found in the current"
+
+#~ msgid "\t\tdirectory."
+#~ msgstr "\t\tdirectory."
diff --git a/po/en@boldquot.po~ b/po/en@boldquot.po~
new file mode 100644 (file)
index 0000000..652c51b
--- /dev/null
@@ -0,0 +1,4349 @@
+# English translations for GNU bash package.
+# Copyright (C) 2004 Free Software Foundation, Inc.
+# This file is distributed under the same license as the GNU bash package.
+# Automatically generated, 2004.
+#
+# All this catalog "translates" are quotation characters.
+# The msgids must be ASCII and therefore cannot contain real quotation
+# characters, only substitutes like grave accent (0x60), apostrophe (0x27)
+# and double quote (0x22). These substitutes look strange; see
+# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
+#
+# This catalog translates grave accent (0x60) and apostrophe (0x27) to
+# left single quotation mark (U+2018) and right single quotation mark (U+2019).
+# It also translates pairs of apostrophe (0x27) to
+# left single quotation mark (U+2018) and right single quotation mark (U+2019)
+# and pairs of quotation mark (0x22) to
+# left double quotation mark (U+201C) and right double quotation mark (U+201D).
+#
+# When output to an UTF-8 terminal, the quotation characters appear perfectly.
+# When output to an ISO-8859-1 terminal, the single quotation marks are
+# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to
+# grave/acute accent (by libiconv), and the double quotation marks are
+# transliterated to 0x22.
+# When output to an ASCII terminal, the single quotation marks are
+# transliterated to apostrophes, and the double quotation marks are
+# transliterated to 0x22.
+#
+# This catalog furthermore displays the text between the quotation marks in
+# bold face, assuming the VT100/XTerm escape sequences.
+#
+#: builtins/caller.def:128 builtins/caller.def:132 builtins/pushd.def:655
+#: builtins/pushd.def:663 builtins/pushd.def:666 builtins/pushd.def:676
+#: builtins/pushd.def:680 builtins/pushd.def:684 builtins/pushd.def:687
+#: builtins/pushd.def:690 builtins/pushd.def:699 builtins/pushd.def:703
+#: builtins/pushd.def:707 builtins/pushd.def:710 builtins.c:321 builtins.c:325
+#: builtins.c:390 builtins.c:392 builtins.c:401 builtins.c:404 builtins.c:408
+#: builtins.c:445 builtins.c:487 builtins.c:491 builtins.c:498 builtins.c:509
+#: builtins.c:513 builtins.c:552 builtins.c:555 builtins.c:559 builtins.c:562
+#: builtins.c:630 builtins.c:637 builtins.c:692 builtins.c:713 builtins.c:718
+#: builtins.c:722 builtins.c:745 builtins.c:835 builtins.c:919 builtins.c:921
+#: builtins.c:943 builtins.c:946 builtins.c:948 builtins.c:950 builtins.c:952
+#: builtins.c:954 builtins.c:957 builtins.c:966 builtins.c:968 builtins.c:973
+#: builtins.c:976 builtins.c:1019 builtins.c:1024 builtins.c:1028
+#: builtins.c:1032 builtins.c:1034 builtins.c:1047 builtins.c:1062
+#: builtins.c:1226 builtins.c:1231 builtins.c:1305 builtins.c:1309
+#: builtins.c:1313 builtins.c:1316 builtins.c:1319 builtins.c:1331
+#: builtins.c:1335 builtins.c:1339 builtins.c:1342 builtins.c:1354
+#: builtins.c:1362 builtins.c:1365
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU bash 3.0-rc1\n"
+"POT-Creation-Date: 2003-12-22 15:34-0500\n"
+"PO-Revision-Date: 2003-12-22 15:34-0500\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Report-Msgid-Bugs-To: bug-bash@gnu.org\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: arrayfunc.c:45
+msgid "bad array subscript"
+msgstr "bad array subscript"
+
+#: arrayfunc.c:306
+#, c-format
+msgid "%s: cannot assign to non-numeric index"
+msgstr "%s: cannot assign to non-numeric index"
+
+#: bashhist.c:321
+#, c-format
+msgid "%s: cannot create: %s"
+msgstr "%s: cannot create: %s"
+
+#: bashline.c:2791
+msgid "bash_execute_unix_command: cannot find keymap for command"
+msgstr "bash_execute_unix_command: cannot find keymap for command"
+
+#: bashline.c:2840
+#, c-format
+msgid "%s: first non-whitespace character is not `\"'"
+msgstr "%s: first non-whitespace character is not ‘\e[1m\"\e[0m’"
+
+#: bashline.c:2869
+#, c-format
+msgid "no closing `%c' in %s"
+msgstr "no closing ‘\e[1m%c\e[0m’ in %s"
+
+#: bashline.c:2903
+#, c-format
+msgid "%s: missing colon separator"
+msgstr "%s: missing colon separator"
+
+#: builtins/alias.def:123
+#, c-format
+msgid "`%s': invalid alias name"
+msgstr "‘\e[1m%s\e[0m’: invalid alias name"
+
+#: builtins/bind.def:194
+#, c-format
+msgid "`%s': invalid keymap name"
+msgstr "‘\e[1m%s\e[0m’: invalid keymap name"
+
+#: builtins/bind.def:233
+#, c-format
+msgid "%s: cannot read: %s"
+msgstr "%s: cannot read: %s"
+
+#: builtins/bind.def:248
+#, c-format
+msgid "`%s': cannot unbind"
+msgstr "‘\e[1m%s\e[0m’: cannot unbind"
+
+#: builtins/bind.def:283
+#, c-format
+msgid "`%s': unknown function name"
+msgstr "‘\e[1m%s\e[0m’: unknown function name"
+
+#: builtins/bind.def:291
+#, c-format
+msgid "%s is not bound to any keys.\n"
+msgstr "%s is not bound to any keys.\n"
+
+#: builtins/bind.def:295
+#, c-format
+msgid "%s can be invoked via "
+msgstr "%s can be invoked via "
+
+#: builtins/break.def:128
+msgid "only meaningful in a `for', `while', or `until' loop"
+msgstr "only meaningful in a ‘\e[1mfor\e[0m’, ‘\e[1mwhile\e[0m’, or ‘\e[1muntil\e[0m’ loop"
+
+#: builtins/caller.def:127 builtins.c:320
+msgid "Returns the context of the current subroutine call."
+msgstr "Returns the context of the current subroutine call."
+
+#: builtins/caller.def:129 builtins.c:322
+msgid "Without EXPR, returns returns \"$line $filename\".  With EXPR,"
+msgstr "Without EXPR, returns returns “\e[1m$line $filename\e[0m”.  With EXPR,"
+
+#: builtins/caller.def:130 builtins.c:323
+msgid "returns \"$line $subroutine $filename\"; this extra information"
+msgstr "returns “\e[1m$line $subroutine $filename\e[0m”; this extra information"
+
+#: builtins/caller.def:131 builtins.c:324
+msgid "can be used used to provide a stack trace."
+msgstr "can be used used to provide a stack trace."
+
+#: builtins/caller.def:133 builtins.c:326
+msgid "The value of EXPR indicates how many call frames to go back before the"
+msgstr "The value of EXPR indicates how many call frames to go back before the"
+
+#: builtins/caller.def:134 builtins.c:327
+msgid "current one; the top frame is frame 0."
+msgstr "current one; the top frame is frame 0."
+
+#: builtins/cd.def:188
+msgid "HOME not set"
+msgstr "HOME not set"
+
+#: builtins/cd.def:200
+msgid "OLDPWD not set"
+msgstr "OLDPWD not set"
+
+#: builtins/cd.def:357
+#, c-format
+msgid "write error: %s"
+msgstr "write error: %s"
+
+#: builtins/common.c:133 test.c:921
+msgid "too many arguments"
+msgstr "too many arguments"
+
+#: builtins/common.c:157 shell.c:465 shell.c:737
+#, c-format
+msgid "%s: option requires an argument"
+msgstr "%s: option requires an argument"
+
+#: builtins/common.c:164
+#, c-format
+msgid "%s: numeric argument required"
+msgstr "%s: numeric argument required"
+
+#: builtins/common.c:171
+#, c-format
+msgid "%s: not found"
+msgstr "%s: not found"
+
+#: builtins/common.c:180 shell.c:750
+#, c-format
+msgid "%s: invalid option"
+msgstr "%s: invalid option"
+
+#: builtins/common.c:187
+#, c-format
+msgid "%s: invalid option name"
+msgstr "%s: invalid option name"
+
+#: builtins/common.c:194 general.c:229 general.c:234
+#, c-format
+msgid "`%s': not a valid identifier"
+msgstr "‘\e[1m%s\e[0m’: not a valid identifier"
+
+#: builtins/common.c:201
+#, c-format
+msgid "%s: invalid number"
+msgstr "%s: invalid number"
+
+#: builtins/common.c:208
+#, c-format
+msgid "%s: invalid signal specification"
+msgstr "%s: invalid signal specification"
+
+#: builtins/common.c:215
+#, c-format
+msgid "`%s': not a pid or valid job spec"
+msgstr "‘\e[1m%s\e[0m’: not a pid or valid job spec"
+
+#: builtins/common.c:222 error.c:453
+#, c-format
+msgid "%s: readonly variable"
+msgstr "%s: readonly variable"
+
+#: builtins/common.c:230
+#, c-format
+msgid "%s: %s out of range"
+msgstr "%s: %s out of range"
+
+#: builtins/common.c:230 builtins/common.c:232
+msgid "argument"
+msgstr "argument"
+
+#: builtins/common.c:232
+#, c-format
+msgid "%s out of range"
+msgstr "%s out of range"
+
+#: builtins/common.c:240
+#, c-format
+msgid "%s: no such job"
+msgstr "%s: no such job"
+
+#: builtins/common.c:248
+#, c-format
+msgid "%s: no job control"
+msgstr "%s: no job control"
+
+#: builtins/common.c:250
+msgid "no job control"
+msgstr "no job control"
+
+#: builtins/common.c:260
+#, c-format
+msgid "%s: restricted"
+msgstr "%s: restricted"
+
+#: builtins/common.c:262
+msgid "restricted"
+msgstr "restricted"
+
+#: builtins/common.c:270
+#, c-format
+msgid "%s: not a shell builtin"
+msgstr "%s: not a shell builtin"
+
+#: builtins/common.c:486
+#, c-format
+msgid "%s: error retrieving current directory: %s: %s\n"
+msgstr "%s: error retrieving current directory: %s: %s\n"
+
+#: builtins/common.c:553 builtins/common.c:555
+#, c-format
+msgid "%s: ambiguous job spec"
+msgstr "%s: ambiguous job spec"
+
+#: builtins/complete.def:251
+#, c-format
+msgid "%s: invalid action name"
+msgstr "%s: invalid action name"
+
+#: builtins/complete.def:381 builtins/complete.def:524
+#, c-format
+msgid "%s: no completion specification"
+msgstr "%s: no completion specification"
+
+#: builtins/complete.def:571
+msgid "warning: -F option may not work as you expect"
+msgstr "warning: -F option may not work as you expect"
+
+#: builtins/complete.def:573
+msgid "warning: -C option may not work as you expect"
+msgstr "warning: -C option may not work as you expect"
+
+#: builtins/declare.def:105
+msgid "can only be used in a function"
+msgstr "can only be used in a function"
+
+#: builtins/declare.def:295
+msgid "cannot use `-f' to make functions"
+msgstr "cannot use ‘\e[1m-f\e[0m’ to make functions"
+
+#: builtins/declare.def:307 execute_cmd.c:3949
+#, c-format
+msgid "%s: readonly function"
+msgstr "%s: readonly function"
+
+#: builtins/declare.def:389
+#, c-format
+msgid "%s: cannot destroy array variables in this way"
+msgstr "%s: cannot destroy array variables in this way"
+
+#: builtins/enable.def:128 builtins/enable.def:136
+msgid "dynamic loading not available"
+msgstr "dynamic loading not available"
+
+#: builtins/enable.def:303
+#, c-format
+msgid "cannot open shared object %s: %s"
+msgstr "cannot open shared object %s: %s"
+
+#: builtins/enable.def:326
+#, c-format
+msgid "cannot find %s in shared object %s: %s"
+msgstr "cannot find %s in shared object %s: %s"
+
+#: builtins/enable.def:450
+#, c-format
+msgid "%s: not dynamically loaded"
+msgstr "%s: not dynamically loaded"
+
+#: builtins/enable.def:465
+#, c-format
+msgid "%s: cannot delete: %s"
+msgstr "%s: cannot delete: %s"
+
+#: builtins/evalfile.c:128 execute_cmd.c:3821 shell.c:1395
+#, c-format
+msgid "%s: is a directory"
+msgstr "%s: is a directory"
+
+#: builtins/evalfile.c:133
+#, c-format
+msgid "%s: not a regular file"
+msgstr "%s: not a regular file"
+
+#: builtins/evalfile.c:141
+#, c-format
+msgid "%s: file is too large"
+msgstr "%s: file is too large"
+
+#: builtins/exec.def:205
+#, c-format
+msgid "%s: cannot execute: %s"
+msgstr "%s: cannot execute: %s"
+
+#: builtins/exit.def:83
+msgid "not login shell: use `exit'"
+msgstr "not login shell: use ‘\e[1mexit\e[0m’"
+
+#: builtins/exit.def:111
+msgid "There are stopped jobs.\n"
+msgstr "There are stopped jobs.\n"
+
+#: builtins/fc.def:252
+msgid "no command found"
+msgstr "no command found"
+
+#: builtins/fc.def:317
+msgid "history specification"
+msgstr "history specification"
+
+#: builtins/fc.def:338
+#, c-format
+msgid "%s: cannot open temp file: %s"
+msgstr "%s: cannot open temp file: %s"
+
+#: builtins/fg_bg.def:133
+#, c-format
+msgid "job %d started without job control"
+msgstr "job %d started without job control"
+
+#: builtins/getopt.c:109
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: illegal option -- %c\n"
+
+#: builtins/getopt.c:110
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: option requires an argument -- %c\n"
+
+#: builtins/hash.def:83
+msgid "hashing disabled"
+msgstr "hashing disabled"
+
+#: builtins/hash.def:128
+#, c-format
+msgid "%s: hash table empty\n"
+msgstr "%s: hash table empty\n"
+
+#: builtins/help.def:108
+msgid "Shell commands matching keywords `"
+msgstr "Shell commands matching keywords `"
+
+#: builtins/help.def:110
+msgid "Shell commands matching keyword `"
+msgstr "Shell commands matching keyword `"
+
+#: builtins/help.def:138
+#, c-format
+msgid ""
+"no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
+msgstr ""
+"no help topics match ‘\e[1m%s\e[0m’.  Try ‘\e[1mhelp help\e[0m’ or ‘\e[1mman -k %s\e[0m’ "
+"or ‘\e[1minfo %s\e[0m’."
+
+#: builtins/help.def:164
+#, c-format
+msgid "%s: cannot open: %s"
+msgstr "%s: cannot open: %s"
+
+#: builtins/help.def:182
+msgid ""
+"These shell commands are defined internally.  Type `help' to see this list.\n"
+"Type `help name' to find out more about the function `name'.\n"
+"Use `info bash' to find out more about the shell in general.\n"
+"Use `man -k' or `info' to find out more about commands not in this list.\n"
+"\n"
+"A star (*) next to a name means that the command is disabled.\n"
+"\n"
+msgstr ""
+"These shell commands are defined internally.  Type ‘\e[1mhelp\e[0m’ to see this "
+"list.\n"
+"Type ‘\e[1mhelp name\e[0m’ to find out more about the function ‘\e[1mname\e[0m’.\n"
+"Use ‘\e[1minfo bash\e[0m’ to find out more about the shell in general.\n"
+"Use ‘\e[1mman -k\e[0m’ or ‘\e[1minfo\e[0m’ to find out more about commands not in "
+"this list.\n"
+"\n"
+"A star (*) next to a name means that the command is disabled.\n"
+"\n"
+
+#: builtins/history.def:148
+msgid "cannot use more than one of -anrw"
+msgstr "cannot use more than one of -anrw"
+
+#: builtins/history.def:180
+msgid "history position"
+msgstr "history position"
+
+#: builtins/history.def:390
+#, c-format
+msgid "%s: history expansion failed"
+msgstr "%s: history expansion failed"
+
+#: builtins/jobs.def:99
+msgid "no other options allowed with `-x'"
+msgstr "no other options allowed with ‘\e[1m-x\e[0m’"
+
+#: builtins/kill.def:187
+#, c-format
+msgid "%s: arguments must be process or job IDs"
+msgstr "%s: arguments must be process or job IDs"
+
+#: builtins/kill.def:248
+msgid "Unknown error"
+msgstr "Unknown error"
+
+#: builtins/let.def:94 builtins/let.def:119 expr.c:496 expr.c:511
+msgid "expression expected"
+msgstr "expression expected"
+
+#: builtins/printf.def:249
+#, c-format
+msgid "`%s': missing format character"
+msgstr "‘\e[1m%s\e[0m’: missing format character"
+
+#: builtins/printf.def:408
+#, c-format
+msgid "`%c': invalid format character"
+msgstr "‘\e[1m%c\e[0m’: invalid format character"
+
+#: builtins/printf.def:601
+msgid "missing hex digit for \\x"
+msgstr "missing hex digit for \\x"
+
+#: builtins/pushd.def:168
+msgid "no other directory"
+msgstr "no other directory"
+
+#: builtins/pushd.def:435
+msgid "<no current directory>"
+msgstr "<no current directory>"
+
+#: builtins/pushd.def:652 builtins.c:1351
+msgid "Display the list of currently remembered directories.  Directories"
+msgstr "Display the list of currently remembered directories.  Directories"
+
+#: builtins/pushd.def:653 builtins.c:1352
+msgid "find their way onto the list with the `pushd' command; you can get"
+msgstr ""
+"find their way onto the list with the ‘\e[1mpushd\e[0m’ command; you can get"
+
+#: builtins/pushd.def:654 builtins.c:1353
+msgid "back up through the list with the `popd' command."
+msgstr "back up through the list with the ‘\e[1mpopd\e[0m’ command."
+
+#: builtins/pushd.def:656 builtins.c:1355
+msgid "The -l flag specifies that `dirs' should not print shorthand versions"
+msgstr ""
+"The -l flag specifies that ‘\e[1mdirs\e[0m’ should not print shorthand versions"
+
+#: builtins/pushd.def:657 builtins.c:1356
+msgid "of directories which are relative to your home directory.  This means"
+msgstr "of directories which are relative to your home directory.  This means"
+
+#: builtins/pushd.def:658 builtins.c:1357
+msgid "that `~/bin' might be displayed as `/homes/bfox/bin'.  The -v flag"
+msgstr ""
+"that ‘\e[1m~/bin\e[0m’ might be displayed as ‘\e[1m/homes/bfox/bin\e[0m’.  The -v "
+"flag"
+
+#: builtins/pushd.def:659 builtins.c:1358
+msgid "causes `dirs' to print the directory stack with one entry per line,"
+msgstr ""
+"causes ‘\e[1mdirs\e[0m’ to print the directory stack with one entry per line,"
+
+#: builtins/pushd.def:660 builtins.c:1359
+msgid "prepending the directory name with its position in the stack.  The -p"
+msgstr "prepending the directory name with its position in the stack.  The -p"
+
+#: builtins/pushd.def:661 builtins.c:1360
+msgid "flag does the same thing, but the stack position is not prepended."
+msgstr "flag does the same thing, but the stack position is not prepended."
+
+#: builtins/pushd.def:662 builtins.c:1361
+msgid "The -c flag clears the directory stack by deleting all of the elements."
+msgstr ""
+"The -c flag clears the directory stack by deleting all of the elements."
+
+#: builtins/pushd.def:664
+msgid "+N   displays the Nth entry counting from the left of the list shown by"
+msgstr ""
+"+N   displays the Nth entry counting from the left of the list shown by"
+
+#: builtins/pushd.def:665 builtins/pushd.def:668
+msgid "     dirs when invoked without options, starting with zero."
+msgstr "     dirs when invoked without options, starting with zero."
+
+#: builtins/pushd.def:667
+msgid ""
+"-N   displays the Nth entry counting from the right of the list shown by"
+msgstr ""
+"-N   displays the Nth entry counting from the right of the list shown by"
+
+#: builtins/pushd.def:673 builtins.c:1302
+msgid "Adds a directory to the top of the directory stack, or rotates"
+msgstr "Adds a directory to the top of the directory stack, or rotates"
+
+#: builtins/pushd.def:674 builtins.c:1303
+msgid "the stack, making the new top of the stack the current working"
+msgstr "the stack, making the new top of the stack the current working"
+
+#: builtins/pushd.def:675 builtins.c:1304
+msgid "directory.  With no arguments, exchanges the top two directories."
+msgstr "directory.  With no arguments, exchanges the top two directories."
+
+#: builtins/pushd.def:677
+msgid "+N   Rotates the stack so that the Nth directory (counting"
+msgstr "+N   Rotates the stack so that the Nth directory (counting"
+
+#: builtins/pushd.def:678
+msgid "     from the left of the list shown by `dirs', starting with"
+msgstr "     from the left of the list shown by ‘\e[1mdirs\e[0m’, starting with"
+
+#: builtins/pushd.def:679 builtins/pushd.def:683
+msgid "     zero) is at the top."
+msgstr "     zero) is at the top."
+
+#: builtins/pushd.def:681
+msgid "-N   Rotates the stack so that the Nth directory (counting"
+msgstr "-N   Rotates the stack so that the Nth directory (counting"
+
+#: builtins/pushd.def:682
+msgid "     from the right of the list shown by `dirs', starting with"
+msgstr "     from the right of the list shown by ‘\e[1mdirs\e[0m’, starting with"
+
+#: builtins/pushd.def:685
+msgid "-n   suppress the normal change of directory when adding directories"
+msgstr "-n   suppress the normal change of directory when adding directories"
+
+#: builtins/pushd.def:686
+msgid "     to the stack, so only the stack is manipulated."
+msgstr "     to the stack, so only the stack is manipulated."
+
+#: builtins/pushd.def:688
+msgid "dir  adds DIR to the directory stack at the top, making it the"
+msgstr "dir  adds DIR to the directory stack at the top, making it the"
+
+#: builtins/pushd.def:689
+msgid "     new current working directory."
+msgstr "     new current working directory."
+
+#: builtins/pushd.def:691 builtins/pushd.def:711 builtins.c:1320
+#: builtins.c:1343
+msgid "You can see the directory stack with the `dirs' command."
+msgstr "You can see the directory stack with the ‘\e[1mdirs\e[0m’ command."
+
+#: builtins/pushd.def:696 builtins.c:1328
+msgid "Removes entries from the directory stack.  With no arguments,"
+msgstr "Removes entries from the directory stack.  With no arguments,"
+
+#: builtins/pushd.def:697 builtins.c:1329
+msgid "removes the top directory from the stack, and cd's to the new"
+msgstr "removes the top directory from the stack, and cd's to the new"
+
+#: builtins/pushd.def:698 builtins.c:1330
+msgid "top directory."
+msgstr "top directory."
+
+#: builtins/pushd.def:700
+msgid "+N   removes the Nth entry counting from the left of the list"
+msgstr "+N   removes the Nth entry counting from the left of the list"
+
+#: builtins/pushd.def:701
+msgid "     shown by `dirs', starting with zero.  For example: `popd +0'"
+msgstr ""
+"     shown by ‘\e[1mdirs\e[0m’, starting with zero.  For example: ‘\e[1mpopd +0\e[0m’"
+
+#: builtins/pushd.def:702
+msgid "     removes the first directory, `popd +1' the second."
+msgstr "     removes the first directory, ‘\e[1mpopd +1\e[0m’ the second."
+
+#: builtins/pushd.def:704
+msgid "-N   removes the Nth entry counting from the right of the list"
+msgstr "-N   removes the Nth entry counting from the right of the list"
+
+#: builtins/pushd.def:705
+msgid "     shown by `dirs', starting with zero.  For example: `popd -0'"
+msgstr ""
+"     shown by ‘\e[1mdirs\e[0m’, starting with zero.  For example: ‘\e[1mpopd -0\e[0m’"
+
+#: builtins/pushd.def:706
+msgid "     removes the last directory, `popd -1' the next to last."
+msgstr "     removes the last directory, ‘\e[1mpopd -1\e[0m’ the next to last."
+
+#: builtins/pushd.def:708
+msgid "-n   suppress the normal change of directory when removing directories"
+msgstr "-n   suppress the normal change of directory when removing directories"
+
+#: builtins/pushd.def:709
+msgid "     from the stack, so only the stack is manipulated."
+msgstr "     from the stack, so only the stack is manipulated."
+
+#: builtins/read.def:207
+#, c-format
+msgid "%s: invalid timeout specification"
+msgstr "%s: invalid timeout specification"
+
+#: builtins/read.def:230
+#, c-format
+msgid "%s: invalid file descriptor specification"
+msgstr "%s: invalid file descriptor specification"
+
+#: builtins/read.def:237
+#, c-format
+msgid "%d: invalid file descriptor: %s"
+msgstr "%d: invalid file descriptor: %s"
+
+#: builtins/read.def:463
+#, c-format
+msgid "read error: %d: %s"
+msgstr "read error: %d: %s"
+
+#: builtins/return.def:63
+msgid "can only `return' from a function or sourced script"
+msgstr "can only ‘\e[1mreturn\e[0m’ from a function or sourced script"
+
+#: builtins/set.def:743
+msgid "cannot simultaneously unset a function and a variable"
+msgstr "cannot simultaneously unset a function and a variable"
+
+#: builtins/set.def:780
+#, c-format
+msgid "%s: cannot unset"
+msgstr "%s: cannot unset"
+
+#: builtins/set.def:787
+#, c-format
+msgid "%s: cannot unset: readonly %s"
+msgstr "%s: cannot unset: readonly %s"
+
+#: builtins/set.def:798
+#, c-format
+msgid "%s: not an array variable"
+msgstr "%s: not an array variable"
+
+#: builtins/setattr.def:165
+#, c-format
+msgid "%s: not a function"
+msgstr "%s: not a function"
+
+#: builtins/shift.def:66 builtins/shift.def:72
+msgid "shift count"
+msgstr "shift count"
+
+#: builtins/shopt.def:226
+msgid "cannot set and unset shell options simultaneously"
+msgstr "cannot set and unset shell options simultaneously"
+
+#: builtins/shopt.def:291
+#, c-format
+msgid "%s: invalid shell option name"
+msgstr "%s: invalid shell option name"
+
+#: builtins/source.def:117
+msgid "filename argument required"
+msgstr "filename argument required"
+
+#: builtins/source.def:137
+#, c-format
+msgid "%s: file not found"
+msgstr "%s: file not found"
+
+#: builtins/suspend.def:93
+msgid "cannot suspend"
+msgstr "cannot suspend"
+
+#: builtins/suspend.def:103
+msgid "cannot suspend a login shell"
+msgstr "cannot suspend a login shell"
+
+#: builtins/type.def:231
+#, c-format
+msgid "%s is aliased to `%s'\n"
+msgstr "%s is aliased to ‘\e[1m%s\e[0m’\n"
+
+#: builtins/type.def:252
+#, c-format
+msgid "%s is a shell keyword\n"
+msgstr "%s is a shell keyword\n"
+
+#: builtins/type.def:272
+#, c-format
+msgid "%s is a function\n"
+msgstr "%s is a function\n"
+
+#: builtins/type.def:297
+#, c-format
+msgid "%s is a shell builtin\n"
+msgstr "%s is a shell builtin\n"
+
+#: builtins/type.def:318
+#, c-format
+msgid "%s is %s\n"
+msgstr "%s is %s\n"
+
+#: builtins/type.def:338
+#, c-format
+msgid "%s is hashed (%s)\n"
+msgstr "%s is hashed (%s)\n"
+
+#: builtins/ulimit.def:332
+#, c-format
+msgid "%s: invalid limit argument"
+msgstr "%s: invalid limit argument"
+
+#: builtins/ulimit.def:358
+#, c-format
+msgid "`%c': bad command"
+msgstr "‘\e[1m%c\e[0m’: bad command"
+
+#: builtins/ulimit.def:387
+#, c-format
+msgid "%s: cannot get limit: %s"
+msgstr "%s: cannot get limit: %s"
+
+#: builtins/ulimit.def:425
+#, c-format
+msgid "%s: cannot modify limit: %s"
+msgstr "%s: cannot modify limit: %s"
+
+#: builtins/umask.def:112
+msgid "octal number"
+msgstr "octal number"
+
+#: builtins/umask.def:226
+#, c-format
+msgid "`%c': invalid symbolic mode operator"
+msgstr "‘\e[1m%c\e[0m’: invalid symbolic mode operator"
+
+#: builtins/umask.def:279
+#, c-format
+msgid "`%c': invalid symbolic mode character"
+msgstr "‘\e[1m%c\e[0m’: invalid symbolic mode character"
+
+#: error.c:165
+#, c-format
+msgid "last command: %s\n"
+msgstr "last command: %s\n"
+
+#: error.c:173
+msgid "Aborting..."
+msgstr "Aborting..."
+
+#: error.c:260
+#, c-format
+msgid "%s: warning: "
+msgstr "%s: warning: "
+
+#: error.c:405
+msgid "unknown command error"
+msgstr "unknown command error"
+
+#: error.c:406
+msgid "bad command type"
+msgstr "bad command type"
+
+#: error.c:407
+msgid "bad connector"
+msgstr "bad connector"
+
+#: error.c:408
+msgid "bad jump"
+msgstr "bad jump"
+
+#: error.c:446
+#, c-format
+msgid "%s: unbound variable"
+msgstr "%s: unbound variable"
+
+#: eval.c:175
+msgid "\atimed out waiting for input: auto-logout\n"
+msgstr "\atimed out waiting for input: auto-logout\n"
+
+#: execute_cmd.c:466
+#, c-format
+msgid "cannot redirect standard input from /dev/null: %s"
+msgstr "cannot redirect standard input from /dev/null: %s"
+
+#: execute_cmd.c:1036
+#, c-format
+msgid "TIMEFORMAT: `%c': invalid format character"
+msgstr "TIMEFORMAT: ‘\e[1m%c\e[0m’: invalid format character"
+
+#: execute_cmd.c:3521
+#, c-format
+msgid "%s: restricted: cannot specify `/' in command names"
+msgstr "%s: restricted: cannot specify ‘\e[1m/\e[0m’ in command names"
+
+#: execute_cmd.c:3609
+#, c-format
+msgid "%s: command not found"
+msgstr "%s: command not found"
+
+#: execute_cmd.c:3839
+#, c-format
+msgid "%s: %s: bad interpreter"
+msgstr "%s: %s: bad interpreter"
+
+#: execute_cmd.c:3876
+#, c-format
+msgid "%s: cannot execute binary file"
+msgstr "%s: cannot execute binary file"
+
+#: execute_cmd.c:3988
+#, c-format
+msgid "cannot duplicate fd %d to fd %d"
+msgstr "cannot duplicate fd %d to fd %d"
+
+#: expr.c:239
+msgid "expression recursion level exceeded"
+msgstr "expression recursion level exceeded"
+
+#: expr.c:263
+msgid "recursion stack underflow"
+msgstr "recursion stack underflow"
+
+#: expr.c:374
+msgid "syntax error in expression"
+msgstr "syntax error in expression"
+
+#: expr.c:414
+msgid "attempted assignment to non-variable"
+msgstr "attempted assignment to non-variable"
+
+#: expr.c:435 expr.c:440 expr.c:750
+msgid "division by 0"
+msgstr "division by 0"
+
+#: expr.c:466
+msgid "bug: bad expassign token"
+msgstr "bug: bad expassign token"
+
+#: expr.c:508
+msgid "`:' expected for conditional expression"
+msgstr "‘\e[1m:\e[0m’ expected for conditional expression"
+
+#: expr.c:775
+msgid "exponent less than 0"
+msgstr "exponent less than 0"
+
+#: expr.c:819
+msgid "identifier expected after pre-increment or pre-decrement"
+msgstr "identifier expected after pre-increment or pre-decrement"
+
+#: expr.c:847
+msgid "missing `)'"
+msgstr "missing ‘\e[1m)\e[0m’"
+
+#: expr.c:871
+msgid "syntax error: operand expected"
+msgstr "syntax error: operand expected"
+
+#: expr.c:1146
+msgid "invalid number"
+msgstr "invalid number"
+
+#: expr.c:1150
+msgid "invalid arithmetic base"
+msgstr "invalid arithmetic base"
+
+#: expr.c:1170
+msgid "value too great for base"
+msgstr "value too great for base"
+
+#: general.c:60
+msgid "getcwd: cannot access parent directories"
+msgstr "getcwd: cannot access parent directories"
+
+#: input.c:231
+#, c-format
+msgid "cannot allocate new file descriptor for bash input from fd %d"
+msgstr "cannot allocate new file descriptor for bash input from fd %d"
+
+#: input.c:239
+#, c-format
+msgid "save_bash_input: buffer already exists for new fd %d"
+msgstr "save_bash_input: buffer already exists for new fd %d"
+
+#: jobs.c:693
+#, c-format
+msgid "deleting stopped job %d with process group %ld"
+msgstr "deleting stopped job %d with process group %ld"
+
+#: jobs.c:1001
+#, c-format
+msgid "describe_pid: %ld: no such pid"
+msgstr "describe_pid: %ld: no such pid"
+
+#: jobs.c:1632 nojobs.c:648
+#, c-format
+msgid "wait: pid %ld is not a child of this shell"
+msgstr "wait: pid %ld is not a child of this shell"
+
+#: jobs.c:1815
+#, c-format
+msgid "wait_for: No record of process %ld"
+msgstr "wait_for: No record of process %ld"
+
+#: jobs.c:2062
+#, c-format
+msgid "wait_for_job: job %d is stopped"
+msgstr "wait_for_job: job %d is stopped"
+
+#: jobs.c:2284
+#, c-format
+msgid "%s: job has terminated"
+msgstr "%s: job has terminated"
+
+#: jobs.c:2293
+#, c-format
+msgid "%s: job %d already in background"
+msgstr "%s: job %d already in background"
+
+#: jobs.c:3037
+msgid "no job control in this shell"
+msgstr "no job control in this shell"
+
+#: lib/malloc/malloc.c:298
+#, c-format
+msgid "malloc: failed assertion: %s\n"
+msgstr "malloc: failed assertion: %s\n"
+
+#: lib/malloc/malloc.c:314
+#, c-format
+msgid ""
+"\r\n"
+"malloc: %s:%d: assertion botched\r\n"
+msgstr ""
+"\r\n"
+"malloc: %s:%d: assertion botched\r\n"
+
+#: lib/malloc/malloc.c:740
+msgid "malloc: block on free list clobbered"
+msgstr "malloc: block on free list clobbered"
+
+#: lib/malloc/malloc.c:817
+msgid "free: called with already freed block argument"
+msgstr "free: called with already freed block argument"
+
+#: lib/malloc/malloc.c:820
+msgid "free: called with unallocated block argument"
+msgstr "free: called with unallocated block argument"
+
+#: lib/malloc/malloc.c:839
+msgid "free: underflow detected; mh_nbytes out of range"
+msgstr "free: underflow detected; mh_nbytes out of range"
+
+#: lib/malloc/malloc.c:845
+msgid "free: start and end chunk sizes differ"
+msgstr "free: start and end chunk sizes differ"
+
+#: lib/malloc/malloc.c:942
+msgid "realloc: called with unallocated block argument"
+msgstr "realloc: called with unallocated block argument"
+
+#: lib/malloc/malloc.c:957
+msgid "realloc: underflow detected; mh_nbytes out of range"
+msgstr "realloc: underflow detected; mh_nbytes out of range"
+
+#: lib/malloc/malloc.c:963
+msgid "realloc: start and end chunk sizes differ"
+msgstr "realloc: start and end chunk sizes differ"
+
+#: lib/malloc/table.c:175
+msgid "register_alloc: alloc table is full with FIND_ALLOC?\n"
+msgstr "register_alloc: alloc table is full with FIND_ALLOC?\n"
+
+#: lib/malloc/table.c:182
+#, c-format
+msgid "register_alloc: %p already in table as allocated?\n"
+msgstr "register_alloc: %p already in table as allocated?\n"
+
+#: lib/malloc/table.c:218
+#, c-format
+msgid "register_free: %p already in table as free?\n"
+msgstr "register_free: %p already in table as free?\n"
+
+#: lib/malloc/watch.c:46
+msgid "allocated"
+msgstr "allocated"
+
+#: lib/malloc/watch.c:48
+msgid "freed"
+msgstr "freed"
+
+#: lib/malloc/watch.c:50
+msgid "requesting resize"
+msgstr "requesting resize"
+
+#: lib/malloc/watch.c:52
+msgid "just resized"
+msgstr "just resized"
+
+#: lib/malloc/watch.c:54
+msgid "bug: unknown operation"
+msgstr "bug: unknown operation"
+
+#: lib/malloc/watch.c:56
+#, c-format
+msgid "malloc: watch alert: %p %s "
+msgstr "malloc: watch alert: %p %s "
+
+#: lib/sh/fmtulong.c:101
+msgid "invalid base"
+msgstr "invalid base"
+
+#: lib/sh/netopen.c:158
+#, c-format
+msgid "%s: host unknown"
+msgstr "%s: host unknown"
+
+#: lib/sh/netopen.c:165
+#, c-format
+msgid "%s: invalid service"
+msgstr "%s: invalid service"
+
+#: lib/sh/netopen.c:296
+#, c-format
+msgid "%s: bad network path specification"
+msgstr "%s: bad network path specification"
+
+#: lib/sh/netopen.c:336
+msgid "network operations not supported"
+msgstr "network operations not supported"
+
+#: mailcheck.c:382
+msgid "You have mail in $_"
+msgstr "You have mail in $_"
+
+#: mailcheck.c:407
+msgid "You have new mail in $_"
+msgstr "You have new mail in $_"
+
+#: mailcheck.c:423
+#, c-format
+msgid "The mail in %s has been read\n"
+msgstr "The mail in %s has been read\n"
+
+#: make_cmd.c:318
+msgid "syntax error: arithmetic expression required"
+msgstr "syntax error: arithmetic expression required"
+
+#: make_cmd.c:320
+msgid "syntax error: `;' unexpected"
+msgstr "syntax error: ‘\e[1m;\e[0m’ unexpected"
+
+#: make_cmd.c:321
+#, c-format
+msgid "syntax error: `((%s))'"
+msgstr "syntax error: ‘\e[1m((%s))\e[0m’"
+
+#: make_cmd.c:560
+#, c-format
+msgid "make_here_document: bad instruction type %d"
+msgstr "make_here_document: bad instruction type %d"
+
+#: make_cmd.c:730
+#, c-format
+msgid "make_redirection: redirection instruction `%d' out of range"
+msgstr "make_redirection: redirection instruction ‘\e[1m%d\e[0m’ out of range"
+
+#: parse.y:2726
+#, c-format
+msgid "unexpected EOF while looking for matching `%c'"
+msgstr "unexpected EOF while looking for matching ‘\e[1m%c\e[0m’"
+
+#: parse.y:3011
+msgid "unexpected EOF while looking for `]]'"
+msgstr "unexpected EOF while looking for ‘\e[1m]]\e[0m’"
+
+#: parse.y:3016
+#, c-format
+msgid "syntax error in conditional expression: unexpected token `%s'"
+msgstr "syntax error in conditional expression: unexpected token ‘\e[1m%s\e[0m’"
+
+#: parse.y:3020
+msgid "syntax error in conditional expression"
+msgstr "syntax error in conditional expression"
+
+#: parse.y:3098
+#, c-format
+msgid "unexpected token `%s', expected `)'"
+msgstr "unexpected token ‘\e[1m%s\e[0m’, expected ‘\e[1m)\e[0m’"
+
+#: parse.y:3102
+msgid "expected `)'"
+msgstr "expected ‘\e[1m)\e[0m’"
+
+#: parse.y:3130
+#, c-format
+msgid "unexpected argument `%s' to conditional unary operator"
+msgstr "unexpected argument ‘\e[1m%s\e[0m’ to conditional unary operator"
+
+#: parse.y:3134
+msgid "unexpected argument to conditional unary operator"
+msgstr "unexpected argument to conditional unary operator"
+
+#: parse.y:3171
+#, c-format
+msgid "unexpected token `%s', conditional binary operator expected"
+msgstr "unexpected token ‘\e[1m%s\e[0m’, conditional binary operator expected"
+
+#: parse.y:3175
+msgid "conditional binary operator expected"
+msgstr "conditional binary operator expected"
+
+#: parse.y:3191
+#, c-format
+msgid "unexpected argument `%s' to conditional binary operator"
+msgstr "unexpected argument ‘\e[1m%s\e[0m’ to conditional binary operator"
+
+#: parse.y:3195
+msgid "unexpected argument to conditional binary operator"
+msgstr "unexpected argument to conditional binary operator"
+
+#: parse.y:3206
+#, c-format
+msgid "unexpected token `%c' in conditional command"
+msgstr "unexpected token ‘\e[1m%c\e[0m’ in conditional command"
+
+#: parse.y:3209
+#, c-format
+msgid "unexpected token `%s' in conditional command"
+msgstr "unexpected token ‘\e[1m%s\e[0m’ in conditional command"
+
+#: parse.y:3213
+#, c-format
+msgid "unexpected token %d in conditional command"
+msgstr "unexpected token %d in conditional command"
+
+#: parse.y:4400
+#, c-format
+msgid "syntax error near unexpected token `%s'"
+msgstr "syntax error near unexpected token ‘\e[1m%s\e[0m’"
+
+#: parse.y:4418
+#, c-format
+msgid "syntax error near `%s'"
+msgstr "syntax error near ‘\e[1m%s\e[0m’"
+
+#: parse.y:4428
+msgid "syntax error: unexpected end of file"
+msgstr "syntax error: unexpected end of file"
+
+#: parse.y:4428
+msgid "syntax error"
+msgstr "syntax error"
+
+#: parse.y:4490
+#, c-format
+msgid "Use \"%s\" to leave the shell.\n"
+msgstr "Use “\e[1m%s\e[0m” to leave the shell.\n"
+
+#: parse.y:4649
+msgid "unexpected EOF while looking for matching `)'"
+msgstr "unexpected EOF while looking for matching ‘\e[1m)\e[0m’"
+
+#: pcomplete.c:988
+#, c-format
+msgid "completion: function `%s' not found"
+msgstr "completion: function ‘\e[1m%s\e[0m’ not found"
+
+#: pcomplib.c:179
+#, c-format
+msgid "progcomp_insert: %s: NULL COMPSPEC"
+msgstr "progcomp_insert: %s: NULL COMPSPEC"
+
+#: print_cmd.c:260
+#, c-format
+msgid "print_command: bad connector `%d'"
+msgstr "print_command: bad connector ‘\e[1m%d\e[0m’"
+
+#: print_cmd.c:1172
+#, c-format
+msgid "cprintf: `%c': invalid format character"
+msgstr "cprintf: ‘\e[1m%c\e[0m’: invalid format character"
+
+#: redir.c:99
+msgid "file descriptor out of range"
+msgstr "file descriptor out of range"
+
+#: redir.c:141
+#, c-format
+msgid "%s: ambiguous redirect"
+msgstr "%s: ambiguous redirect"
+
+#: redir.c:145
+#, c-format
+msgid "%s: cannot overwrite existing file"
+msgstr "%s: cannot overwrite existing file"
+
+#: redir.c:150
+#, c-format
+msgid "%s: restricted: cannot redirect output"
+msgstr "%s: restricted: cannot redirect output"
+
+#: redir.c:155
+#, c-format
+msgid "cannot create temp file for here document: %s"
+msgstr "cannot create temp file for here document: %s"
+
+#: redir.c:509
+msgid "/dev/(tcp|udp)/host/port not supported without networking"
+msgstr "/dev/(tcp|udp)/host/port not supported without networking"
+
+#: redir.c:949
+msgid "redirection error: cannot duplicate fd"
+msgstr "redirection error: cannot duplicate fd"
+
+#: shell.c:302
+msgid "could not find /tmp, please create!"
+msgstr "could not find /tmp, please create!"
+
+#: shell.c:306
+msgid "/tmp must be a valid directory name"
+msgstr "/tmp must be a valid directory name"
+
+#: shell.c:839
+#, c-format
+msgid "%c%c: invalid option"
+msgstr "%c%c: invalid option"
+
+#: shell.c:1590
+msgid "I have no name!"
+msgstr "I have no name!"
+
+#: shell.c:1725
+#, c-format
+msgid ""
+"Usage:\t%s [GNU long option] [option] ...\n"
+"\t%s [GNU long option] [option] script-file ...\n"
+msgstr ""
+"Usage:\t%s [GNU long option] [option] ...\n"
+"\t%s [GNU long option] [option] script-file ...\n"
+
+#: shell.c:1727
+msgid "GNU long options:\n"
+msgstr "GNU long options:\n"
+
+#: shell.c:1731
+msgid "Shell options:\n"
+msgstr "Shell options:\n"
+
+#: shell.c:1732
+msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n"
+msgstr "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n"
+
+#: shell.c:1747
+#, c-format
+msgid "\t-%s or -o option\n"
+msgstr "\t-%s or -o option\n"
+
+#: shell.c:1753
+#, c-format
+msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
+msgstr ""
+"Type ‘\e[1m%s -c “\e[1mhelp set\e[0m”\e[0m’ for more information about shell "
+"options.\n"
+
+#: shell.c:1754
+#, c-format
+msgid "Type `%s -c help' for more information about shell builtin commands.\n"
+msgstr ""
+"Type ‘\e[1m%s -c help\e[0m’ for more information about shell builtin commands.\n"
+
+#: shell.c:1755
+msgid "Use the `bashbug' command to report bugs.\n"
+msgstr "Use the ‘\e[1mbashbug\e[0m’ command to report bugs.\n"
+
+#: sig.c:485
+#, c-format
+msgid "sigprocmask: %d: invalid operation"
+msgstr "sigprocmask: %d: invalid operation"
+
+#: subst.c:1011
+#, c-format
+msgid "bad substitution: no closing `%s' in %s"
+msgstr "bad substitution: no closing ‘\e[1m%s\e[0m’ in %s"
+
+#: subst.c:2020
+#, c-format
+msgid "%s: cannot assign list to array member"
+msgstr "%s: cannot assign list to array member"
+
+#: subst.c:3516 subst.c:3532
+msgid "cannot make pipe for process substitution"
+msgstr "cannot make pipe for process substitution"
+
+#: subst.c:3563
+msgid "cannot make child for process substitution"
+msgstr "cannot make child for process substitution"
+
+#: subst.c:3608
+#, c-format
+msgid "cannot open named pipe %s for reading"
+msgstr "cannot open named pipe %s for reading"
+
+#: subst.c:3610
+#, c-format
+msgid "cannot open named pipe %s for writing"
+msgstr "cannot open named pipe %s for writing"
+
+#: subst.c:3618
+#, c-format
+msgid "cannout reset nodelay mode for fd %d"
+msgstr "cannout reset nodelay mode for fd %d"
+
+#: subst.c:3628
+#, c-format
+msgid "cannot duplicate named pipe %s as fd %d"
+msgstr "cannot duplicate named pipe %s as fd %d"
+
+#: subst.c:3803
+msgid "cannot make pipe for command substitution"
+msgstr "cannot make pipe for command substitution"
+
+#: subst.c:3832
+msgid "cannot make child for command substitution"
+msgstr "cannot make child for command substitution"
+
+#: subst.c:3849
+msgid "command_substitute: cannot duplicate pipe as fd 1"
+msgstr "command_substitute: cannot duplicate pipe as fd 1"
+
+#: subst.c:4284
+#, c-format
+msgid "%s: parameter null or not set"
+msgstr "%s: parameter null or not set"
+
+#: subst.c:4529
+#, c-format
+msgid "%s: substring expression < 0"
+msgstr "%s: substring expression < 0"
+
+#: subst.c:5209
+#, c-format
+msgid "%s: bad substitution"
+msgstr "%s: bad substitution"
+
+#: subst.c:5283
+#, c-format
+msgid "$%s: cannot assign in this way"
+msgstr "$%s: cannot assign in this way"
+
+#: subst.c:6652
+#, c-format
+msgid "no match: %s"
+msgstr "no match: %s"
+
+#: test.c:154
+msgid "argument expected"
+msgstr "argument expected"
+
+#: test.c:163
+#, c-format
+msgid "%s: integer expression expected"
+msgstr "%s: integer expression expected"
+
+#: test.c:361
+msgid "`)' expected"
+msgstr "‘\e[1m)\e[0m’ expected"
+
+#: test.c:363
+#, c-format
+msgid "`)' expected, found %s"
+msgstr "‘\e[1m)\e[0m’ expected, found %s"
+
+#: test.c:378 test.c:787 test.c:790
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: unary operator expected"
+
+#: test.c:543 test.c:830
+#, c-format
+msgid "%s: binary operator expected"
+msgstr "%s: binary operator expected"
+
+#: test.c:905
+msgid "missing `]'"
+msgstr "missing ‘\e[1m]\e[0m’"
+
+#: trap.c:194
+msgid "invalid signal number"
+msgstr "invalid signal number"
+
+#: trap.c:309
+#, c-format
+msgid "run_pending_traps: bad value in trap_list[%d]: %p"
+msgstr "run_pending_traps: bad value in trap_list[%d]: %p"
+
+#: trap.c:313
+#, c-format
+msgid ""
+"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
+msgstr ""
+"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
+
+#: trap.c:349
+#, c-format
+msgid "trap_handler: bad signal %d"
+msgstr "trap_handler: bad signal %d"
+
+#: variables.c:310
+#, c-format
+msgid "error importing function definition for `%s'"
+msgstr "error importing function definition for ‘\e[1m%s\e[0m’"
+
+#: variables.c:670
+#, c-format
+msgid "shell level (%d) too high, resetting to 1"
+msgstr "shell level (%d) too high, resetting to 1"
+
+#: variables.c:1610
+msgid "make_local_variable: no function context at current scope"
+msgstr "make_local_variable: no function context at current scope"
+
+#: variables.c:2709
+msgid "all_local_variables: no function context at current scope"
+msgstr "all_local_variables: no function context at current scope"
+
+#: variables.c:2923 variables.c:2932
+#, c-format
+msgid "invalid character %d in exportstr for %s"
+msgstr "invalid character %d in exportstr for %s"
+
+#: variables.c:2938
+#, c-format
+msgid "no `=' in exportstr for %s"
+msgstr "no ‘\e[1m=\e[0m’ in exportstr for %s"
+
+#: variables.c:3363
+msgid "pop_var_context: head of shell_variables not a function context"
+msgstr "pop_var_context: head of shell_variables not a function context"
+
+#: variables.c:3376
+msgid "pop_var_context: no global_variables context"
+msgstr "pop_var_context: no global_variables context"
+
+#: variables.c:3442
+msgid "pop_scope: head of shell_variables not a temporary environment scope"
+msgstr "pop_scope: head of shell_variables not a temporary environment scope"
+
+#: version.c:82
+msgid "Copyright (C) 2004 Free Software Foundation, Inc.\n"
+msgstr "Copyright (C) 2004 Free Software Foundation, Inc.\n"
+
+#: xmalloc.c:93
+#, c-format
+msgid "xmalloc: cannot allocate %lu bytes (%lu bytes allocated)"
+msgstr "xmalloc: cannot allocate %lu bytes (%lu bytes allocated)"
+
+#: xmalloc.c:95
+#, c-format
+msgid "xmalloc: cannot allocate %lu bytes"
+msgstr "xmalloc: cannot allocate %lu bytes"
+
+#: xmalloc.c:115
+#, c-format
+msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)"
+msgstr "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)"
+
+#: xmalloc.c:117
+#, c-format
+msgid "xrealloc: cannot allocate %lu bytes"
+msgstr "xrealloc: cannot allocate %lu bytes"
+
+#: xmalloc.c:151
+#, c-format
+msgid "xmalloc: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
+msgstr "xmalloc: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
+
+#: xmalloc.c:153
+#, c-format
+msgid "xmalloc: %s:%d: cannot allocate %lu bytes"
+msgstr "xmalloc: %s:%d: cannot allocate %lu bytes"
+
+#: xmalloc.c:175
+#, c-format
+msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)"
+msgstr "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)"
+
+#: xmalloc.c:177
+#, c-format
+msgid "xrealloc: %s:%d: cannot allocate %lu bytes"
+msgstr "xrealloc: %s:%d: cannot allocate %lu bytes"
+
+#: builtins.c:244
+msgid "`alias' with no arguments or with the -p option prints the list"
+msgstr "‘\e[1malias\e[0m’ with no arguments or with the -p option prints the list"
+
+#: builtins.c:245
+msgid "of aliases in the form alias NAME=VALUE on standard output."
+msgstr "of aliases in the form alias NAME=VALUE on standard output."
+
+#: builtins.c:246
+msgid "Otherwise, an alias is defined for each NAME whose VALUE is given."
+msgstr "Otherwise, an alias is defined for each NAME whose VALUE is given."
+
+#: builtins.c:247
+msgid "A trailing space in VALUE causes the next word to be checked for"
+msgstr "A trailing space in VALUE causes the next word to be checked for"
+
+#: builtins.c:248
+msgid "alias substitution when the alias is expanded.  Alias returns"
+msgstr "alias substitution when the alias is expanded.  Alias returns"
+
+#: builtins.c:249
+msgid "true unless a NAME is given for which no alias has been defined."
+msgstr "true unless a NAME is given for which no alias has been defined."
+
+#: builtins.c:257
+msgid ""
+"Remove NAMEs from the list of defined aliases.  If the -a option is given,"
+msgstr ""
+"Remove NAMEs from the list of defined aliases.  If the -a option is given,"
+
+#: builtins.c:258
+msgid "then remove all alias definitions."
+msgstr "then remove all alias definitions."
+
+#: builtins.c:266
+msgid "Bind a key sequence to a Readline function or a macro, or set"
+msgstr "Bind a key sequence to a Readline function or a macro, or set"
+
+#: builtins.c:267
+msgid "a Readline variable.  The non-option argument syntax is equivalent"
+msgstr "a Readline variable.  The non-option argument syntax is equivalent"
+
+#: builtins.c:268
+msgid "to that found in ~/.inputrc, but must be passed as a single argument:"
+msgstr "to that found in ~/.inputrc, but must be passed as a single argument:"
+
+#: builtins.c:269
+msgid "bind '\"\\C-x\\C-r\": re-read-init-file'."
+msgstr "bind '“\e[1m\\C-x\\C-r\e[0m”: re-read-init-file'."
+
+#: builtins.c:270
+msgid "bind accepts the following options:"
+msgstr "bind accepts the following options:"
+
+#: builtins.c:271
+msgid ""
+"  -m  keymap         Use `keymap' as the keymap for the duration of this"
+msgstr ""
+"  -m  keymap         Use ‘\e[1mkeymap\e[0m’ as the keymap for the duration of "
+"this"
+
+#: builtins.c:272
+msgid "                     command.  Acceptable keymap names are emacs,"
+msgstr "                     command.  Acceptable keymap names are emacs,"
+
+#: builtins.c:273
+msgid ""
+"                     emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,"
+msgstr ""
+"                     emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,"
+
+#: builtins.c:274
+msgid "                     vi-command, and vi-insert."
+msgstr "                     vi-command, and vi-insert."
+
+#: builtins.c:275
+msgid "  -l                 List names of functions."
+msgstr "  -l                 List names of functions."
+
+#: builtins.c:276
+msgid "  -P                 List function names and bindings."
+msgstr "  -P                 List function names and bindings."
+
+#: builtins.c:277
+msgid "  -p                 List functions and bindings in a form that can be"
+msgstr "  -p                 List functions and bindings in a form that can be"
+
+#: builtins.c:278
+msgid "                     reused as input."
+msgstr "                     reused as input."
+
+#: builtins.c:279
+msgid "  -r  keyseq         Remove the binding for KEYSEQ."
+msgstr "  -r  keyseq         Remove the binding for KEYSEQ."
+
+#: builtins.c:280
+msgid "  -x  keyseq:shell-command\tCause SHELL-COMMAND to be executed when"
+msgstr "  -x  keyseq:shell-command\tCause SHELL-COMMAND to be executed when"
+
+#: builtins.c:281
+msgid "\t\t\t\tKEYSEQ is entered."
+msgstr "\t\t\t\tKEYSEQ is entered."
+
+#: builtins.c:282
+msgid "  -f  filename       Read key bindings from FILENAME."
+msgstr "  -f  filename       Read key bindings from FILENAME."
+
+#: builtins.c:283
+msgid "  -q  function-name  Query about which keys invoke the named function."
+msgstr "  -q  function-name  Query about which keys invoke the named function."
+
+#: builtins.c:284
+msgid ""
+"  -u  function-name  Unbind all keys which are bound to the named function."
+msgstr ""
+"  -u  function-name  Unbind all keys which are bound to the named function."
+
+#: builtins.c:285
+msgid "  -V                 List variable names and values"
+msgstr "  -V                 List variable names and values"
+
+#: builtins.c:286
+msgid "  -v                 List variable names and values in a form that can"
+msgstr "  -v                 List variable names and values in a form that can"
+
+#: builtins.c:287
+msgid "                     be reused as input."
+msgstr "                     be reused as input."
+
+#: builtins.c:288
+msgid ""
+"  -S                 List key sequences that invoke macros and their values"
+msgstr ""
+"  -S                 List key sequences that invoke macros and their values"
+
+#: builtins.c:289
+msgid ""
+"  -s                 List key sequences that invoke macros and their values"
+msgstr ""
+"  -s                 List key sequences that invoke macros and their values"
+
+#: builtins.c:290
+msgid "                     in a form that can be reused as input."
+msgstr "                     in a form that can be reused as input."
+
+#: builtins.c:297
+msgid "Exit from within a FOR, WHILE or UNTIL loop.  If N is specified,"
+msgstr "Exit from within a FOR, WHILE or UNTIL loop.  If N is specified,"
+
+#: builtins.c:298
+msgid "break N levels."
+msgstr "break N levels."
+
+#: builtins.c:304
+msgid "Resume the next iteration of the enclosing FOR, WHILE or UNTIL loop."
+msgstr "Resume the next iteration of the enclosing FOR, WHILE or UNTIL loop."
+
+#: builtins.c:305
+msgid "If N is specified, resume at the N-th enclosing loop."
+msgstr "If N is specified, resume at the N-th enclosing loop."
+
+#: builtins.c:311
+msgid "Run a shell builtin.  This is useful when you wish to rename a"
+msgstr "Run a shell builtin.  This is useful when you wish to rename a"
+
+#: builtins.c:312
+msgid "shell builtin to be a function, but need the functionality of the"
+msgstr "shell builtin to be a function, but need the functionality of the"
+
+#: builtins.c:313
+msgid "builtin within the function itself."
+msgstr "builtin within the function itself."
+
+#: builtins.c:334
+msgid "Change the current directory to DIR.  The variable $HOME is the"
+msgstr "Change the current directory to DIR.  The variable $HOME is the"
+
+#: builtins.c:335
+msgid "default DIR.  The variable CDPATH defines the search path for"
+msgstr "default DIR.  The variable CDPATH defines the search path for"
+
+#: builtins.c:336
+msgid "the directory containing DIR.  Alternative directory names in CDPATH"
+msgstr "the directory containing DIR.  Alternative directory names in CDPATH"
+
+#: builtins.c:337
+msgid "are separated by a colon (:).  A null directory name is the same as"
+msgstr "are separated by a colon (:).  A null directory name is the same as"
+
+#: builtins.c:338
+msgid "the current directory, i.e. `.'.  If DIR begins with a slash (/),"
+msgstr ""
+"the current directory, i.e. ‘\e[1m.\e[0m’.  If DIR begins with a slash (/),"
+
+#: builtins.c:339
+msgid "then CDPATH is not used.  If the directory is not found, and the"
+msgstr "then CDPATH is not used.  If the directory is not found, and the"
+
+#: builtins.c:340
+msgid "shell option `cdable_vars' is set, then try the word as a variable"
+msgstr ""
+"shell option ‘\e[1mcdable_vars\e[0m’ is set, then try the word as a variable"
+
+#: builtins.c:341
+msgid "name.  If that variable has a value, then cd to the value of that"
+msgstr "name.  If that variable has a value, then cd to the value of that"
+
+#: builtins.c:342
+msgid "variable.  The -P option says to use the physical directory structure"
+msgstr "variable.  The -P option says to use the physical directory structure"
+
+#: builtins.c:343
+msgid ""
+"instead of following symbolic links; the -L option forces symbolic links"
+msgstr ""
+"instead of following symbolic links; the -L option forces symbolic links"
+
+#: builtins.c:344
+msgid "to be followed."
+msgstr "to be followed."
+
+#: builtins.c:350
+msgid "Print the current working directory.  With the -P option, pwd prints"
+msgstr "Print the current working directory.  With the -P option, pwd prints"
+
+#: builtins.c:351
+msgid "the physical directory, without any symbolic links; the -L option"
+msgstr "the physical directory, without any symbolic links; the -L option"
+
+#: builtins.c:352
+msgid "makes pwd follow symbolic links."
+msgstr "makes pwd follow symbolic links."
+
+#: builtins.c:358
+msgid "No effect; the command does nothing.  A zero exit code is returned."
+msgstr "No effect; the command does nothing.  A zero exit code is returned."
+
+#: builtins.c:364
+msgid "Return a successful result."
+msgstr "Return a successful result."
+
+#: builtins.c:370
+msgid "Return an unsuccessful result."
+msgstr "Return an unsuccessful result."
+
+#: builtins.c:376
+msgid "Runs COMMAND with ARGS ignoring shell functions.  If you have a shell"
+msgstr "Runs COMMAND with ARGS ignoring shell functions.  If you have a shell"
+
+#: builtins.c:377
+msgid "function called `ls', and you wish to call the command `ls', you can"
+msgstr ""
+"function called ‘\e[1mls\e[0m’, and you wish to call the command ‘\e[1mls\e[0m’, you "
+"can"
+
+#: builtins.c:378
+msgid "say \"command ls\".  If the -p option is given, a default value is used"
+msgstr ""
+"say “\e[1mcommand ls\e[0m”.  If the -p option is given, a default value is used"
+
+#: builtins.c:379
+msgid "for PATH that is guaranteed to find all of the standard utilities.  If"
+msgstr "for PATH that is guaranteed to find all of the standard utilities.  If"
+
+#: builtins.c:380
+msgid "the -V or -v option is given, a string is printed describing COMMAND."
+msgstr "the -V or -v option is given, a string is printed describing COMMAND."
+
+#: builtins.c:381
+msgid "The -V option produces a more verbose description."
+msgstr "The -V option produces a more verbose description."
+
+#: builtins.c:387
+msgid "Declare variables and/or give them attributes.  If no NAMEs are"
+msgstr "Declare variables and/or give them attributes.  If no NAMEs are"
+
+#: builtins.c:388
+msgid "given, then display the values of variables instead.  The -p option"
+msgstr "given, then display the values of variables instead.  The -p option"
+
+#: builtins.c:389
+msgid "will display the attributes and values of each NAME."
+msgstr "will display the attributes and values of each NAME."
+
+#: builtins.c:391
+msgid "The flags are:"
+msgstr "The flags are:"
+
+#: builtins.c:393
+msgid "  -a\tto make NAMEs arrays (if supported)"
+msgstr "  -a\tto make NAMEs arrays (if supported)"
+
+#: builtins.c:394
+msgid "  -f\tto select from among function names only"
+msgstr "  -f\tto select from among function names only"
+
+#: builtins.c:395
+msgid ""
+"  -F\tto display function names (and line number and source file name if"
+msgstr ""
+"  -F\tto display function names (and line number and source file name if"
+
+#: builtins.c:396
+msgid "\tdebugging) without definitions"
+msgstr "\tdebugging) without definitions"
+
+#: builtins.c:397
+msgid "  -i\tto make NAMEs have the `integer' attribute"
+msgstr "  -i\tto make NAMEs have the ‘\e[1minteger\e[0m’ attribute"
+
+#: builtins.c:398
+msgid "  -r\tto make NAMEs readonly"
+msgstr "  -r\tto make NAMEs readonly"
+
+#: builtins.c:399
+msgid "  -t\tto make NAMEs have the `trace' attribute"
+msgstr "  -t\tto make NAMEs have the ‘\e[1mtrace\e[0m’ attribute"
+
+#: builtins.c:400
+msgid "  -x\tto make NAMEs export"
+msgstr "  -x\tto make NAMEs export"
+
+#: builtins.c:402
+msgid "Variables with the integer attribute have arithmetic evaluation (see"
+msgstr "Variables with the integer attribute have arithmetic evaluation (see"
+
+#: builtins.c:403
+msgid "`let') done when the variable is assigned to."
+msgstr "‘\e[1mlet\e[0m’) done when the variable is assigned to."
+
+#: builtins.c:405
+msgid "When displaying values of variables, -f displays a function's name"
+msgstr "When displaying values of variables, -f displays a function's name"
+
+#: builtins.c:406
+msgid "and definition.  The -F option restricts the display to function"
+msgstr "and definition.  The -F option restricts the display to function"
+
+#: builtins.c:407
+msgid "name only."
+msgstr "name only."
+
+#: builtins.c:409
+msgid "Using `+' instead of `-' turns off the given attribute instead.  When"
+msgstr ""
+"Using ‘\e[1m+\e[0m’ instead of ‘\e[1m-\e[0m’ turns off the given attribute instead.  "
+"When"
+
+#: builtins.c:410
+msgid "used in a function, makes NAMEs local, as with the `local' command."
+msgstr ""
+"used in a function, makes NAMEs local, as with the ‘\e[1mlocal\e[0m’ command."
+
+#: builtins.c:416
+msgid "Obsolete.  See `declare'."
+msgstr "Obsolete.  See ‘\e[1mdeclare\e[0m’."
+
+#: builtins.c:422
+msgid "Create a local variable called NAME, and give it VALUE.  LOCAL"
+msgstr "Create a local variable called NAME, and give it VALUE.  LOCAL"
+
+#: builtins.c:423
+msgid "can only be used within a function; it makes the variable NAME"
+msgstr "can only be used within a function; it makes the variable NAME"
+
+#: builtins.c:424
+msgid "have a visible scope restricted to that function and its children."
+msgstr "have a visible scope restricted to that function and its children."
+
+#: builtins.c:431
+msgid "Output the ARGs.  If -n is specified, the trailing newline is"
+msgstr "Output the ARGs.  If -n is specified, the trailing newline is"
+
+#: builtins.c:432
+msgid "suppressed.  If the -e option is given, interpretation of the"
+msgstr "suppressed.  If the -e option is given, interpretation of the"
+
+#: builtins.c:433
+msgid "following backslash-escaped characters is turned on:"
+msgstr "following backslash-escaped characters is turned on:"
+
+#: builtins.c:434
+msgid "\t\\a\talert (bell)"
+msgstr "\t\\a\talert (bell)"
+
+#: builtins.c:435
+msgid "\t\\b\tbackspace"
+msgstr "\t\\b\tbackspace"
+
+#: builtins.c:436
+msgid "\t\\c\tsuppress trailing newline"
+msgstr "\t\\c\tsuppress trailing newline"
+
+#: builtins.c:437
+msgid "\t\\E\tescape character"
+msgstr "\t\\E\tescape character"
+
+#: builtins.c:438
+msgid "\t\\f\tform feed"
+msgstr "\t\\f\tform feed"
+
+#: builtins.c:439
+msgid "\t\\n\tnew line"
+msgstr "\t\\n\tnew line"
+
+#: builtins.c:440
+msgid "\t\\r\tcarriage return"
+msgstr "\t\\r\tcarriage return"
+
+#: builtins.c:441
+msgid "\t\\t\thorizontal tab"
+msgstr "\t\\t\thorizontal tab"
+
+#: builtins.c:442
+msgid "\t\\v\tvertical tab"
+msgstr "\t\\v\tvertical tab"
+
+#: builtins.c:443
+msgid "\t\\\\\tbackslash"
+msgstr "\t\\\\\tbackslash"
+
+#: builtins.c:444
+msgid "\t\\num\tthe character whose ASCII code is NUM (octal)."
+msgstr "\t\\num\tthe character whose ASCII code is NUM (octal)."
+
+#: builtins.c:446
+msgid "You can explicitly turn off the interpretation of the above characters"
+msgstr "You can explicitly turn off the interpretation of the above characters"
+
+#: builtins.c:447
+msgid "with the -E option."
+msgstr "with the -E option."
+
+#: builtins.c:455
+msgid ""
+"Output the ARGs.  If -n is specified, the trailing newline is suppressed."
+msgstr ""
+"Output the ARGs.  If -n is specified, the trailing newline is suppressed."
+
+#: builtins.c:462
+msgid "Enable and disable builtin shell commands.  This allows"
+msgstr "Enable and disable builtin shell commands.  This allows"
+
+#: builtins.c:463
+msgid "you to use a disk command which has the same name as a shell"
+msgstr "you to use a disk command which has the same name as a shell"
+
+#: builtins.c:464
+msgid "builtin without specifying a full pathname.  If -n is used, the"
+msgstr "builtin without specifying a full pathname.  If -n is used, the"
+
+#: builtins.c:465
+msgid "NAMEs become disabled; otherwise NAMEs are enabled.  For example,"
+msgstr "NAMEs become disabled; otherwise NAMEs are enabled.  For example,"
+
+#: builtins.c:466
+msgid "to use the `test' found in $PATH instead of the shell builtin"
+msgstr "to use the ‘\e[1mtest\e[0m’ found in $PATH instead of the shell builtin"
+
+#: builtins.c:467
+msgid "version, type `enable -n test'.  On systems supporting dynamic"
+msgstr "version, type ‘\e[1menable -n test\e[0m’.  On systems supporting dynamic"
+
+#: builtins.c:468
+msgid "loading, the -f option may be used to load new builtins from the"
+msgstr "loading, the -f option may be used to load new builtins from the"
+
+#: builtins.c:469
+msgid "shared object FILENAME.  The -d option will delete a builtin"
+msgstr "shared object FILENAME.  The -d option will delete a builtin"
+
+#: builtins.c:470
+msgid "previously loaded with -f.  If no non-option names are given, or"
+msgstr "previously loaded with -f.  If no non-option names are given, or"
+
+#: builtins.c:471
+msgid "the -p option is supplied, a list of builtins is printed.  The"
+msgstr "the -p option is supplied, a list of builtins is printed.  The"
+
+#: builtins.c:472
+msgid "-a option means to print every builtin with an indication of whether"
+msgstr "-a option means to print every builtin with an indication of whether"
+
+#: builtins.c:473
+msgid ""
+"or not it is enabled.  The -s option restricts the output to the POSIX.2"
+msgstr ""
+"or not it is enabled.  The -s option restricts the output to the POSIX.2"
+
+#: builtins.c:474
+msgid ""
+"`special' builtins.  The -n option displays a list of all disabled builtins."
+msgstr ""
+"‘\e[1mspecial\e[0m’ builtins.  The -n option displays a list of all disabled "
+"builtins."
+
+#: builtins.c:480
+msgid "Read ARGs as input to the shell and execute the resulting command(s)."
+msgstr "Read ARGs as input to the shell and execute the resulting command(s)."
+
+#: builtins.c:486
+msgid "Getopts is used by shell procedures to parse positional parameters."
+msgstr "Getopts is used by shell procedures to parse positional parameters."
+
+#: builtins.c:488
+msgid "OPTSTRING contains the option letters to be recognized; if a letter"
+msgstr "OPTSTRING contains the option letters to be recognized; if a letter"
+
+#: builtins.c:489
+msgid "is followed by a colon, the option is expected to have an argument,"
+msgstr "is followed by a colon, the option is expected to have an argument,"
+
+#: builtins.c:490
+msgid "which should be separated from it by white space."
+msgstr "which should be separated from it by white space."
+
+#: builtins.c:492
+msgid "Each time it is invoked, getopts will place the next option in the"
+msgstr "Each time it is invoked, getopts will place the next option in the"
+
+#: builtins.c:493
+msgid "shell variable $name, initializing name if it does not exist, and"
+msgstr "shell variable $name, initializing name if it does not exist, and"
+
+#: builtins.c:494
+msgid "the index of the next argument to be processed into the shell"
+msgstr "the index of the next argument to be processed into the shell"
+
+#: builtins.c:495
+msgid "variable OPTIND.  OPTIND is initialized to 1 each time the shell or"
+msgstr "variable OPTIND.  OPTIND is initialized to 1 each time the shell or"
+
+#: builtins.c:496
+msgid "a shell script is invoked.  When an option requires an argument,"
+msgstr "a shell script is invoked.  When an option requires an argument,"
+
+#: builtins.c:497
+msgid "getopts places that argument into the shell variable OPTARG."
+msgstr "getopts places that argument into the shell variable OPTARG."
+
+#: builtins.c:499
+msgid "getopts reports errors in one of two ways.  If the first character"
+msgstr "getopts reports errors in one of two ways.  If the first character"
+
+#: builtins.c:500
+msgid "of OPTSTRING is a colon, getopts uses silent error reporting.  In"
+msgstr "of OPTSTRING is a colon, getopts uses silent error reporting.  In"
+
+#: builtins.c:501
+msgid "this mode, no error messages are printed.  If an invalid option is"
+msgstr "this mode, no error messages are printed.  If an invalid option is"
+
+#: builtins.c:502
+msgid "seen, getopts places the option character found into OPTARG.  If a"
+msgstr "seen, getopts places the option character found into OPTARG.  If a"
+
+#: builtins.c:503
+msgid "required argument is not found, getopts places a ':' into NAME and"
+msgstr ""
+"required argument is not found, getopts places a ‘\e[1m:\e[0m’ into NAME and"
+
+#: builtins.c:504
+msgid "sets OPTARG to the option character found.  If getopts is not in"
+msgstr "sets OPTARG to the option character found.  If getopts is not in"
+
+#: builtins.c:505
+msgid "silent mode, and an invalid option is seen, getopts places '?' into"
+msgstr ""
+"silent mode, and an invalid option is seen, getopts places ‘\e[1m?\e[0m’ into"
+
+#: builtins.c:506
+msgid "NAME and unsets OPTARG.  If a required argument is not found, a '?'"
+msgstr ""
+"NAME and unsets OPTARG.  If a required argument is not found, a ‘\e[1m?\e[0m’"
+
+#: builtins.c:507
+msgid "is placed in NAME, OPTARG is unset, and a diagnostic message is"
+msgstr "is placed in NAME, OPTARG is unset, and a diagnostic message is"
+
+#: builtins.c:508
+msgid "printed."
+msgstr "printed."
+
+#: builtins.c:510
+msgid "If the shell variable OPTERR has the value 0, getopts disables the"
+msgstr "If the shell variable OPTERR has the value 0, getopts disables the"
+
+#: builtins.c:511
+msgid "printing of error messages, even if the first character of"
+msgstr "printing of error messages, even if the first character of"
+
+#: builtins.c:512
+msgid "OPTSTRING is not a colon.  OPTERR has the value 1 by default."
+msgstr "OPTSTRING is not a colon.  OPTERR has the value 1 by default."
+
+#: builtins.c:514
+msgid "Getopts normally parses the positional parameters ($0 - $9), but if"
+msgstr "Getopts normally parses the positional parameters ($0 - $9), but if"
+
+#: builtins.c:515
+msgid "more arguments are given, they are parsed instead."
+msgstr "more arguments are given, they are parsed instead."
+
+#: builtins.c:521
+msgid "Exec FILE, replacing this shell with the specified program."
+msgstr "Exec FILE, replacing this shell with the specified program."
+
+#: builtins.c:522
+msgid "If FILE is not specified, the redirections take effect in this"
+msgstr "If FILE is not specified, the redirections take effect in this"
+
+#: builtins.c:523
+msgid "shell.  If the first argument is `-l', then place a dash in the"
+msgstr "shell.  If the first argument is ‘\e[1m-l\e[0m’, then place a dash in the"
+
+#: builtins.c:524
+msgid "zeroth arg passed to FILE, as login does.  If the `-c' option"
+msgstr "zeroth arg passed to FILE, as login does.  If the ‘\e[1m-c\e[0m’ option"
+
+#: builtins.c:525
+msgid "is supplied, FILE is executed with a null environment.  The `-a'"
+msgstr "is supplied, FILE is executed with a null environment.  The ‘\e[1m-a\e[0m’"
+
+#: builtins.c:526
+msgid "option means to make set argv[0] of the executed process to NAME."
+msgstr "option means to make set argv[0] of the executed process to NAME."
+
+#: builtins.c:527
+msgid "If the file cannot be executed and the shell is not interactive,"
+msgstr "If the file cannot be executed and the shell is not interactive,"
+
+#: builtins.c:528
+msgid "then the shell exits, unless the shell option `execfail' is set."
+msgstr "then the shell exits, unless the shell option ‘\e[1mexecfail\e[0m’ is set."
+
+#: builtins.c:534
+msgid "Exit the shell with a status of N.  If N is omitted, the exit status"
+msgstr "Exit the shell with a status of N.  If N is omitted, the exit status"
+
+#: builtins.c:535
+msgid "is that of the last command executed."
+msgstr "is that of the last command executed."
+
+#: builtins.c:541
+msgid "Logout of a login shell."
+msgstr "Logout of a login shell."
+
+#: builtins.c:548
+msgid ""
+"fc is used to list or edit and re-execute commands from the history list."
+msgstr ""
+"fc is used to list or edit and re-execute commands from the history list."
+
+#: builtins.c:549
+msgid "FIRST and LAST can be numbers specifying the range, or FIRST can be a"
+msgstr "FIRST and LAST can be numbers specifying the range, or FIRST can be a"
+
+#: builtins.c:550
+msgid "string, which means the most recent command beginning with that"
+msgstr "string, which means the most recent command beginning with that"
+
+#: builtins.c:551
+msgid "string."
+msgstr "string."
+
+#: builtins.c:553
+msgid ""
+"   -e ENAME selects which editor to use.  Default is FCEDIT, then EDITOR,"
+msgstr ""
+"   -e ENAME selects which editor to use.  Default is FCEDIT, then EDITOR,"
+
+#: builtins.c:554
+msgid "      then vi."
+msgstr "      then vi."
+
+#: builtins.c:556
+msgid "   -l means list lines instead of editing."
+msgstr "   -l means list lines instead of editing."
+
+#: builtins.c:557
+msgid "   -n means no line numbers listed."
+msgstr "   -n means no line numbers listed."
+
+#: builtins.c:558
+msgid ""
+"   -r means reverse the order of the lines (making it newest listed first)."
+msgstr ""
+"   -r means reverse the order of the lines (making it newest listed first)."
+
+#: builtins.c:560
+msgid "With the `fc -s [pat=rep ...] [command]' format, the command is"
+msgstr "With the ‘\e[1mfc -s [pat=rep ...] [command]\e[0m’ format, the command is"
+
+#: builtins.c:561
+msgid "re-executed after the substitution OLD=NEW is performed."
+msgstr "re-executed after the substitution OLD=NEW is performed."
+
+#: builtins.c:563
+msgid "A useful alias to use with this is r='fc -s', so that typing `r cc'"
+msgstr ""
+"A useful alias to use with this is r='fc -s', so that typing ‘\e[1mr cc\e[0m’"
+
+#: builtins.c:564
+msgid "runs the last command beginning with `cc' and typing `r' re-executes"
+msgstr ""
+"runs the last command beginning with ‘\e[1mcc\e[0m’ and typing ‘\e[1mr\e[0m’ re-"
+"executes"
+
+#: builtins.c:565
+msgid "the last command."
+msgstr "the last command."
+
+#: builtins.c:573
+msgid "Place JOB_SPEC in the foreground, and make it the current job.  If"
+msgstr "Place JOB_SPEC in the foreground, and make it the current job.  If"
+
+#: builtins.c:574
+msgid "JOB_SPEC is not present, the shell's notion of the current job is"
+msgstr "JOB_SPEC is not present, the shell's notion of the current job is"
+
+#: builtins.c:575
+msgid "used."
+msgstr "used."
+
+#: builtins.c:583
+msgid "Place JOB_SPEC in the background, as if it had been started with"
+msgstr "Place JOB_SPEC in the background, as if it had been started with"
+
+#: builtins.c:584
+msgid "`&'.  If JOB_SPEC is not present, the shell's notion of the current"
+msgstr ""
+"‘\e[1m&\e[0m’.  If JOB_SPEC is not present, the shell's notion of the current"
+
+#: builtins.c:585
+msgid "job is used."
+msgstr "job is used."
+
+#: builtins.c:592
+msgid "For each NAME, the full pathname of the command is determined and"
+msgstr "For each NAME, the full pathname of the command is determined and"
+
+#: builtins.c:593
+msgid "remembered.  If the -p option is supplied, PATHNAME is used as the"
+msgstr "remembered.  If the -p option is supplied, PATHNAME is used as the"
+
+#: builtins.c:594
+msgid "full pathname of NAME, and no path search is performed.  The -r"
+msgstr "full pathname of NAME, and no path search is performed.  The -r"
+
+#: builtins.c:595
+msgid "option causes the shell to forget all remembered locations.  The -d"
+msgstr "option causes the shell to forget all remembered locations.  The -d"
+
+#: builtins.c:596
+msgid "option causes the shell to forget the remembered location of each NAME."
+msgstr ""
+"option causes the shell to forget the remembered location of each NAME."
+
+#: builtins.c:597
+msgid "If the -t option is supplied the full pathname to which each NAME"
+msgstr "If the -t option is supplied the full pathname to which each NAME"
+
+#: builtins.c:598
+msgid "corresponds is printed.  If multiple NAME arguments are supplied with"
+msgstr "corresponds is printed.  If multiple NAME arguments are supplied with"
+
+#: builtins.c:599
+msgid "-t, the NAME is printed before the hashed full pathname.  The -l option"
+msgstr ""
+"-t, the NAME is printed before the hashed full pathname.  The -l option"
+
+#: builtins.c:600
+msgid "causes output to be displayed in a format that may be reused as input."
+msgstr "causes output to be displayed in a format that may be reused as input."
+
+#: builtins.c:601
+msgid ""
+"If no arguments are given, information about remembered commands is "
+"displayed."
+msgstr ""
+"If no arguments are given, information about remembered commands is "
+"displayed."
+
+#: builtins.c:608
+msgid "Display helpful information about builtin commands.  If PATTERN is"
+msgstr "Display helpful information about builtin commands.  If PATTERN is"
+
+#: builtins.c:609
+msgid "specified, gives detailed help on all commands matching PATTERN,"
+msgstr "specified, gives detailed help on all commands matching PATTERN,"
+
+#: builtins.c:610
+msgid "otherwise a list of the builtins is printed.  The -s option"
+msgstr "otherwise a list of the builtins is printed.  The -s option"
+
+#: builtins.c:611
+msgid "restricts the output for each builtin command matching PATTERN to"
+msgstr "restricts the output for each builtin command matching PATTERN to"
+
+#: builtins.c:612
+msgid "a short usage synopsis."
+msgstr "a short usage synopsis."
+
+#: builtins.c:620
+msgid "Display the history list with line numbers.  Lines listed with"
+msgstr "Display the history list with line numbers.  Lines listed with"
+
+#: builtins.c:621
+msgid "with a `*' have been modified.  Argument of N says to list only"
+msgstr "with a ‘\e[1m*\e[0m’ have been modified.  Argument of N says to list only"
+
+#: builtins.c:622
+msgid "the last N lines.  The `-c' option causes the history list to be"
+msgstr "the last N lines.  The ‘\e[1m-c\e[0m’ option causes the history list to be"
+
+#: builtins.c:623
+msgid "cleared by deleting all of the entries.  The `-d' option deletes"
+msgstr "cleared by deleting all of the entries.  The ‘\e[1m-d\e[0m’ option deletes"
+
+#: builtins.c:624
+msgid "the history entry at offset OFFSET.  The `-w' option writes out the"
+msgstr ""
+"the history entry at offset OFFSET.  The ‘\e[1m-w\e[0m’ option writes out the"
+
+#: builtins.c:625
+msgid "current history to the history file;  `-r' means to read the file and"
+msgstr ""
+"current history to the history file;  ‘\e[1m-r\e[0m’ means to read the file and"
+
+#: builtins.c:626
+msgid "append the contents to the history list instead.  `-a' means"
+msgstr "append the contents to the history list instead.  ‘\e[1m-a\e[0m’ means"
+
+#: builtins.c:627
+msgid "to append history lines from this session to the history file."
+msgstr "to append history lines from this session to the history file."
+
+#: builtins.c:628
+msgid "Argument `-n' means to read all history lines not already read"
+msgstr "Argument ‘\e[1m-n\e[0m’ means to read all history lines not already read"
+
+#: builtins.c:629
+msgid "from the history file and append them to the history list."
+msgstr "from the history file and append them to the history list."
+
+#: builtins.c:631
+msgid "If FILENAME is given, then that is used as the history file else"
+msgstr "If FILENAME is given, then that is used as the history file else"
+
+#: builtins.c:632
+msgid "if $HISTFILE has a value, that is used, else ~/.bash_history."
+msgstr "if $HISTFILE has a value, that is used, else ~/.bash_history."
+
+#: builtins.c:633
+msgid "If the -s option is supplied, the non-option ARGs are appended to"
+msgstr "If the -s option is supplied, the non-option ARGs are appended to"
+
+#: builtins.c:634
+msgid "the history list as a single entry.  The -p option means to perform"
+msgstr "the history list as a single entry.  The -p option means to perform"
+
+#: builtins.c:635
+msgid "history expansion on each ARG and display the result, without storing"
+msgstr "history expansion on each ARG and display the result, without storing"
+
+#: builtins.c:636
+msgid "anything in the history list."
+msgstr "anything in the history list."
+
+#: builtins.c:638
+msgid "If the $HISTTIMEFORMAT variable is set and not null, its value is used"
+msgstr "If the $HISTTIMEFORMAT variable is set and not null, its value is used"
+
+#: builtins.c:639
+msgid "as a format string for strftime(3) to print the time stamp associated"
+msgstr "as a format string for strftime(3) to print the time stamp associated"
+
+#: builtins.c:640
+msgid ""
+"with each displayed history entry.  No time stamps are printed otherwise."
+msgstr ""
+"with each displayed history entry.  No time stamps are printed otherwise."
+
+#: builtins.c:648
+msgid "Lists the active jobs.  The -l option lists process id's in addition"
+msgstr "Lists the active jobs.  The -l option lists process id's in addition"
+
+#: builtins.c:649
+msgid "to the normal information; the -p option lists process id's only."
+msgstr "to the normal information; the -p option lists process id's only."
+
+#: builtins.c:650
+msgid "If -n is given, only processes that have changed status since the last"
+msgstr "If -n is given, only processes that have changed status since the last"
+
+#: builtins.c:651
+msgid "notification are printed.  JOBSPEC restricts output to that job.  The"
+msgstr "notification are printed.  JOBSPEC restricts output to that job.  The"
+
+#: builtins.c:652
+msgid "-r and -s options restrict output to running and stopped jobs only,"
+msgstr "-r and -s options restrict output to running and stopped jobs only,"
+
+#: builtins.c:653
+msgid "respectively.  Without options, the status of all active jobs is"
+msgstr "respectively.  Without options, the status of all active jobs is"
+
+#: builtins.c:654
+msgid "printed.  If -x is given, COMMAND is run after all job specifications"
+msgstr "printed.  If -x is given, COMMAND is run after all job specifications"
+
+#: builtins.c:655
+msgid ""
+"that appear in ARGS have been replaced with the process ID of that job's"
+msgstr ""
+"that appear in ARGS have been replaced with the process ID of that job's"
+
+#: builtins.c:656
+msgid "process group leader."
+msgstr "process group leader."
+
+#: builtins.c:664
+msgid ""
+"By default, removes each JOBSPEC argument from the table of active jobs."
+msgstr ""
+"By default, removes each JOBSPEC argument from the table of active jobs."
+
+#: builtins.c:665
+msgid ""
+"If the -h option is given, the job is not removed from the table, but is"
+msgstr ""
+"If the -h option is given, the job is not removed from the table, but is"
+
+#: builtins.c:666
+msgid "marked so that SIGHUP is not sent to the job if the shell receives a"
+msgstr "marked so that SIGHUP is not sent to the job if the shell receives a"
+
+#: builtins.c:667
+msgid ""
+"SIGHUP.  The -a option, when JOBSPEC is not supplied, means to remove all"
+msgstr ""
+"SIGHUP.  The -a option, when JOBSPEC is not supplied, means to remove all"
+
+#: builtins.c:668
+msgid ""
+"jobs from the job table; the -r option means to remove only running jobs."
+msgstr ""
+"jobs from the job table; the -r option means to remove only running jobs."
+
+#: builtins.c:675
+msgid "Send the processes named by PID (or JOB) the signal SIGSPEC.  If"
+msgstr "Send the processes named by PID (or JOB) the signal SIGSPEC.  If"
+
+#: builtins.c:676
+msgid "SIGSPEC is not present, then SIGTERM is assumed.  An argument of `-l'"
+msgstr ""
+"SIGSPEC is not present, then SIGTERM is assumed.  An argument of ‘\e[1m-l\e[0m’"
+
+#: builtins.c:677
+msgid "lists the signal names; if arguments follow `-l' they are assumed to"
+msgstr ""
+"lists the signal names; if arguments follow ‘\e[1m-l\e[0m’ they are assumed to"
+
+#: builtins.c:678
+msgid "be signal numbers for which names should be listed.  Kill is a shell"
+msgstr "be signal numbers for which names should be listed.  Kill is a shell"
+
+#: builtins.c:679
+msgid "builtin for two reasons: it allows job IDs to be used instead of"
+msgstr "builtin for two reasons: it allows job IDs to be used instead of"
+
+#: builtins.c:680
+msgid "process IDs, and, if you have reached the limit on processes that"
+msgstr "process IDs, and, if you have reached the limit on processes that"
+
+#: builtins.c:681
+msgid "you can create, you don't have to start a process to kill another one."
+msgstr "you can create, you don't have to start a process to kill another one."
+
+#: builtins.c:687
+msgid "Each ARG is an arithmetic expression to be evaluated.  Evaluation"
+msgstr "Each ARG is an arithmetic expression to be evaluated.  Evaluation"
+
+#: builtins.c:688
+msgid "is done in fixed-width integers with no check for overflow, though"
+msgstr "is done in fixed-width integers with no check for overflow, though"
+
+#: builtins.c:689
+msgid "division by 0 is trapped and flagged as an error.  The following"
+msgstr "division by 0 is trapped and flagged as an error.  The following"
+
+#: builtins.c:690
+msgid "list of operators is grouped into levels of equal-precedence operators."
+msgstr ""
+"list of operators is grouped into levels of equal-precedence operators."
+
+#: builtins.c:691
+msgid "The levels are listed in order of decreasing precedence."
+msgstr "The levels are listed in order of decreasing precedence."
+
+#: builtins.c:693
+msgid "\tid++, id--\tvariable post-increment, post-decrement"
+msgstr "\tid++, id--\tvariable post-increment, post-decrement"
+
+#: builtins.c:694
+msgid "\t++id, --id\tvariable pre-increment, pre-decrement"
+msgstr "\t++id, --id\tvariable pre-increment, pre-decrement"
+
+#: builtins.c:695
+msgid "\t-, +\t\tunary minus, plus"
+msgstr "\t-, +\t\tunary minus, plus"
+
+#: builtins.c:696
+msgid "\t!, ~\t\tlogical and bitwise negation"
+msgstr "\t!, ~\t\tlogical and bitwise negation"
+
+#: builtins.c:697
+msgid "\t**\t\texponentiation"
+msgstr "\t**\t\texponentiation"
+
+#: builtins.c:698
+msgid "\t*, /, %\t\tmultiplication, division, remainder"
+msgstr "\t*, /, %\t\tmultiplication, division, remainder"
+
+#: builtins.c:699
+msgid "\t+, -\t\taddition, subtraction"
+msgstr "\t+, -\t\taddition, subtraction"
+
+#: builtins.c:700
+msgid "\t<<, >>\t\tleft and right bitwise shifts"
+msgstr "\t<<, >>\t\tleft and right bitwise shifts"
+
+#: builtins.c:701
+msgid "\t<=, >=, <, >\tcomparison"
+msgstr "\t<=, >=, <, >\tcomparison"
+
+#: builtins.c:702
+msgid "\t==, !=\t\tequality, inequality"
+msgstr "\t==, !=\t\tequality, inequality"
+
+#: builtins.c:703
+msgid "\t&\t\tbitwise AND"
+msgstr "\t&\t\tbitwise AND"
+
+#: builtins.c:704
+msgid "\t^\t\tbitwise XOR"
+msgstr "\t^\t\tbitwise XOR"
+
+#: builtins.c:705
+msgid "\t|\t\tbitwise OR"
+msgstr "\t|\t\tbitwise OR"
+
+#: builtins.c:706
+msgid "\t&&\t\tlogical AND"
+msgstr "\t&&\t\tlogical AND"
+
+#: builtins.c:707
+msgid "\t||\t\tlogical OR"
+msgstr "\t||\t\tlogical OR"
+
+#: builtins.c:708
+msgid "\texpr ? expr : expr"
+msgstr "\texpr ? expr : expr"
+
+#: builtins.c:709
+msgid "\t\t\tconditional operator"
+msgstr "\t\t\tconditional operator"
+
+#: builtins.c:710
+msgid "\t=, *=, /=, %=,"
+msgstr "\t=, *=, /=, %=,"
+
+#: builtins.c:711
+msgid "\t+=, -=, <<=, >>=,"
+msgstr "\t+=, -=, <<=, >>=,"
+
+#: builtins.c:712
+msgid "\t&=, ^=, |=\tassignment"
+msgstr "\t&=, ^=, |=\tassignment"
+
+#: builtins.c:714
+msgid "Shell variables are allowed as operands.  The name of the variable"
+msgstr "Shell variables are allowed as operands.  The name of the variable"
+
+#: builtins.c:715
+msgid "is replaced by its value (coerced to a fixed-width integer) within"
+msgstr "is replaced by its value (coerced to a fixed-width integer) within"
+
+#: builtins.c:716
+msgid "an expression.  The variable need not have its integer attribute"
+msgstr "an expression.  The variable need not have its integer attribute"
+
+#: builtins.c:717
+msgid "turned on to be used in an expression."
+msgstr "turned on to be used in an expression."
+
+#: builtins.c:719
+msgid "Operators are evaluated in order of precedence.  Sub-expressions in"
+msgstr "Operators are evaluated in order of precedence.  Sub-expressions in"
+
+#: builtins.c:720
+msgid "parentheses are evaluated first and may override the precedence"
+msgstr "parentheses are evaluated first and may override the precedence"
+
+#: builtins.c:721
+msgid "rules above."
+msgstr "rules above."
+
+#: builtins.c:723
+msgid "If the last ARG evaluates to 0, let returns 1; 0 is returned"
+msgstr "If the last ARG evaluates to 0, let returns 1; 0 is returned"
+
+#: builtins.c:724
+msgid "otherwise."
+msgstr "otherwise."
+
+#: builtins.c:730
+msgid ""
+"One line is read from the standard input, or from file descriptor FD if the"
+msgstr ""
+"One line is read from the standard input, or from file descriptor FD if the"
+
+#: builtins.c:731
+msgid ""
+"-u option is supplied, and the first word is assigned to the first NAME,"
+msgstr ""
+"-u option is supplied, and the first word is assigned to the first NAME,"
+
+#: builtins.c:732
+msgid ""
+"the second word to the second NAME, and so on, with leftover words assigned"
+msgstr ""
+"the second word to the second NAME, and so on, with leftover words assigned"
+
+#: builtins.c:733
+msgid ""
+"to the last NAME.  Only the characters found in $IFS are recognized as word"
+msgstr ""
+"to the last NAME.  Only the characters found in $IFS are recognized as word"
+
+#: builtins.c:734
+msgid ""
+"delimiters.  If no NAMEs are supplied, the line read is stored in the REPLY"
+msgstr ""
+"delimiters.  If no NAMEs are supplied, the line read is stored in the REPLY"
+
+#: builtins.c:735
+msgid "variable.  If the -r option is given, this signifies `raw' input, and"
+msgstr ""
+"variable.  If the -r option is given, this signifies ‘\e[1mraw\e[0m’ input, and"
+
+#: builtins.c:736
+msgid "backslash escaping is disabled.  The -d option causes read to continue"
+msgstr "backslash escaping is disabled.  The -d option causes read to continue"
+
+#: builtins.c:737
+msgid ""
+"until the first character of DELIM is read, rather than newline.  If the -p"
+msgstr ""
+"until the first character of DELIM is read, rather than newline.  If the -p"
+
+#: builtins.c:738
+msgid ""
+"option is supplied, the string PROMPT is output without a trailing newline"
+msgstr ""
+"option is supplied, the string PROMPT is output without a trailing newline"
+
+#: builtins.c:739
+msgid ""
+"before attempting to read.  If -a is supplied, the words read are assigned"
+msgstr ""
+"before attempting to read.  If -a is supplied, the words read are assigned"
+
+#: builtins.c:740
+msgid ""
+"to sequential indices of ARRAY, starting at zero.  If -e is supplied and"
+msgstr ""
+"to sequential indices of ARRAY, starting at zero.  If -e is supplied and"
+
+#: builtins.c:741
+msgid ""
+"the shell is interactive, readline is used to obtain the line.  If -n is"
+msgstr ""
+"the shell is interactive, readline is used to obtain the line.  If -n is"
+
+#: builtins.c:742
+msgid "supplied with a non-zero NCHARS argument, read returns after NCHARS"
+msgstr "supplied with a non-zero NCHARS argument, read returns after NCHARS"
+
+#: builtins.c:743
+msgid "characters have been read.  The -s option causes input coming from a"
+msgstr "characters have been read.  The -s option causes input coming from a"
+
+#: builtins.c:744
+msgid "terminal to not be echoed."
+msgstr "terminal to not be echoed."
+
+#: builtins.c:746
+msgid ""
+"The -t option causes read to time out and return failure if a complete line"
+msgstr ""
+"The -t option causes read to time out and return failure if a complete line"
+
+#: builtins.c:747
+msgid ""
+"of input is not read within TIMEOUT seconds.  If the TMOUT variable is set,"
+msgstr ""
+"of input is not read within TIMEOUT seconds.  If the TMOUT variable is set,"
+
+#: builtins.c:748
+msgid ""
+"its value is the default timeout.  The return code is zero, unless end-of-"
+"file"
+msgstr ""
+"its value is the default timeout.  The return code is zero, unless end-of-"
+"file"
+
+#: builtins.c:749
+msgid ""
+"is encountered, read times out, or an invalid file descriptor is supplied as"
+msgstr ""
+"is encountered, read times out, or an invalid file descriptor is supplied as"
+
+#: builtins.c:750
+msgid "the argument to -u."
+msgstr "the argument to -u."
+
+#: builtins.c:756
+msgid "Causes a function to exit with the return value specified by N.  If N"
+msgstr "Causes a function to exit with the return value specified by N.  If N"
+
+#: builtins.c:757
+msgid "is omitted, the return status is that of the last command."
+msgstr "is omitted, the return status is that of the last command."
+
+#: builtins.c:763
+msgid "    -a  Mark variables which are modified or created for export."
+msgstr "    -a  Mark variables which are modified or created for export."
+
+#: builtins.c:764
+msgid "    -b  Notify of job termination immediately."
+msgstr "    -b  Notify of job termination immediately."
+
+#: builtins.c:765
+msgid "    -e  Exit immediately if a command exits with a non-zero status."
+msgstr "    -e  Exit immediately if a command exits with a non-zero status."
+
+#: builtins.c:766
+msgid "    -f  Disable file name generation (globbing)."
+msgstr "    -f  Disable file name generation (globbing)."
+
+#: builtins.c:767
+msgid "    -h  Remember the location of commands as they are looked up."
+msgstr "    -h  Remember the location of commands as they are looked up."
+
+#: builtins.c:768
+msgid "    -k  All assignment arguments are placed in the environment for a"
+msgstr "    -k  All assignment arguments are placed in the environment for a"
+
+#: builtins.c:769
+msgid "        command, not just those that precede the command name."
+msgstr "        command, not just those that precede the command name."
+
+#: builtins.c:770
+msgid "    -m  Job control is enabled."
+msgstr "    -m  Job control is enabled."
+
+#: builtins.c:771
+msgid "    -n  Read commands but do not execute them."
+msgstr "    -n  Read commands but do not execute them."
+
+#: builtins.c:772
+msgid "    -o option-name"
+msgstr "    -o option-name"
+
+#: builtins.c:773
+msgid "        Set the variable corresponding to option-name:"
+msgstr "        Set the variable corresponding to option-name:"
+
+#: builtins.c:774
+msgid "            allexport    same as -a"
+msgstr "            allexport    same as -a"
+
+#: builtins.c:775
+msgid "            braceexpand  same as -B"
+msgstr "            braceexpand  same as -B"
+
+#: builtins.c:777
+msgid "            emacs        use an emacs-style line editing interface"
+msgstr "            emacs        use an emacs-style line editing interface"
+
+#: builtins.c:779
+msgid "            errexit      same as -e"
+msgstr "            errexit      same as -e"
+
+#: builtins.c:780
+msgid "            errtrace     same as -E"
+msgstr "            errtrace     same as -E"
+
+#: builtins.c:781
+msgid "            functrace    same as -T"
+msgstr "            functrace    same as -T"
+
+#: builtins.c:782
+msgid "            hashall      same as -h"
+msgstr "            hashall      same as -h"
+
+#: builtins.c:784
+msgid "            histexpand   same as -H"
+msgstr "            histexpand   same as -H"
+
+#: builtins.c:787
+msgid "            history      enable command history"
+msgstr "            history      enable command history"
+
+#: builtins.c:789
+msgid "            ignoreeof    the shell will not exit upon reading EOF"
+msgstr "            ignoreeof    the shell will not exit upon reading EOF"
+
+#: builtins.c:790
+msgid "            interactive-comments"
+msgstr "            interactive-comments"
+
+#: builtins.c:791
+msgid ""
+"                         allow comments to appear in interactive commands"
+msgstr ""
+"                         allow comments to appear in interactive commands"
+
+#: builtins.c:792
+msgid "            keyword      same as -k"
+msgstr "            keyword      same as -k"
+
+#: builtins.c:793
+msgid "            monitor      same as -m"
+msgstr "            monitor      same as -m"
+
+#: builtins.c:794
+msgid "            noclobber    same as -C"
+msgstr "            noclobber    same as -C"
+
+#: builtins.c:795
+msgid "            noexec       same as -n"
+msgstr "            noexec       same as -n"
+
+#: builtins.c:796
+msgid "            noglob       same as -f"
+msgstr "            noglob       same as -f"
+
+#: builtins.c:797
+msgid "            nolog        currently accepted but ignored"
+msgstr "            nolog        currently accepted but ignored"
+
+#: builtins.c:798
+msgid "            notify       same as -b"
+msgstr "            notify       same as -b"
+
+#: builtins.c:799
+msgid "            nounset      same as -u"
+msgstr "            nounset      same as -u"
+
+#: builtins.c:800
+msgid "            onecmd       same as -t"
+msgstr "            onecmd       same as -t"
+
+#: builtins.c:801
+msgid "            physical     same as -P"
+msgstr "            physical     same as -P"
+
+#: builtins.c:802
+msgid ""
+"            pipefail     the return value of a pipeline is the status of"
+msgstr ""
+"            pipefail     the return value of a pipeline is the status of"
+
+#: builtins.c:803
+msgid ""
+"                         the last command to exit with a non-zero status,"
+msgstr ""
+"                         the last command to exit with a non-zero status,"
+
+#: builtins.c:804
+msgid ""
+"                         or zero if no command exited with a non-zero status"
+msgstr ""
+"                         or zero if no command exited with a non-zero status"
+
+#: builtins.c:805
+msgid "            posix        change the behavior of bash where the default"
+msgstr "            posix        change the behavior of bash where the default"
+
+#: builtins.c:806
+msgid "                         operation differs from the 1003.2 standard to"
+msgstr "                         operation differs from the 1003.2 standard to"
+
+#: builtins.c:807
+msgid "                         match the standard"
+msgstr "                         match the standard"
+
+#: builtins.c:808
+msgid "            privileged   same as -p"
+msgstr "            privileged   same as -p"
+
+#: builtins.c:809
+msgid "            verbose      same as -v"
+msgstr "            verbose      same as -v"
+
+#: builtins.c:811
+msgid "            vi           use a vi-style line editing interface"
+msgstr "            vi           use a vi-style line editing interface"
+
+#: builtins.c:813
+msgid "            xtrace       same as -x"
+msgstr "            xtrace       same as -x"
+
+#: builtins.c:814
+msgid ""
+"    -p  Turned on whenever the real and effective user ids do not match."
+msgstr ""
+"    -p  Turned on whenever the real and effective user ids do not match."
+
+#: builtins.c:815
+msgid "        Disables processing of the $ENV file and importing of shell"
+msgstr "        Disables processing of the $ENV file and importing of shell"
+
+#: builtins.c:816
+msgid ""
+"        functions.  Turning this option off causes the effective uid and"
+msgstr ""
+"        functions.  Turning this option off causes the effective uid and"
+
+#: builtins.c:817
+msgid "        gid to be set to the real uid and gid."
+msgstr "        gid to be set to the real uid and gid."
+
+#: builtins.c:818
+msgid "    -t  Exit after reading and executing one command."
+msgstr "    -t  Exit after reading and executing one command."
+
+#: builtins.c:819
+msgid "    -u  Treat unset variables as an error when substituting."
+msgstr "    -u  Treat unset variables as an error when substituting."
+
+#: builtins.c:820
+msgid "    -v  Print shell input lines as they are read."
+msgstr "    -v  Print shell input lines as they are read."
+
+#: builtins.c:821
+msgid "    -x  Print commands and their arguments as they are executed."
+msgstr "    -x  Print commands and their arguments as they are executed."
+
+#: builtins.c:823
+msgid "    -B  the shell will perform brace expansion"
+msgstr "    -B  the shell will perform brace expansion"
+
+#: builtins.c:825
+msgid "    -C  If set, disallow existing regular files to be overwritten"
+msgstr "    -C  If set, disallow existing regular files to be overwritten"
+
+#: builtins.c:826
+msgid "        by redirection of output."
+msgstr "        by redirection of output."
+
+#: builtins.c:827
+msgid "    -E  If set, the ERR trap is inherited by shell functions."
+msgstr "    -E  If set, the ERR trap is inherited by shell functions."
+
+#: builtins.c:829
+msgid "    -H  Enable ! style history substitution.  This flag is on"
+msgstr "    -H  Enable ! style history substitution.  This flag is on"
+
+#: builtins.c:830
+msgid "        by default."
+msgstr "        by default."
+
+#: builtins.c:832
+msgid "    -P  If set, do not follow symbolic links when executing commands"
+msgstr "    -P  If set, do not follow symbolic links when executing commands"
+
+#: builtins.c:833
+msgid "        such as cd which change the current directory."
+msgstr "        such as cd which change the current directory."
+
+#: builtins.c:834
+msgid "    -T  If set, the DEBUG trap is inherited by shell functions."
+msgstr "    -T  If set, the DEBUG trap is inherited by shell functions."
+
+#: builtins.c:836
+msgid "Using + rather than - causes these flags to be turned off.  The"
+msgstr "Using + rather than - causes these flags to be turned off.  The"
+
+#: builtins.c:837
+msgid "flags can also be used upon invocation of the shell.  The current"
+msgstr "flags can also be used upon invocation of the shell.  The current"
+
+#: builtins.c:838
+msgid "set of flags may be found in $-.  The remaining n ARGs are positional"
+msgstr "set of flags may be found in $-.  The remaining n ARGs are positional"
+
+#: builtins.c:839
+msgid "parameters and are assigned, in order, to $1, $2, .. $n.  If no"
+msgstr "parameters and are assigned, in order, to $1, $2, .. $n.  If no"
+
+#: builtins.c:840
+msgid "ARGs are given, all shell variables are printed."
+msgstr "ARGs are given, all shell variables are printed."
+
+#: builtins.c:846
+msgid "For each NAME, remove the corresponding variable or function.  Given"
+msgstr "For each NAME, remove the corresponding variable or function.  Given"
+
+#: builtins.c:847
+msgid "the `-v', unset will only act on variables.  Given the `-f' flag,"
+msgstr ""
+"the ‘\e[1m-v\e[0m’, unset will only act on variables.  Given the ‘\e[1m-f\e[0m’ flag,"
+
+#: builtins.c:848
+msgid "unset will only act on functions.  With neither flag, unset first"
+msgstr "unset will only act on functions.  With neither flag, unset first"
+
+#: builtins.c:849
+msgid "tries to unset a variable, and if that fails, then tries to unset a"
+msgstr "tries to unset a variable, and if that fails, then tries to unset a"
+
+#: builtins.c:850
+msgid "function.  Some variables cannot be unset; also see readonly."
+msgstr "function.  Some variables cannot be unset; also see readonly."
+
+#: builtins.c:856
+msgid "NAMEs are marked for automatic export to the environment of"
+msgstr "NAMEs are marked for automatic export to the environment of"
+
+#: builtins.c:857
+msgid "subsequently executed commands.  If the -f option is given,"
+msgstr "subsequently executed commands.  If the -f option is given,"
+
+#: builtins.c:858
+msgid "the NAMEs refer to functions.  If no NAMEs are given, or if `-p'"
+msgstr "the NAMEs refer to functions.  If no NAMEs are given, or if ‘\e[1m-p\e[0m’"
+
+#: builtins.c:859
+msgid "is given, a list of all names that are exported in this shell is"
+msgstr "is given, a list of all names that are exported in this shell is"
+
+#: builtins.c:860
+msgid "printed.  An argument of `-n' says to remove the export property"
+msgstr "printed.  An argument of ‘\e[1m-n\e[0m’ says to remove the export property"
+
+#: builtins.c:861
+msgid "from subsequent NAMEs.  An argument of `--' disables further option"
+msgstr ""
+"from subsequent NAMEs.  An argument of ‘\e[1m--\e[0m’ disables further option"
+
+#: builtins.c:862 builtins.c:874
+msgid "processing."
+msgstr "processing."
+
+#: builtins.c:868
+msgid "The given NAMEs are marked readonly and the values of these NAMEs may"
+msgstr "The given NAMEs are marked readonly and the values of these NAMEs may"
+
+#: builtins.c:869
+msgid "not be changed by subsequent assignment.  If the -f option is given,"
+msgstr "not be changed by subsequent assignment.  If the -f option is given,"
+
+#: builtins.c:870
+msgid "then functions corresponding to the NAMEs are so marked.  If no"
+msgstr "then functions corresponding to the NAMEs are so marked.  If no"
+
+#: builtins.c:871
+msgid "arguments are given, or if `-p' is given, a list of all readonly names"
+msgstr ""
+"arguments are given, or if ‘\e[1m-p\e[0m’ is given, a list of all readonly names"
+
+#: builtins.c:872
+msgid "is printed.  The `-a' option means to treat each NAME as"
+msgstr "is printed.  The ‘\e[1m-a\e[0m’ option means to treat each NAME as"
+
+#: builtins.c:873
+msgid "an array variable.  An argument of `--' disables further option"
+msgstr "an array variable.  An argument of ‘\e[1m--\e[0m’ disables further option"
+
+#: builtins.c:880
+msgid "The positional parameters from $N+1 ... are renamed to $1 ...  If N is"
+msgstr "The positional parameters from $N+1 ... are renamed to $1 ...  If N is"
+
+#: builtins.c:881
+msgid "not given, it is assumed to be 1."
+msgstr "not given, it is assumed to be 1."
+
+#: builtins.c:887 builtins.c:896
+msgid "Read and execute commands from FILENAME and return.  The pathnames"
+msgstr "Read and execute commands from FILENAME and return.  The pathnames"
+
+#: builtins.c:888 builtins.c:897
+msgid "in $PATH are used to find the directory containing FILENAME.  If any"
+msgstr "in $PATH are used to find the directory containing FILENAME.  If any"
+
+#: builtins.c:889 builtins.c:898
+msgid "ARGUMENTS are supplied, they become the positional parameters when"
+msgstr "ARGUMENTS are supplied, they become the positional parameters when"
+
+#: builtins.c:890 builtins.c:899
+msgid "FILENAME is executed."
+msgstr "FILENAME is executed."
+
+#: builtins.c:906
+msgid "Suspend the execution of this shell until it receives a SIGCONT"
+msgstr "Suspend the execution of this shell until it receives a SIGCONT"
+
+#: builtins.c:907
+msgid "signal.  The `-f' if specified says not to complain about this"
+msgstr "signal.  The ‘\e[1m-f\e[0m’ if specified says not to complain about this"
+
+#: builtins.c:908
+msgid "being a login shell if it is; just suspend anyway."
+msgstr "being a login shell if it is; just suspend anyway."
+
+#: builtins.c:915
+msgid "Exits with a status of 0 (true) or 1 (false) depending on"
+msgstr "Exits with a status of 0 (true) or 1 (false) depending on"
+
+#: builtins.c:916
+msgid "the evaluation of EXPR.  Expressions may be unary or binary.  Unary"
+msgstr "the evaluation of EXPR.  Expressions may be unary or binary.  Unary"
+
+#: builtins.c:917
+msgid "expressions are often used to examine the status of a file.  There"
+msgstr "expressions are often used to examine the status of a file.  There"
+
+#: builtins.c:918
+msgid "are string operators as well, and numeric comparison operators."
+msgstr "are string operators as well, and numeric comparison operators."
+
+#: builtins.c:920
+msgid "File operators:"
+msgstr "File operators:"
+
+#: builtins.c:922
+msgid "    -a FILE        True if file exists."
+msgstr "    -a FILE        True if file exists."
+
+#: builtins.c:923
+msgid "    -b FILE        True if file is block special."
+msgstr "    -b FILE        True if file is block special."
+
+#: builtins.c:924
+msgid "    -c FILE        True if file is character special."
+msgstr "    -c FILE        True if file is character special."
+
+#: builtins.c:925
+msgid "    -d FILE        True if file is a directory."
+msgstr "    -d FILE        True if file is a directory."
+
+#: builtins.c:926
+msgid "    -e FILE        True if file exists."
+msgstr "    -e FILE        True if file exists."
+
+#: builtins.c:927
+msgid "    -f FILE        True if file exists and is a regular file."
+msgstr "    -f FILE        True if file exists and is a regular file."
+
+#: builtins.c:928
+msgid "    -g FILE        True if file is set-group-id."
+msgstr "    -g FILE        True if file is set-group-id."
+
+#: builtins.c:929
+msgid "    -h FILE        True if file is a symbolic link."
+msgstr "    -h FILE        True if file is a symbolic link."
+
+#: builtins.c:930
+msgid "    -L FILE        True if file is a symbolic link."
+msgstr "    -L FILE        True if file is a symbolic link."
+
+#: builtins.c:931
+msgid "    -k FILE        True if file has its `sticky' bit set."
+msgstr "    -k FILE        True if file has its ‘\e[1msticky\e[0m’ bit set."
+
+#: builtins.c:932
+msgid "    -p FILE        True if file is a named pipe."
+msgstr "    -p FILE        True if file is a named pipe."
+
+#: builtins.c:933
+msgid "    -r FILE        True if file is readable by you."
+msgstr "    -r FILE        True if file is readable by you."
+
+#: builtins.c:934
+msgid "    -s FILE        True if file exists and is not empty."
+msgstr "    -s FILE        True if file exists and is not empty."
+
+#: builtins.c:935
+msgid "    -S FILE        True if file is a socket."
+msgstr "    -S FILE        True if file is a socket."
+
+#: builtins.c:936
+msgid "    -t FD          True if FD is opened on a terminal."
+msgstr "    -t FD          True if FD is opened on a terminal."
+
+#: builtins.c:937
+msgid "    -u FILE        True if the file is set-user-id."
+msgstr "    -u FILE        True if the file is set-user-id."
+
+#: builtins.c:938
+msgid "    -w FILE        True if the file is writable by you."
+msgstr "    -w FILE        True if the file is writable by you."
+
+#: builtins.c:939
+msgid "    -x FILE        True if the file is executable by you."
+msgstr "    -x FILE        True if the file is executable by you."
+
+#: builtins.c:940
+msgid "    -O FILE        True if the file is effectively owned by you."
+msgstr "    -O FILE        True if the file is effectively owned by you."
+
+#: builtins.c:941
+msgid "    -G FILE        True if the file is effectively owned by your group."
+msgstr ""
+"    -G FILE        True if the file is effectively owned by your group."
+
+#: builtins.c:942
+msgid ""
+"    -N FILE        True if the file has been modified since it was last read."
+msgstr ""
+"    -N FILE        True if the file has been modified since it was last read."
+
+#: builtins.c:944
+msgid "  FILE1 -nt FILE2  True if file1 is newer than file2 (according to"
+msgstr "  FILE1 -nt FILE2  True if file1 is newer than file2 (according to"
+
+#: builtins.c:945
+msgid "                   modification date)."
+msgstr "                   modification date)."
+
+#: builtins.c:947
+msgid "  FILE1 -ot FILE2  True if file1 is older than file2."
+msgstr "  FILE1 -ot FILE2  True if file1 is older than file2."
+
+#: builtins.c:949
+msgid "  FILE1 -ef FILE2  True if file1 is a hard link to file2."
+msgstr "  FILE1 -ef FILE2  True if file1 is a hard link to file2."
+
+#: builtins.c:951
+msgid "String operators:"
+msgstr "String operators:"
+
+#: builtins.c:953
+msgid "    -z STRING      True if string is empty."
+msgstr "    -z STRING      True if string is empty."
+
+#: builtins.c:955
+msgid "    -n STRING"
+msgstr "    -n STRING"
+
+#: builtins.c:956
+msgid "    STRING         True if string is not empty."
+msgstr "    STRING         True if string is not empty."
+
+#: builtins.c:958
+msgid "    STRING1 = STRING2"
+msgstr "    STRING1 = STRING2"
+
+#: builtins.c:959
+msgid "                   True if the strings are equal."
+msgstr "                   True if the strings are equal."
+
+#: builtins.c:960
+msgid "    STRING1 != STRING2"
+msgstr "    STRING1 != STRING2"
+
+#: builtins.c:961
+msgid "                   True if the strings are not equal."
+msgstr "                   True if the strings are not equal."
+
+#: builtins.c:962
+msgid "    STRING1 < STRING2"
+msgstr "    STRING1 < STRING2"
+
+#: builtins.c:963
+msgid ""
+"                   True if STRING1 sorts before STRING2 lexicographically."
+msgstr ""
+"                   True if STRING1 sorts before STRING2 lexicographically."
+
+#: builtins.c:964
+msgid "    STRING1 > STRING2"
+msgstr "    STRING1 > STRING2"
+
+#: builtins.c:965
+msgid ""
+"                   True if STRING1 sorts after STRING2 lexicographically."
+msgstr ""
+"                   True if STRING1 sorts after STRING2 lexicographically."
+
+#: builtins.c:967
+msgid "Other operators:"
+msgstr "Other operators:"
+
+#: builtins.c:969
+msgid "    -o OPTION      True if the shell option OPTION is enabled."
+msgstr "    -o OPTION      True if the shell option OPTION is enabled."
+
+#: builtins.c:970
+msgid "    ! EXPR         True if expr is false."
+msgstr "    ! EXPR         True if expr is false."
+
+#: builtins.c:971
+msgid "    EXPR1 -a EXPR2 True if both expr1 AND expr2 are true."
+msgstr "    EXPR1 -a EXPR2 True if both expr1 AND expr2 are true."
+
+#: builtins.c:972
+msgid "    EXPR1 -o EXPR2 True if either expr1 OR expr2 is true."
+msgstr "    EXPR1 -o EXPR2 True if either expr1 OR expr2 is true."
+
+#: builtins.c:974
+msgid "    arg1 OP arg2   Arithmetic tests.  OP is one of -eq, -ne,"
+msgstr "    arg1 OP arg2   Arithmetic tests.  OP is one of -eq, -ne,"
+
+#: builtins.c:975
+msgid "                   -lt, -le, -gt, or -ge."
+msgstr "                   -lt, -le, -gt, or -ge."
+
+#: builtins.c:977
+msgid "Arithmetic binary operators return true if ARG1 is equal, not-equal,"
+msgstr "Arithmetic binary operators return true if ARG1 is equal, not-equal,"
+
+#: builtins.c:978
+msgid "less-than, less-than-or-equal, greater-than, or greater-than-or-equal"
+msgstr "less-than, less-than-or-equal, greater-than, or greater-than-or-equal"
+
+#: builtins.c:979
+msgid "than ARG2."
+msgstr "than ARG2."
+
+#: builtins.c:985
+msgid "This is a synonym for the \"test\" builtin, but the last"
+msgstr "This is a synonym for the “\e[1mtest\e[0m” builtin, but the last"
+
+#: builtins.c:986
+msgid "argument must be a literal `]', to match the opening `['."
+msgstr "argument must be a literal ‘\e[1m]\e[0m’, to match the opening ‘\e[1m[\e[0m’."
+
+#: builtins.c:992
+msgid "Print the accumulated user and system times for processes run from"
+msgstr "Print the accumulated user and system times for processes run from"
+
+#: builtins.c:993
+msgid "the shell."
+msgstr "the shell."
+
+#: builtins.c:999
+msgid "The command ARG is to be read and executed when the shell receives"
+msgstr "The command ARG is to be read and executed when the shell receives"
+
+#: builtins.c:1000
+msgid "signal(s) SIGNAL_SPEC.  If ARG is absent all specified signals are"
+msgstr "signal(s) SIGNAL_SPEC.  If ARG is absent all specified signals are"
+
+#: builtins.c:1001
+msgid "reset to their original values.  If ARG is the null string each"
+msgstr "reset to their original values.  If ARG is the null string each"
+
+#: builtins.c:1002
+msgid "SIGNAL_SPEC is ignored by the shell and by the commands it invokes."
+msgstr "SIGNAL_SPEC is ignored by the shell and by the commands it invokes."
+
+#: builtins.c:1003
+msgid "If a SIGNAL_SPEC is EXIT (0) the command ARG is executed on exit from"
+msgstr "If a SIGNAL_SPEC is EXIT (0) the command ARG is executed on exit from"
+
+#: builtins.c:1004
+msgid "the shell.  If a SIGNAL_SPEC is DEBUG, ARG is executed after every"
+msgstr "the shell.  If a SIGNAL_SPEC is DEBUG, ARG is executed after every"
+
+#: builtins.c:1005
+msgid "command.  If ARG is `-p' then the trap commands associated with"
+msgstr "command.  If ARG is ‘\e[1m-p\e[0m’ then the trap commands associated with"
+
+#: builtins.c:1006
+msgid "each SIGNAL_SPEC are displayed.  If no arguments are supplied or if"
+msgstr "each SIGNAL_SPEC are displayed.  If no arguments are supplied or if"
+
+#: builtins.c:1007
+msgid "only `-p' is given, trap prints the list of commands associated with"
+msgstr ""
+"only ‘\e[1m-p\e[0m’ is given, trap prints the list of commands associated with"
+
+#: builtins.c:1008
+msgid ""
+"each signal number.  Each SIGNAL_SPEC is either a signal name in <signal.h>"
+msgstr ""
+"each signal number.  Each SIGNAL_SPEC is either a signal name in <signal.h>"
+
+#: builtins.c:1009
+msgid "or a signal number.  `trap -l' prints a list of signal names and their"
+msgstr ""
+"or a signal number.  ‘\e[1mtrap -l\e[0m’ prints a list of signal names and their"
+
+#: builtins.c:1010
+msgid "corresponding numbers.  Note that a signal can be sent to the shell"
+msgstr "corresponding numbers.  Note that a signal can be sent to the shell"
+
+#: builtins.c:1011
+msgid "with \"kill -signal $$\"."
+msgstr "with “\e[1mkill -signal $$\e[0m”."
+
+#: builtins.c:1017
+msgid "For each NAME, indicate how it would be interpreted if used as a"
+msgstr "For each NAME, indicate how it would be interpreted if used as a"
+
+#: builtins.c:1018
+msgid "command name."
+msgstr "command name."
+
+#: builtins.c:1020
+msgid "If the -t option is used, `type' outputs a single word which is one of"
+msgstr ""
+"If the -t option is used, ‘\e[1mtype\e[0m’ outputs a single word which is one of"
+
+#: builtins.c:1021
+msgid "`alias', `keyword', `function', `builtin', `file' or `', if NAME is an"
+msgstr ""
+"‘\e[1malias\e[0m’, ‘\e[1mkeyword\e[0m’, ‘\e[1mfunction\e[0m’, ‘\e[1mbuiltin\e[0m’, ‘\e[1mfile\e"
+"[0m’ or ‘\e[1m\e[0m’, if NAME is an"
+
+#: builtins.c:1022
+msgid "alias, shell reserved word, shell function, shell builtin, disk file,"
+msgstr "alias, shell reserved word, shell function, shell builtin, disk file,"
+
+#: builtins.c:1023
+msgid "or unfound, respectively."
+msgstr "or unfound, respectively."
+
+#: builtins.c:1025
+msgid "If the -p flag is used, `type' either returns the name of the disk"
+msgstr ""
+"If the -p flag is used, ‘\e[1mtype\e[0m’ either returns the name of the disk"
+
+#: builtins.c:1026
+msgid "file that would be executed, or nothing if `type -t NAME' would not"
+msgstr ""
+"file that would be executed, or nothing if ‘\e[1mtype -t NAME\e[0m’ would not"
+
+#: builtins.c:1027
+msgid "return `file'."
+msgstr "return ‘\e[1mfile\e[0m’."
+
+#: builtins.c:1029
+msgid "If the -a flag is used, `type' displays all of the places that contain"
+msgstr ""
+"If the -a flag is used, ‘\e[1mtype\e[0m’ displays all of the places that contain"
+
+#: builtins.c:1030
+msgid "an executable named `file'.  This includes aliases, builtins, and"
+msgstr ""
+"an executable named ‘\e[1mfile\e[0m’.  This includes aliases, builtins, and"
+
+#: builtins.c:1031
+msgid "functions, if and only if the -p flag is not also used."
+msgstr "functions, if and only if the -p flag is not also used."
+
+#: builtins.c:1033
+msgid "The -f flag suppresses shell function lookup."
+msgstr "The -f flag suppresses shell function lookup."
+
+#: builtins.c:1035
+msgid "The -P flag forces a PATH search for each NAME, even if it is an alias,"
+msgstr ""
+"The -P flag forces a PATH search for each NAME, even if it is an alias,"
+
+#: builtins.c:1036
+msgid "builtin, or function, and returns the name of the disk file that would"
+msgstr "builtin, or function, and returns the name of the disk file that would"
+
+#: builtins.c:1037
+msgid "be executed."
+msgstr "be executed."
+
+#: builtins.c:1044
+msgid "Ulimit provides control over the resources available to processes"
+msgstr "Ulimit provides control over the resources available to processes"
+
+#: builtins.c:1045
+msgid "started by the shell, on systems that allow such control.  If an"
+msgstr "started by the shell, on systems that allow such control.  If an"
+
+#: builtins.c:1046
+msgid "option is given, it is interpreted as follows:"
+msgstr "option is given, it is interpreted as follows:"
+
+#: builtins.c:1048
+msgid "    -S\tuse the `soft' resource limit"
+msgstr "    -S\tuse the ‘\e[1msoft\e[0m’ resource limit"
+
+#: builtins.c:1049
+msgid "    -H\tuse the `hard' resource limit"
+msgstr "    -H\tuse the ‘\e[1mhard\e[0m’ resource limit"
+
+#: builtins.c:1050
+msgid "    -a\tall current limits are reported"
+msgstr "    -a\tall current limits are reported"
+
+#: builtins.c:1051
+msgid "    -c\tthe maximum size of core files created"
+msgstr "    -c\tthe maximum size of core files created"
+
+#: builtins.c:1052
+msgid "    -d\tthe maximum size of a process's data segment"
+msgstr "    -d\tthe maximum size of a process's data segment"
+
+#: builtins.c:1053
+msgid "    -f\tthe maximum size of files created by the shell"
+msgstr "    -f\tthe maximum size of files created by the shell"
+
+#: builtins.c:1054
+msgid "    -l\tthe maximum size a process may lock into memory"
+msgstr "    -l\tthe maximum size a process may lock into memory"
+
+#: builtins.c:1055
+msgid "    -m\tthe maximum resident set size"
+msgstr "    -m\tthe maximum resident set size"
+
+#: builtins.c:1056
+msgid "    -n\tthe maximum number of open file descriptors"
+msgstr "    -n\tthe maximum number of open file descriptors"
+
+#: builtins.c:1057
+msgid "    -p\tthe pipe buffer size"
+msgstr "    -p\tthe pipe buffer size"
+
+#: builtins.c:1058
+msgid "    -s\tthe maximum stack size"
+msgstr "    -s\tthe maximum stack size"
+
+#: builtins.c:1059
+msgid "    -t\tthe maximum amount of cpu time in seconds"
+msgstr "    -t\tthe maximum amount of cpu time in seconds"
+
+#: builtins.c:1060
+msgid "    -u\tthe maximum number of user processes"
+msgstr "    -u\tthe maximum number of user processes"
+
+#: builtins.c:1061
+msgid "    -v\tthe size of virtual memory"
+msgstr "    -v\tthe size of virtual memory"
+
+#: builtins.c:1063
+msgid "If LIMIT is given, it is the new value of the specified resource;"
+msgstr "If LIMIT is given, it is the new value of the specified resource;"
+
+#: builtins.c:1064
+msgid "the special LIMIT values `soft', `hard', and `unlimited' stand for"
+msgstr ""
+"the special LIMIT values ‘\e[1msoft\e[0m’, ‘\e[1mhard\e[0m’, and ‘\e[1munlimited\e[0m’ "
+"stand for"
+
+#: builtins.c:1065
+msgid ""
+"the current soft limit, the current hard limit, and no limit, respectively."
+msgstr ""
+"the current soft limit, the current hard limit, and no limit, respectively."
+
+#: builtins.c:1066
+msgid "Otherwise, the current value of the specified resource is printed."
+msgstr "Otherwise, the current value of the specified resource is printed."
+
+#: builtins.c:1067
+msgid "If no option is given, then -f is assumed.  Values are in 1024-byte"
+msgstr "If no option is given, then -f is assumed.  Values are in 1024-byte"
+
+#: builtins.c:1068
+msgid "increments, except for -t, which is in seconds, -p, which is in"
+msgstr "increments, except for -t, which is in seconds, -p, which is in"
+
+#: builtins.c:1069
+msgid "increments of 512 bytes, and -u, which is an unscaled number of"
+msgstr "increments of 512 bytes, and -u, which is an unscaled number of"
+
+#: builtins.c:1070
+msgid "processes."
+msgstr "processes."
+
+#: builtins.c:1077
+msgid "The user file-creation mask is set to MODE.  If MODE is omitted, or if"
+msgstr "The user file-creation mask is set to MODE.  If MODE is omitted, or if"
+
+#: builtins.c:1078
+msgid "`-S' is supplied, the current value of the mask is printed.  The `-S'"
+msgstr ""
+"‘\e[1m-S\e[0m’ is supplied, the current value of the mask is printed.  The ‘\e[1m-S\e"
+"[0m’"
+
+#: builtins.c:1079
+msgid "option makes the output symbolic; otherwise an octal number is output."
+msgstr "option makes the output symbolic; otherwise an octal number is output."
+
+#: builtins.c:1080
+msgid "If `-p' is supplied, and MODE is omitted, the output is in a form"
+msgstr ""
+"If ‘\e[1m-p\e[0m’ is supplied, and MODE is omitted, the output is in a form"
+
+#: builtins.c:1081
+msgid "that may be used as input.  If MODE begins with a digit, it is"
+msgstr "that may be used as input.  If MODE begins with a digit, it is"
+
+#: builtins.c:1082
+msgid "interpreted as an octal number, otherwise it is a symbolic mode string"
+msgstr "interpreted as an octal number, otherwise it is a symbolic mode string"
+
+#: builtins.c:1083
+msgid "like that accepted by chmod(1)."
+msgstr "like that accepted by chmod(1)."
+
+#: builtins.c:1090 builtins.c:1102
+msgid "Wait for the specified process and report its termination status.  If"
+msgstr "Wait for the specified process and report its termination status.  If"
+
+#: builtins.c:1091 builtins.c:1103
+msgid "N is not given, all currently active child processes are waited for,"
+msgstr "N is not given, all currently active child processes are waited for,"
+
+#: builtins.c:1092
+msgid "and the return code is zero.  N may be a process ID or a job"
+msgstr "and the return code is zero.  N may be a process ID or a job"
+
+#: builtins.c:1093
+msgid "specification; if a job spec is given, all processes in the job's"
+msgstr "specification; if a job spec is given, all processes in the job's"
+
+#: builtins.c:1094
+msgid "pipeline are waited for."
+msgstr "pipeline are waited for."
+
+#: builtins.c:1104
+msgid "and the return code is zero.  N is a process ID; if it is not given,"
+msgstr "and the return code is zero.  N is a process ID; if it is not given,"
+
+#: builtins.c:1105
+msgid "all child processes of the shell are waited for."
+msgstr "all child processes of the shell are waited for."
+
+#: builtins.c:1112
+msgid "The `for' loop executes a sequence of commands for each member in a"
+msgstr ""
+"The ‘\e[1mfor\e[0m’ loop executes a sequence of commands for each member in a"
+
+#: builtins.c:1113
+msgid "list of items.  If `in WORDS ...;' is not present, then `in \"$@\"' is"
+msgstr ""
+"list of items.  If ‘\e[1min WORDS ...;\e[0m’ is not present, then ‘\e[1min “\e[1m$@\e"
+"[0m”\e[0m’ is"
+
+#: builtins.c:1114
+msgid "assumed.  For each element in WORDS, NAME is set to that element, and"
+msgstr "assumed.  For each element in WORDS, NAME is set to that element, and"
+
+#: builtins.c:1115
+msgid "the COMMANDS are executed."
+msgstr "the COMMANDS are executed."
+
+#: builtins.c:1121
+msgid "Equivalent to"
+msgstr "Equivalent to"
+
+#: builtins.c:1122
+msgid "\t(( EXP1 ))"
+msgstr "\t(( EXP1 ))"
+
+#: builtins.c:1123
+msgid "\twhile (( EXP2 )); do"
+msgstr "\twhile (( EXP2 )); do"
+
+#: builtins.c:1124
+msgid "\t\tCOMMANDS"
+msgstr "\t\tCOMMANDS"
+
+#: builtins.c:1125
+msgid "\t\t(( EXP3 ))"
+msgstr "\t\t(( EXP3 ))"
+
+#: builtins.c:1126
+msgid "\tdone"
+msgstr "\tdone"
+
+#: builtins.c:1127
+msgid "EXP1, EXP2, and EXP3 are arithmetic expressions.  If any expression is"
+msgstr "EXP1, EXP2, and EXP3 are arithmetic expressions.  If any expression is"
+
+#: builtins.c:1128
+msgid "omitted, it behaves as if it evaluates to 1."
+msgstr "omitted, it behaves as if it evaluates to 1."
+
+#: builtins.c:1134
+msgid "The WORDS are expanded, generating a list of words.  The"
+msgstr "The WORDS are expanded, generating a list of words.  The"
+
+#: builtins.c:1135
+msgid "set of expanded words is printed on the standard error, each"
+msgstr "set of expanded words is printed on the standard error, each"
+
+#: builtins.c:1136
+msgid "preceded by a number.  If `in WORDS' is not present, `in \"$@\"'"
+msgstr ""
+"preceded by a number.  If ‘\e[1min WORDS\e[0m’ is not present, ‘\e[1min “\e[1m$@\e"
+"[0m”\e[0m’"
+
+#: builtins.c:1137
+msgid "is assumed.  The PS3 prompt is then displayed and a line read"
+msgstr "is assumed.  The PS3 prompt is then displayed and a line read"
+
+#: builtins.c:1138
+msgid "from the standard input.  If the line consists of the number"
+msgstr "from the standard input.  If the line consists of the number"
+
+#: builtins.c:1139
+msgid "corresponding to one of the displayed words, then NAME is set"
+msgstr "corresponding to one of the displayed words, then NAME is set"
+
+#: builtins.c:1140
+msgid "to that word.  If the line is empty, WORDS and the prompt are"
+msgstr "to that word.  If the line is empty, WORDS and the prompt are"
+
+#: builtins.c:1141
+msgid "redisplayed.  If EOF is read, the command completes.  Any other"
+msgstr "redisplayed.  If EOF is read, the command completes.  Any other"
+
+#: builtins.c:1142
+msgid "value read causes NAME to be set to null.  The line read is saved"
+msgstr "value read causes NAME to be set to null.  The line read is saved"
+
+#: builtins.c:1143
+msgid "in the variable REPLY.  COMMANDS are executed after each selection"
+msgstr "in the variable REPLY.  COMMANDS are executed after each selection"
+
+#: builtins.c:1144
+msgid "until a break command is executed."
+msgstr "until a break command is executed."
+
+#: builtins.c:1150
+msgid "Execute PIPELINE and print a summary of the real time, user CPU time,"
+msgstr "Execute PIPELINE and print a summary of the real time, user CPU time,"
+
+#: builtins.c:1151
+msgid "and system CPU time spent executing PIPELINE when it terminates."
+msgstr "and system CPU time spent executing PIPELINE when it terminates."
+
+#: builtins.c:1152
+msgid "The return status is the return status of PIPELINE.  The `-p' option"
+msgstr ""
+"The return status is the return status of PIPELINE.  The ‘\e[1m-p\e[0m’ option"
+
+#: builtins.c:1153
+msgid "prints the timing summary in a slightly different format.  This uses"
+msgstr "prints the timing summary in a slightly different format.  This uses"
+
+#: builtins.c:1154
+msgid "the value of the TIMEFORMAT variable as the output format."
+msgstr "the value of the TIMEFORMAT variable as the output format."
+
+#: builtins.c:1160
+msgid "Selectively execute COMMANDS based upon WORD matching PATTERN.  The"
+msgstr "Selectively execute COMMANDS based upon WORD matching PATTERN.  The"
+
+#: builtins.c:1161
+msgid "`|' is used to separate multiple patterns."
+msgstr "‘\e[1m|\e[0m’ is used to separate multiple patterns."
+
+#: builtins.c:1167
+msgid ""
+"The if COMMANDS are executed.  If the exit status is zero, then the then"
+msgstr ""
+"The if COMMANDS are executed.  If the exit status is zero, then the then"
+
+#: builtins.c:1168
+msgid ""
+"COMMANDS are executed.  Otherwise, each of the elif COMMANDS are executed"
+msgstr ""
+"COMMANDS are executed.  Otherwise, each of the elif COMMANDS are executed"
+
+#: builtins.c:1169
+msgid ""
+"in turn, and if the exit status is zero, the corresponding then COMMANDS"
+msgstr ""
+"in turn, and if the exit status is zero, the corresponding then COMMANDS"
+
+#: builtins.c:1170
+msgid ""
+"are executed and the if command completes.  Otherwise, the else COMMANDS"
+msgstr ""
+"are executed and the if command completes.  Otherwise, the else COMMANDS"
+
+#: builtins.c:1171
+msgid ""
+"are executed, if present.  The exit status is the exit status of the last"
+msgstr ""
+"are executed, if present.  The exit status is the exit status of the last"
+
+#: builtins.c:1172
+msgid "command executed, or zero if no condition tested true."
+msgstr "command executed, or zero if no condition tested true."
+
+#: builtins.c:1178 builtins.c:1185
+msgid "Expand and execute COMMANDS as long as the final command in the"
+msgstr "Expand and execute COMMANDS as long as the final command in the"
+
+#: builtins.c:1179
+msgid "`while' COMMANDS has an exit status of zero."
+msgstr "‘\e[1mwhile\e[0m’ COMMANDS has an exit status of zero."
+
+#: builtins.c:1186
+msgid "`until' COMMANDS has an exit status which is not zero."
+msgstr "‘\e[1muntil\e[0m’ COMMANDS has an exit status which is not zero."
+
+#: builtins.c:1192
+msgid "Create a simple command invoked by NAME which runs COMMANDS."
+msgstr "Create a simple command invoked by NAME which runs COMMANDS."
+
+#: builtins.c:1193
+msgid "Arguments on the command line along with NAME are passed to the"
+msgstr "Arguments on the command line along with NAME are passed to the"
+
+#: builtins.c:1194
+msgid "function as $0 .. $n."
+msgstr "function as $0 .. $n."
+
+#: builtins.c:1200
+msgid "Run a set of commands in a group.  This is one way to redirect an"
+msgstr "Run a set of commands in a group.  This is one way to redirect an"
+
+#: builtins.c:1201
+msgid "entire set of commands."
+msgstr "entire set of commands."
+
+#: builtins.c:1207
+msgid "This is similar to the `fg' command.  Resume a stopped or background"
+msgstr ""
+"This is similar to the ‘\e[1mfg\e[0m’ command.  Resume a stopped or background"
+
+#: builtins.c:1208
+msgid "job.  If you specifiy DIGITS, then that job is used.  If you specify"
+msgstr "job.  If you specifiy DIGITS, then that job is used.  If you specify"
+
+#: builtins.c:1209
+msgid "WORD, then the job whose name begins with WORD is used.  Following the"
+msgstr "WORD, then the job whose name begins with WORD is used.  Following the"
+
+#: builtins.c:1210
+msgid "job specification with a `&' places the job in the background."
+msgstr "job specification with a ‘\e[1m&\e[0m’ places the job in the background."
+
+#: builtins.c:1216
+msgid "The EXPRESSION is evaluated according to the rules for arithmetic"
+msgstr "The EXPRESSION is evaluated according to the rules for arithmetic"
+
+#: builtins.c:1217
+msgid "evaluation.  Equivalent to \"let EXPRESSION\"."
+msgstr "evaluation.  Equivalent to “\e[1mlet EXPRESSION\e[0m”."
+
+#: builtins.c:1223
+msgid ""
+"Returns a status of 0 or 1 depending on the evaluation of the conditional"
+msgstr ""
+"Returns a status of 0 or 1 depending on the evaluation of the conditional"
+
+#: builtins.c:1224
+msgid ""
+"expression EXPRESSION.  Expressions are composed of the same primaries used"
+msgstr ""
+"expression EXPRESSION.  Expressions are composed of the same primaries used"
+
+#: builtins.c:1225
+msgid ""
+"by the `test' builtin, and may be combined using the following operators"
+msgstr ""
+"by the ‘\e[1mtest\e[0m’ builtin, and may be combined using the following "
+"operators"
+
+#: builtins.c:1227
+msgid "\t( EXPRESSION )\tReturns the value of EXPRESSION"
+msgstr "\t( EXPRESSION )\tReturns the value of EXPRESSION"
+
+#: builtins.c:1228
+msgid "\t! EXPRESSION\tTrue if EXPRESSION is false; else false"
+msgstr "\t! EXPRESSION\tTrue if EXPRESSION is false; else false"
+
+#: builtins.c:1229
+msgid "\tEXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false"
+msgstr "\tEXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false"
+
+#: builtins.c:1230
+msgid "\tEXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false"
+msgstr "\tEXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false"
+
+#: builtins.c:1232
+msgid ""
+"When the `==' and `!=' operators are used, the string to the right of the"
+msgstr ""
+"When the ‘\e[1m==\e[0m’ and ‘\e[1m!=\e[0m’ operators are used, the string to the "
+"right of the"
+
+#: builtins.c:1233
+msgid "operator is used as a pattern and pattern matching is performed.  The"
+msgstr "operator is used as a pattern and pattern matching is performed.  The"
+
+#: builtins.c:1234
+msgid "&& and || operators do not evaluate EXPR2 if EXPR1 is sufficient to"
+msgstr "&& and || operators do not evaluate EXPR2 if EXPR1 is sufficient to"
+
+#: builtins.c:1235
+msgid "determine the expression's value."
+msgstr "determine the expression's value."
+
+#: builtins.c:1241
+msgid "BASH_VERSION    Version information for this Bash."
+msgstr "BASH_VERSION    Version information for this Bash."
+
+#: builtins.c:1242
+msgid "CDPATH          A colon separated list of directories to search"
+msgstr "CDPATH          A colon separated list of directories to search"
+
+#: builtins.c:1243
+msgid "\t\twhen the argument to `cd' is not found in the current"
+msgstr "\t\twhen the argument to ‘\e[1mcd\e[0m’ is not found in the current"
+
+#: builtins.c:1244
+msgid "\t\tdirectory."
+msgstr "\t\tdirectory."
+
+#: builtins.c:1245
+msgid "GLOBIGNORE\tA colon-separated list of patterns describing filenames to"
+msgstr "GLOBIGNORE\tA colon-separated list of patterns describing filenames to"
+
+#: builtins.c:1246
+msgid "\t\tbe ignored by pathname expansion."
+msgstr "\t\tbe ignored by pathname expansion."
+
+#: builtins.c:1248
+msgid ""
+"HISTFILE        The name of the file where your command history is stored."
+msgstr ""
+"HISTFILE        The name of the file where your command history is stored."
+
+#: builtins.c:1249
+msgid "HISTFILESIZE    The maximum number of lines this file can contain."
+msgstr "HISTFILESIZE    The maximum number of lines this file can contain."
+
+#: builtins.c:1250
+msgid "HISTSIZE        The maximum number of history lines that a running"
+msgstr "HISTSIZE        The maximum number of history lines that a running"
+
+#: builtins.c:1251
+msgid "\t\tshell can access."
+msgstr "\t\tshell can access."
+
+#: builtins.c:1253
+msgid "HOME            The complete pathname to your login directory."
+msgstr "HOME            The complete pathname to your login directory."
+
+#: builtins.c:1254
+msgid "HOSTNAME\tThe name of the current host."
+msgstr "HOSTNAME\tThe name of the current host."
+
+#: builtins.c:1255
+msgid "HOSTTYPE        The type of CPU this version of Bash is running under."
+msgstr "HOSTTYPE        The type of CPU this version of Bash is running under."
+
+#: builtins.c:1256
+msgid "IGNOREEOF       Controls the action of the shell on receipt of an EOF"
+msgstr "IGNOREEOF       Controls the action of the shell on receipt of an EOF"
+
+#: builtins.c:1257
+msgid "\t\tcharacter as the sole input.  If set, then the value"
+msgstr "\t\tcharacter as the sole input.  If set, then the value"
+
+#: builtins.c:1258
+msgid "\t\tof it is the number of EOF characters that can be seen"
+msgstr "\t\tof it is the number of EOF characters that can be seen"
+
+#: builtins.c:1259
+msgid "\t\tin a row on an empty line before the shell will exit"
+msgstr "\t\tin a row on an empty line before the shell will exit"
+
+#: builtins.c:1260
+msgid "\t\t(default 10).  When unset, EOF signifies the end of input."
+msgstr "\t\t(default 10).  When unset, EOF signifies the end of input."
+
+#: builtins.c:1261
+msgid "MACHTYPE\tA string describing the current system Bash is running on."
+msgstr "MACHTYPE\tA string describing the current system Bash is running on."
+
+#: builtins.c:1262
+msgid "MAILCHECK\tHow often, in seconds, Bash checks for new mail."
+msgstr "MAILCHECK\tHow often, in seconds, Bash checks for new mail."
+
+#: builtins.c:1263
+msgid "MAILPATH\tA colon-separated list of filenames which Bash checks"
+msgstr "MAILPATH\tA colon-separated list of filenames which Bash checks"
+
+#: builtins.c:1264
+msgid "\t\tfor new mail."
+msgstr "\t\tfor new mail."
+
+#: builtins.c:1265
+msgid "OSTYPE\t\tThe version of Unix this version of Bash is running on."
+msgstr "OSTYPE\t\tThe version of Unix this version of Bash is running on."
+
+#: builtins.c:1266
+msgid "PATH            A colon-separated list of directories to search when"
+msgstr "PATH            A colon-separated list of directories to search when"
+
+#: builtins.c:1267
+msgid "\t\tlooking for commands."
+msgstr "\t\tlooking for commands."
+
+#: builtins.c:1268
+msgid "PROMPT_COMMAND  A command to be executed before the printing of each"
+msgstr "PROMPT_COMMAND  A command to be executed before the printing of each"
+
+#: builtins.c:1269
+msgid "\t\tprimary prompt."
+msgstr "\t\tprimary prompt."
+
+#: builtins.c:1270
+msgid "PS1             The primary prompt string."
+msgstr "PS1             The primary prompt string."
+
+#: builtins.c:1271
+msgid "PS2             The secondary prompt string."
+msgstr "PS2             The secondary prompt string."
+
+#: builtins.c:1272
+msgid "PWD\t\tThe full pathname of the current directory."
+msgstr "PWD\t\tThe full pathname of the current directory."
+
+#: builtins.c:1273
+msgid "SHELLOPTS\tA colon-separated list of enabled shell options."
+msgstr "SHELLOPTS\tA colon-separated list of enabled shell options."
+
+#: builtins.c:1274
+msgid "TERM            The name of the current terminal type."
+msgstr "TERM            The name of the current terminal type."
+
+#: builtins.c:1275
+msgid "TIMEFORMAT\tThe output format for timing statistics displayed by the"
+msgstr "TIMEFORMAT\tThe output format for timing statistics displayed by the"
+
+#: builtins.c:1276
+msgid "\t\t`time' reserved word."
+msgstr "\t\t‘\e[1mtime\e[0m’ reserved word."
+
+#: builtins.c:1277
+msgid "auto_resume     Non-null means a command word appearing on a line by"
+msgstr "auto_resume     Non-null means a command word appearing on a line by"
+
+#: builtins.c:1278
+msgid "\t\titself is first looked for in the list of currently"
+msgstr "\t\titself is first looked for in the list of currently"
+
+#: builtins.c:1279
+msgid "\t\tstopped jobs.  If found there, that job is foregrounded."
+msgstr "\t\tstopped jobs.  If found there, that job is foregrounded."
+
+#: builtins.c:1280
+msgid "\t\tA value of `exact' means that the command word must"
+msgstr "\t\tA value of ‘\e[1mexact\e[0m’ means that the command word must"
+
+#: builtins.c:1281
+msgid "\t\texactly match a command in the list of stopped jobs.  A"
+msgstr "\t\texactly match a command in the list of stopped jobs.  A"
+
+#: builtins.c:1282
+msgid "\t\tvalue of `substring' means that the command word must"
+msgstr "\t\tvalue of ‘\e[1msubstring\e[0m’ means that the command word must"
+
+#: builtins.c:1283
+msgid "\t\tmatch a substring of the job.  Any other value means that"
+msgstr "\t\tmatch a substring of the job.  Any other value means that"
+
+#: builtins.c:1284
+msgid "\t\tthe command must be a prefix of a stopped job."
+msgstr "\t\tthe command must be a prefix of a stopped job."
+
+#: builtins.c:1287
+msgid "histchars       Characters controlling history expansion and quick"
+msgstr "histchars       Characters controlling history expansion and quick"
+
+#: builtins.c:1288
+msgid "\t\tsubstitution.  The first character is the history"
+msgstr "\t\tsubstitution.  The first character is the history"
+
+#: builtins.c:1289
+msgid "\t\tsubstitution character, usually `!'.  The second is"
+msgstr "\t\tsubstitution character, usually ‘\e[1m!\e[0m’.  The second is"
+
+#: builtins.c:1290
+msgid "\t\tthe `quick substitution' character, usually `^'.  The"
+msgstr "\t\tthe ‘\e[1mquick substitution\e[0m’ character, usually ‘\e[1m^\e[0m’.  The"
+
+#: builtins.c:1291
+msgid "\t\tthird is the `history comment' character, usually `#'."
+msgstr "\t\tthird is the ‘\e[1mhistory comment\e[0m’ character, usually ‘\e[1m#\e[0m’."
+
+#: builtins.c:1293
+msgid "HISTIGNORE\tA colon-separated list of patterns used to decide which"
+msgstr "HISTIGNORE\tA colon-separated list of patterns used to decide which"
+
+#: builtins.c:1294
+msgid "\t\tcommands should be saved on the history list."
+msgstr "\t\tcommands should be saved on the history list."
+
+#: builtins.c:1306
+msgid "+N\tRotates the stack so that the Nth directory (counting"
+msgstr "+N\tRotates the stack so that the Nth directory (counting"
+
+#: builtins.c:1307
+msgid "\tfrom the left of the list shown by `dirs', starting with"
+msgstr "\tfrom the left of the list shown by ‘\e[1mdirs\e[0m’, starting with"
+
+#: builtins.c:1308 builtins.c:1312
+msgid "\tzero) is at the top."
+msgstr "\tzero) is at the top."
+
+#: builtins.c:1310
+msgid "-N\tRotates the stack so that the Nth directory (counting"
+msgstr "-N\tRotates the stack so that the Nth directory (counting"
+
+#: builtins.c:1311
+msgid "\tfrom the right of the list shown by `dirs', starting with"
+msgstr "\tfrom the right of the list shown by ‘\e[1mdirs\e[0m’, starting with"
+
+#: builtins.c:1314
+msgid "-n\tsuppress the normal change of directory when adding directories"
+msgstr "-n\tsuppress the normal change of directory when adding directories"
+
+#: builtins.c:1315
+msgid "\tto the stack, so only the stack is manipulated."
+msgstr "\tto the stack, so only the stack is manipulated."
+
+#: builtins.c:1317
+msgid "dir\tadds DIR to the directory stack at the top, making it the"
+msgstr "dir\tadds DIR to the directory stack at the top, making it the"
+
+#: builtins.c:1318
+msgid "\tnew current working directory."
+msgstr "\tnew current working directory."
+
+#: builtins.c:1332
+msgid "+N\tremoves the Nth entry counting from the left of the list"
+msgstr "+N\tremoves the Nth entry counting from the left of the list"
+
+#: builtins.c:1333
+msgid "\tshown by `dirs', starting with zero.  For example: `popd +0'"
+msgstr ""
+"\tshown by ‘\e[1mdirs\e[0m’, starting with zero.  For example: ‘\e[1mpopd +0\e[0m’"
+
+#: builtins.c:1334
+msgid "\tremoves the first directory, `popd +1' the second."
+msgstr "\tremoves the first directory, ‘\e[1mpopd +1\e[0m’ the second."
+
+#: builtins.c:1336
+msgid "-N\tremoves the Nth entry counting from the right of the list"
+msgstr "-N\tremoves the Nth entry counting from the right of the list"
+
+#: builtins.c:1337
+msgid "\tshown by `dirs', starting with zero.  For example: `popd -0'"
+msgstr ""
+"\tshown by ‘\e[1mdirs\e[0m’, starting with zero.  For example: ‘\e[1mpopd -0\e[0m’"
+
+#: builtins.c:1338
+msgid "\tremoves the last directory, `popd -1' the next to last."
+msgstr "\tremoves the last directory, ‘\e[1mpopd -1\e[0m’ the next to last."
+
+#: builtins.c:1340
+msgid "-n\tsuppress the normal change of directory when removing directories"
+msgstr "-n\tsuppress the normal change of directory when removing directories"
+
+#: builtins.c:1341
+msgid "\tfrom the stack, so only the stack is manipulated."
+msgstr "\tfrom the stack, so only the stack is manipulated."
+
+#: builtins.c:1363
+msgid "+N\tdisplays the Nth entry counting from the left of the list shown by"
+msgstr "+N\tdisplays the Nth entry counting from the left of the list shown by"
+
+#: builtins.c:1364 builtins.c:1367
+msgid "\tdirs when invoked without options, starting with zero."
+msgstr "\tdirs when invoked without options, starting with zero."
+
+#: builtins.c:1366
+msgid "-N\tdisplays the Nth entry counting from the right of the list shown by"
+msgstr ""
+"-N\tdisplays the Nth entry counting from the right of the list shown by"
+
+#: builtins.c:1374
+msgid "Toggle the values of variables controlling optional behavior."
+msgstr "Toggle the values of variables controlling optional behavior."
+
+#: builtins.c:1375
+msgid "The -s flag means to enable (set) each OPTNAME; the -u flag"
+msgstr "The -s flag means to enable (set) each OPTNAME; the -u flag"
+
+#: builtins.c:1376
+msgid "unsets each OPTNAME.  The -q flag suppresses output; the exit"
+msgstr "unsets each OPTNAME.  The -q flag suppresses output; the exit"
+
+#: builtins.c:1377
+msgid "status indicates whether each OPTNAME is set or unset.  The -o"
+msgstr "status indicates whether each OPTNAME is set or unset.  The -o"
+
+#: builtins.c:1378
+msgid "option restricts the OPTNAMEs to those defined for use with"
+msgstr "option restricts the OPTNAMEs to those defined for use with"
+
+#: builtins.c:1379
+msgid "`set -o'.  With no options, or with the -p option, a list of all"
+msgstr "‘\e[1mset -o\e[0m’.  With no options, or with the -p option, a list of all"
+
+#: builtins.c:1380
+msgid "settable options is displayed, with an indication of whether or"
+msgstr "settable options is displayed, with an indication of whether or"
+
+#: builtins.c:1381
+msgid "not each is set."
+msgstr "not each is set."
+
+#: builtins.c:1387
+msgid "printf formats and prints ARGUMENTS under control of the FORMAT. FORMAT"
+msgstr ""
+"printf formats and prints ARGUMENTS under control of the FORMAT. FORMAT"
+
+#: builtins.c:1388
+msgid "is a character string which contains three types of objects: plain"
+msgstr "is a character string which contains three types of objects: plain"
+
+#: builtins.c:1389
+msgid ""
+"characters, which are simply copied to standard output, character escape"
+msgstr ""
+"characters, which are simply copied to standard output, character escape"
+
+#: builtins.c:1390
+msgid "sequences which are converted and copied to the standard output, and"
+msgstr "sequences which are converted and copied to the standard output, and"
+
+#: builtins.c:1391
+msgid ""
+"format specifications, each of which causes printing of the next successive"
+msgstr ""
+"format specifications, each of which causes printing of the next successive"
+
+#: builtins.c:1392
+msgid "argument.  In addition to the standard printf(1) formats, %b means to"
+msgstr "argument.  In addition to the standard printf(1) formats, %b means to"
+
+#: builtins.c:1393
+msgid "expand backslash escape sequences in the corresponding argument, and %q"
+msgstr ""
+"expand backslash escape sequences in the corresponding argument, and %q"
+
+#: builtins.c:1394
+msgid "means to quote the argument in a way that can be reused as shell input."
+msgstr ""
+"means to quote the argument in a way that can be reused as shell input."
+
+#: builtins.c:1401
+msgid "For each NAME, specify how arguments are to be completed."
+msgstr "For each NAME, specify how arguments are to be completed."
+
+#: builtins.c:1402
+msgid "If the -p option is supplied, or if no options are supplied, existing"
+msgstr "If the -p option is supplied, or if no options are supplied, existing"
+
+#: builtins.c:1403
+msgid "completion specifications are printed in a way that allows them to be"
+msgstr "completion specifications are printed in a way that allows them to be"
+
+#: builtins.c:1404
+msgid "reused as input.  The -r option removes a completion specification for"
+msgstr "reused as input.  The -r option removes a completion specification for"
+
+#: builtins.c:1405
+msgid "each NAME, or, if no NAMEs are supplied, all completion specifications."
+msgstr ""
+"each NAME, or, if no NAMEs are supplied, all completion specifications."
+
+#: builtins.c:1413
+msgid "Display the possible completions depending on the options.  Intended"
+msgstr "Display the possible completions depending on the options.  Intended"
+
+#: builtins.c:1414
+msgid ""
+"to be used from within a shell function generating possible completions."
+msgstr ""
+"to be used from within a shell function generating possible completions."
+
+#: builtins.c:1415
+msgid "If the optional WORD argument is supplied, matches against WORD are"
+msgstr "If the optional WORD argument is supplied, matches against WORD are"
+
+#: builtins.c:1416
+msgid "generated."
+msgstr "generated."
index 62cf0807cb661d4b41814bb5af653910ad3f2acf..b7587469c04023967b8f64e89fb154ad22d3d0ff 100644 (file)
Binary files a/po/en@quot.gmo and b/po/en@quot.gmo differ
index a560bf6caae3c7fd78e9ffccb3ab99dd9817fd52..2a644cbe13e555fe2540c500e7ab9fef67092766 100644 (file)
 #: builtins.c:722 builtins.c:745 builtins.c:835 builtins.c:919 builtins.c:921
 #: builtins.c:943 builtins.c:946 builtins.c:948 builtins.c:950 builtins.c:952
 #: builtins.c:954 builtins.c:957 builtins.c:966 builtins.c:968 builtins.c:973
-#: builtins.c:976 builtins.c:1019 builtins.c:1024 builtins.c:1028
-#: builtins.c:1032 builtins.c:1034 builtins.c:1047 builtins.c:1062
-#: builtins.c:1226 builtins.c:1231 builtins.c:1305 builtins.c:1309
-#: builtins.c:1313 builtins.c:1316 builtins.c:1319 builtins.c:1331
-#: builtins.c:1335 builtins.c:1339 builtins.c:1342 builtins.c:1354
-#: builtins.c:1362 builtins.c:1365
+#: builtins.c:976 builtins.c:1020 builtins.c:1025 builtins.c:1029
+#: builtins.c:1033 builtins.c:1035 builtins.c:1048 builtins.c:1063
+#: builtins.c:1226 builtins.c:1231 builtins.c:1304 builtins.c:1308
+#: builtins.c:1312 builtins.c:1315 builtins.c:1318 builtins.c:1330
+#: builtins.c:1334 builtins.c:1338 builtins.c:1341 builtins.c:1353
+#: builtins.c:1361 builtins.c:1364
 msgid ""
 msgstr ""
 "Project-Id-Version: GNU bash 3.0-rc1\n"
-"POT-Creation-Date: 2003-12-22 15:34-0500\n"
+"Report-Msgid-Bugs-To: bug-bash@gnu.org\n"
+"POT-Creation-Date: 2004-09-09 17:59-0400\n"
 "PO-Revision-Date: 2003-12-22 15:34-0500\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Report-Msgid-Bugs-To: bug-bash@gnu.org\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: arrayfunc.c:45
@@ -65,35 +65,30 @@ msgstr "bad array subscript"
 msgid "%s: cannot assign to non-numeric index"
 msgstr "%s: cannot assign to non-numeric index"
 
-#: bashhist.c:321
+#: bashhist.c:322
 #, c-format
 msgid "%s: cannot create: %s"
 msgstr "%s: cannot create: %s"
 
-#: bashline.c:2791
+#: bashline.c:2916
 msgid "bash_execute_unix_command: cannot find keymap for command"
 msgstr "bash_execute_unix_command: cannot find keymap for command"
 
-#: bashline.c:2840
+#: bashline.c:2965
 #, c-format
 msgid "%s: first non-whitespace character is not `\"'"
 msgstr "%s: first non-whitespace character is not ‘\"’"
 
-#: bashline.c:2869
+#: bashline.c:2994
 #, c-format
 msgid "no closing `%c' in %s"
 msgstr "no closing ‘%c’ in %s"
 
-#: bashline.c:2903
+#: bashline.c:3028
 #, c-format
 msgid "%s: missing colon separator"
 msgstr "%s: missing colon separator"
 
-#: builtins/alias.def:123
-#, c-format
-msgid "`%s': invalid alias name"
-msgstr "‘%s’: invalid alias name"
-
 #: builtins/bind.def:194
 #, c-format
 msgid "`%s': invalid keymap name"
@@ -152,19 +147,14 @@ msgstr "The value of EXPR indicates how many call frames to go back before the"
 msgid "current one; the top frame is frame 0."
 msgstr "current one; the top frame is frame 0."
 
-#: builtins/cd.def:188
+#: builtins/cd.def:190
 msgid "HOME not set"
 msgstr "HOME not set"
 
-#: builtins/cd.def:200
+#: builtins/cd.def:202
 msgid "OLDPWD not set"
 msgstr "OLDPWD not set"
 
-#: builtins/cd.def:357
-#, c-format
-msgid "write error: %s"
-msgstr "write error: %s"
-
 #: builtins/common.c:133 test.c:921
 msgid "too many arguments"
 msgstr "too many arguments"
@@ -194,7 +184,7 @@ msgstr "%s: invalid option"
 msgid "%s: invalid option name"
 msgstr "%s: invalid option name"
 
-#: builtins/common.c:194 general.c:229 general.c:234
+#: builtins/common.c:194 general.c:231 general.c:236
 #, c-format
 msgid "`%s': not a valid identifier"
 msgstr "‘%s’: not a valid identifier"
@@ -261,12 +251,17 @@ msgstr "restricted"
 msgid "%s: not a shell builtin"
 msgstr "%s: not a shell builtin"
 
-#: builtins/common.c:486
+#: builtins/common.c:276
+#, c-format
+msgid "write error: %s"
+msgstr "write error: %s"
+
+#: builtins/common.c:484
 #, c-format
 msgid "%s: error retrieving current directory: %s: %s\n"
 msgstr "%s: error retrieving current directory: %s: %s\n"
 
-#: builtins/common.c:553 builtins/common.c:555
+#: builtins/common.c:548 builtins/common.c:550
 #, c-format
 msgid "%s: ambiguous job spec"
 msgstr "%s: ambiguous job spec"
@@ -297,7 +292,7 @@ msgstr "can only be used in a function"
 msgid "cannot use `-f' to make functions"
 msgstr "cannot use ‘-f’ to make functions"
 
-#: builtins/declare.def:307 execute_cmd.c:3949
+#: builtins/declare.def:307 execute_cmd.c:3969
 #, c-format
 msgid "%s: readonly function"
 msgstr "%s: readonly function"
@@ -331,17 +326,17 @@ msgstr "%s: not dynamically loaded"
 msgid "%s: cannot delete: %s"
 msgstr "%s: cannot delete: %s"
 
-#: builtins/evalfile.c:128 execute_cmd.c:3821 shell.c:1395
+#: builtins/evalfile.c:129 execute_cmd.c:3841 shell.c:1396
 #, c-format
 msgid "%s: is a directory"
 msgstr "%s: is a directory"
 
-#: builtins/evalfile.c:133
+#: builtins/evalfile.c:134
 #, c-format
 msgid "%s: not a regular file"
 msgstr "%s: not a regular file"
 
-#: builtins/evalfile.c:141
+#: builtins/evalfile.c:142
 #, c-format
 msgid "%s: file is too large"
 msgstr "%s: file is too large"
@@ -359,20 +354,20 @@ msgstr "not login shell: use ‘exit’"
 msgid "There are stopped jobs.\n"
 msgstr "There are stopped jobs.\n"
 
-#: builtins/fc.def:252
+#: builtins/fc.def:254
 msgid "no command found"
 msgstr "no command found"
 
-#: builtins/fc.def:317
+#: builtins/fc.def:319
 msgid "history specification"
 msgstr "history specification"
 
-#: builtins/fc.def:338
+#: builtins/fc.def:340
 #, c-format
 msgid "%s: cannot open temp file: %s"
 msgstr "%s: cannot open temp file: %s"
 
-#: builtins/fg_bg.def:133
+#: builtins/fg_bg.def:145
 #, c-format
 msgid "job %d started without job control"
 msgstr "job %d started without job control"
@@ -460,7 +455,7 @@ msgstr "%s: arguments must be process or job IDs"
 msgid "Unknown error"
 msgstr "Unknown error"
 
-#: builtins/let.def:94 builtins/let.def:119 expr.c:496 expr.c:511
+#: builtins/let.def:94 builtins/let.def:119 expr.c:497 expr.c:512
 msgid "expression expected"
 msgstr "expression expected"
 
@@ -469,12 +464,12 @@ msgstr "expression expected"
 msgid "`%s': missing format character"
 msgstr "‘%s’: missing format character"
 
-#: builtins/printf.def:408
+#: builtins/printf.def:423
 #, c-format
 msgid "`%c': invalid format character"
 msgstr "‘%c’: invalid format character"
 
-#: builtins/printf.def:601
+#: builtins/printf.def:629
 msgid "missing hex digit for \\x"
 msgstr "missing hex digit for \\x"
 
@@ -486,43 +481,43 @@ msgstr "no other directory"
 msgid "<no current directory>"
 msgstr "<no current directory>"
 
-#: builtins/pushd.def:652 builtins.c:1351
+#: builtins/pushd.def:652 builtins.c:1350
 msgid "Display the list of currently remembered directories.  Directories"
 msgstr "Display the list of currently remembered directories.  Directories"
 
-#: builtins/pushd.def:653 builtins.c:1352
+#: builtins/pushd.def:653 builtins.c:1351
 msgid "find their way onto the list with the `pushd' command; you can get"
 msgstr "find their way onto the list with the ‘pushd’ command; you can get"
 
-#: builtins/pushd.def:654 builtins.c:1353
+#: builtins/pushd.def:654 builtins.c:1352
 msgid "back up through the list with the `popd' command."
 msgstr "back up through the list with the ‘popd’ command."
 
-#: builtins/pushd.def:656 builtins.c:1355
+#: builtins/pushd.def:656 builtins.c:1354
 msgid "The -l flag specifies that `dirs' should not print shorthand versions"
 msgstr "The -l flag specifies that ‘dirs’ should not print shorthand versions"
 
-#: builtins/pushd.def:657 builtins.c:1356
+#: builtins/pushd.def:657 builtins.c:1355
 msgid "of directories which are relative to your home directory.  This means"
 msgstr "of directories which are relative to your home directory.  This means"
 
-#: builtins/pushd.def:658 builtins.c:1357
+#: builtins/pushd.def:658 builtins.c:1356
 msgid "that `~/bin' might be displayed as `/homes/bfox/bin'.  The -v flag"
 msgstr "that ‘~/bin’ might be displayed as ‘/homes/bfox/bin’.  The -v flag"
 
-#: builtins/pushd.def:659 builtins.c:1358
+#: builtins/pushd.def:659 builtins.c:1357
 msgid "causes `dirs' to print the directory stack with one entry per line,"
 msgstr "causes ‘dirs’ to print the directory stack with one entry per line,"
 
-#: builtins/pushd.def:660 builtins.c:1359
+#: builtins/pushd.def:660 builtins.c:1358
 msgid "prepending the directory name with its position in the stack.  The -p"
 msgstr "prepending the directory name with its position in the stack.  The -p"
 
-#: builtins/pushd.def:661 builtins.c:1360
+#: builtins/pushd.def:661 builtins.c:1359
 msgid "flag does the same thing, but the stack position is not prepended."
 msgstr "flag does the same thing, but the stack position is not prepended."
 
-#: builtins/pushd.def:662 builtins.c:1361
+#: builtins/pushd.def:662 builtins.c:1360
 msgid "The -c flag clears the directory stack by deleting all of the elements."
 msgstr ""
 "The -c flag clears the directory stack by deleting all of the elements."
@@ -542,15 +537,15 @@ msgid ""
 msgstr ""
 "-N   displays the Nth entry counting from the right of the list shown by"
 
-#: builtins/pushd.def:673 builtins.c:1302
+#: builtins/pushd.def:673 builtins.c:1301
 msgid "Adds a directory to the top of the directory stack, or rotates"
 msgstr "Adds a directory to the top of the directory stack, or rotates"
 
-#: builtins/pushd.def:674 builtins.c:1303
+#: builtins/pushd.def:674 builtins.c:1302
 msgid "the stack, making the new top of the stack the current working"
 msgstr "the stack, making the new top of the stack the current working"
 
-#: builtins/pushd.def:675 builtins.c:1304
+#: builtins/pushd.def:675 builtins.c:1303
 msgid "directory.  With no arguments, exchanges the top two directories."
 msgstr "directory.  With no arguments, exchanges the top two directories."
 
@@ -590,20 +585,20 @@ msgstr "dir  adds DIR to the directory stack at the top, making it the"
 msgid "     new current working directory."
 msgstr "     new current working directory."
 
-#: builtins/pushd.def:691 builtins/pushd.def:711 builtins.c:1320
-#: builtins.c:1343
+#: builtins/pushd.def:691 builtins/pushd.def:711 builtins.c:1319
+#: builtins.c:1342
 msgid "You can see the directory stack with the `dirs' command."
 msgstr "You can see the directory stack with the ‘dirs’ command."
 
-#: builtins/pushd.def:696 builtins.c:1328
+#: builtins/pushd.def:696 builtins.c:1327
 msgid "Removes entries from the directory stack.  With no arguments,"
 msgstr "Removes entries from the directory stack.  With no arguments,"
 
-#: builtins/pushd.def:697 builtins.c:1329
+#: builtins/pushd.def:697 builtins.c:1328
 msgid "removes the top directory from the stack, and cd's to the new"
 msgstr "removes the top directory from the stack, and cd's to the new"
 
-#: builtins/pushd.def:698 builtins.c:1330
+#: builtins/pushd.def:698 builtins.c:1329
 msgid "top directory."
 msgstr "top directory."
 
@@ -717,32 +712,32 @@ msgstr "cannot suspend"
 msgid "cannot suspend a login shell"
 msgstr "cannot suspend a login shell"
 
-#: builtins/type.def:231
+#: builtins/type.def:232
 #, c-format
 msgid "%s is aliased to `%s'\n"
 msgstr "%s is aliased to ‘%s’\n"
 
-#: builtins/type.def:252
+#: builtins/type.def:253
 #, c-format
 msgid "%s is a shell keyword\n"
 msgstr "%s is a shell keyword\n"
 
-#: builtins/type.def:272
+#: builtins/type.def:273
 #, c-format
 msgid "%s is a function\n"
 msgstr "%s is a function\n"
 
-#: builtins/type.def:297
+#: builtins/type.def:298
 #, c-format
 msgid "%s is a shell builtin\n"
 msgstr "%s is a shell builtin\n"
 
-#: builtins/type.def:318
+#: builtins/type.def:319
 #, c-format
 msgid "%s is %s\n"
 msgstr "%s is %s\n"
 
-#: builtins/type.def:338
+#: builtins/type.def:339
 #, c-format
 msgid "%s is hashed (%s)\n"
 msgstr "%s is hashed (%s)\n"
@@ -776,7 +771,7 @@ msgstr "octal number"
 msgid "`%c': invalid symbolic mode operator"
 msgstr "‘%c’: invalid symbolic mode operator"
 
-#: builtins/umask.def:279
+#: builtins/umask.def:281
 #, c-format
 msgid "`%c': invalid symbolic mode character"
 msgstr "‘%c’: invalid symbolic mode character"
@@ -820,98 +815,98 @@ msgstr "%s: unbound variable"
 msgid "\atimed out waiting for input: auto-logout\n"
 msgstr "\atimed out waiting for input: auto-logout\n"
 
-#: execute_cmd.c:466
+#: execute_cmd.c:467
 #, c-format
 msgid "cannot redirect standard input from /dev/null: %s"
 msgstr "cannot redirect standard input from /dev/null: %s"
 
-#: execute_cmd.c:1036
+#: execute_cmd.c:1037
 #, c-format
 msgid "TIMEFORMAT: `%c': invalid format character"
 msgstr "TIMEFORMAT: ‘%c’: invalid format character"
 
-#: execute_cmd.c:3521
+#: execute_cmd.c:3541
 #, c-format
 msgid "%s: restricted: cannot specify `/' in command names"
 msgstr "%s: restricted: cannot specify ‘/’ in command names"
 
-#: execute_cmd.c:3609
+#: execute_cmd.c:3629
 #, c-format
 msgid "%s: command not found"
 msgstr "%s: command not found"
 
-#: execute_cmd.c:3839
+#: execute_cmd.c:3859
 #, c-format
 msgid "%s: %s: bad interpreter"
 msgstr "%s: %s: bad interpreter"
 
-#: execute_cmd.c:3876
+#: execute_cmd.c:3896
 #, c-format
 msgid "%s: cannot execute binary file"
 msgstr "%s: cannot execute binary file"
 
-#: execute_cmd.c:3988
+#: execute_cmd.c:4008
 #, c-format
 msgid "cannot duplicate fd %d to fd %d"
 msgstr "cannot duplicate fd %d to fd %d"
 
-#: expr.c:239
+#: expr.c:240
 msgid "expression recursion level exceeded"
 msgstr "expression recursion level exceeded"
 
-#: expr.c:263
+#: expr.c:264
 msgid "recursion stack underflow"
 msgstr "recursion stack underflow"
 
-#: expr.c:374
+#: expr.c:375
 msgid "syntax error in expression"
 msgstr "syntax error in expression"
 
-#: expr.c:414
+#: expr.c:415
 msgid "attempted assignment to non-variable"
 msgstr "attempted assignment to non-variable"
 
-#: expr.c:435 expr.c:440 expr.c:750
+#: expr.c:436 expr.c:441 expr.c:751
 msgid "division by 0"
 msgstr "division by 0"
 
-#: expr.c:466
+#: expr.c:467
 msgid "bug: bad expassign token"
 msgstr "bug: bad expassign token"
 
-#: expr.c:508
+#: expr.c:509
 msgid "`:' expected for conditional expression"
 msgstr "‘:’ expected for conditional expression"
 
-#: expr.c:775
+#: expr.c:776
 msgid "exponent less than 0"
 msgstr "exponent less than 0"
 
-#: expr.c:819
+#: expr.c:821
 msgid "identifier expected after pre-increment or pre-decrement"
 msgstr "identifier expected after pre-increment or pre-decrement"
 
-#: expr.c:847
+#: expr.c:849
 msgid "missing `)'"
 msgstr "missing ‘)’"
 
-#: expr.c:871
+#: expr.c:892
 msgid "syntax error: operand expected"
 msgstr "syntax error: operand expected"
 
-#: expr.c:1146
+#: expr.c:1178
 msgid "invalid number"
 msgstr "invalid number"
 
-#: expr.c:1150
+#: expr.c:1182
 msgid "invalid arithmetic base"
 msgstr "invalid arithmetic base"
 
-#: expr.c:1170
+#: expr.c:1202
 msgid "value too great for base"
 msgstr "value too great for base"
 
-#: general.c:60
+#: general.c:62
 msgid "getcwd: cannot access parent directories"
 msgstr "getcwd: cannot access parent directories"
 
@@ -925,42 +920,42 @@ msgstr "cannot allocate new file descriptor for bash input from fd %d"
 msgid "save_bash_input: buffer already exists for new fd %d"
 msgstr "save_bash_input: buffer already exists for new fd %d"
 
-#: jobs.c:693
+#: jobs.c:694
 #, c-format
 msgid "deleting stopped job %d with process group %ld"
 msgstr "deleting stopped job %d with process group %ld"
 
-#: jobs.c:1001
+#: jobs.c:1002
 #, c-format
 msgid "describe_pid: %ld: no such pid"
 msgstr "describe_pid: %ld: no such pid"
 
-#: jobs.c:1632 nojobs.c:648
+#: jobs.c:1633 nojobs.c:648
 #, c-format
 msgid "wait: pid %ld is not a child of this shell"
 msgstr "wait: pid %ld is not a child of this shell"
 
-#: jobs.c:1815
+#: jobs.c:1821
 #, c-format
 msgid "wait_for: No record of process %ld"
 msgstr "wait_for: No record of process %ld"
 
-#: jobs.c:2062
+#: jobs.c:2068
 #, c-format
 msgid "wait_for_job: job %d is stopped"
 msgstr "wait_for_job: job %d is stopped"
 
-#: jobs.c:2284
+#: jobs.c:2290
 #, c-format
 msgid "%s: job has terminated"
 msgstr "%s: job has terminated"
 
-#: jobs.c:2293
+#: jobs.c:2299
 #, c-format
 msgid "%s: job %d already in background"
 msgstr "%s: job %d already in background"
 
-#: jobs.c:3037
+#: jobs.c:3043
 msgid "no job control in this shell"
 msgstr "no job control in this shell"
 
@@ -1098,12 +1093,12 @@ msgstr "syntax error: ‘;’ unexpected"
 msgid "syntax error: `((%s))'"
 msgstr "syntax error: ‘((%s))’"
 
-#: make_cmd.c:560
+#: make_cmd.c:561
 #, c-format
 msgid "make_here_document: bad instruction type %d"
 msgstr "make_here_document: bad instruction type %d"
 
-#: make_cmd.c:730
+#: make_cmd.c:731
 #, c-format
 msgid "make_redirection: redirection instruction `%d' out of range"
 msgstr "make_redirection: redirection instruction ‘%d’ out of range"
@@ -1177,34 +1172,34 @@ msgstr "unexpected token ‘%s’ in conditional command"
 msgid "unexpected token %d in conditional command"
 msgstr "unexpected token %d in conditional command"
 
-#: parse.y:4400
+#: parse.y:4409
 #, c-format
 msgid "syntax error near unexpected token `%s'"
 msgstr "syntax error near unexpected token ‘%s’"
 
-#: parse.y:4418
+#: parse.y:4427
 #, c-format
 msgid "syntax error near `%s'"
 msgstr "syntax error near ‘%s’"
 
-#: parse.y:4428
+#: parse.y:4437
 msgid "syntax error: unexpected end of file"
 msgstr "syntax error: unexpected end of file"
 
-#: parse.y:4428
+#: parse.y:4437
 msgid "syntax error"
 msgstr "syntax error"
 
-#: parse.y:4490
+#: parse.y:4499
 #, c-format
 msgid "Use \"%s\" to leave the shell.\n"
 msgstr "Use “%s” to leave the shell.\n"
 
-#: parse.y:4649
+#: parse.y:4658
 msgid "unexpected EOF while looking for matching `)'"
 msgstr "unexpected EOF while looking for matching ‘)’"
 
-#: pcomplete.c:988
+#: pcomplete.c:998
 #, c-format
 msgid "completion: function `%s' not found"
 msgstr "completion: function ‘%s’ not found"
@@ -1214,12 +1209,12 @@ msgstr "completion: function ‘%s’ not found"
 msgid "progcomp_insert: %s: NULL COMPSPEC"
 msgstr "progcomp_insert: %s: NULL COMPSPEC"
 
-#: print_cmd.c:260
+#: print_cmd.c:261
 #, c-format
 msgid "print_command: bad connector `%d'"
 msgstr "print_command: bad connector ‘%d’"
 
-#: print_cmd.c:1172
+#: print_cmd.c:1211
 #, c-format
 msgid "cprintf: `%c': invalid format character"
 msgstr "cprintf: ‘%c’: invalid format character"
@@ -1269,11 +1264,11 @@ msgstr "/tmp must be a valid directory name"
 msgid "%c%c: invalid option"
 msgstr "%c%c: invalid option"
 
-#: shell.c:1590
+#: shell.c:1591
 msgid "I have no name!"
 msgstr "I have no name!"
 
-#: shell.c:1725
+#: shell.c:1726
 #, c-format
 msgid ""
 "Usage:\t%s [GNU long option] [option] ...\n"
@@ -1282,113 +1277,113 @@ msgstr ""
 "Usage:\t%s [GNU long option] [option] ...\n"
 "\t%s [GNU long option] [option] script-file ...\n"
 
-#: shell.c:1727
+#: shell.c:1728
 msgid "GNU long options:\n"
 msgstr "GNU long options:\n"
 
-#: shell.c:1731
+#: shell.c:1732
 msgid "Shell options:\n"
 msgstr "Shell options:\n"
 
-#: shell.c:1732
+#: shell.c:1733
 msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n"
 msgstr "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n"
 
-#: shell.c:1747
+#: shell.c:1748
 #, c-format
 msgid "\t-%s or -o option\n"
 msgstr "\t-%s or -o option\n"
 
-#: shell.c:1753
+#: shell.c:1754
 #, c-format
 msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
 msgstr "Type ‘%s -c “help set”’ for more information about shell options.\n"
 
-#: shell.c:1754
+#: shell.c:1755
 #, c-format
 msgid "Type `%s -c help' for more information about shell builtin commands.\n"
 msgstr "Type ‘%s -c help’ for more information about shell builtin commands.\n"
 
-#: shell.c:1755
+#: shell.c:1756
 msgid "Use the `bashbug' command to report bugs.\n"
 msgstr "Use the ‘bashbug’ command to report bugs.\n"
 
-#: sig.c:485
+#: sig.c:490
 #, c-format
 msgid "sigprocmask: %d: invalid operation"
 msgstr "sigprocmask: %d: invalid operation"
 
-#: subst.c:1011
+#: subst.c:1046
 #, c-format
 msgid "bad substitution: no closing `%s' in %s"
 msgstr "bad substitution: no closing ‘%s’ in %s"
 
-#: subst.c:2020
+#: subst.c:2053
 #, c-format
 msgid "%s: cannot assign list to array member"
 msgstr "%s: cannot assign list to array member"
 
-#: subst.c:3516 subst.c:3532
+#: subst.c:3880 subst.c:3896
 msgid "cannot make pipe for process substitution"
 msgstr "cannot make pipe for process substitution"
 
-#: subst.c:3563
+#: subst.c:3927
 msgid "cannot make child for process substitution"
 msgstr "cannot make child for process substitution"
 
-#: subst.c:3608
+#: subst.c:3972
 #, c-format
 msgid "cannot open named pipe %s for reading"
 msgstr "cannot open named pipe %s for reading"
 
-#: subst.c:3610
+#: subst.c:3974
 #, c-format
 msgid "cannot open named pipe %s for writing"
 msgstr "cannot open named pipe %s for writing"
 
-#: subst.c:3618
+#: subst.c:3982
 #, c-format
 msgid "cannout reset nodelay mode for fd %d"
 msgstr "cannout reset nodelay mode for fd %d"
 
-#: subst.c:3628
+#: subst.c:3992
 #, c-format
 msgid "cannot duplicate named pipe %s as fd %d"
 msgstr "cannot duplicate named pipe %s as fd %d"
 
-#: subst.c:3803
+#: subst.c:4167
 msgid "cannot make pipe for command substitution"
 msgstr "cannot make pipe for command substitution"
 
-#: subst.c:3832
+#: subst.c:4196
 msgid "cannot make child for command substitution"
 msgstr "cannot make child for command substitution"
 
-#: subst.c:3849
+#: subst.c:4213
 msgid "command_substitute: cannot duplicate pipe as fd 1"
 msgstr "command_substitute: cannot duplicate pipe as fd 1"
 
-#: subst.c:4284
+#: subst.c:4671
 #, c-format
 msgid "%s: parameter null or not set"
 msgstr "%s: parameter null or not set"
 
-#: subst.c:4529
+#: subst.c:4937
 #, c-format
 msgid "%s: substring expression < 0"
 msgstr "%s: substring expression < 0"
 
-#: subst.c:5209
+#: subst.c:5667
 #, c-format
 msgid "%s: bad substitution"
 msgstr "%s: bad substitution"
 
-#: subst.c:5283
+#: subst.c:5741
 #, c-format
 msgid "$%s: cannot assign in this way"
 msgstr "$%s: cannot assign in this way"
 
-#: subst.c:6652
+#: subst.c:7110
 #, c-format
 msgid "no match: %s"
 msgstr "no match: %s"
@@ -1446,43 +1441,43 @@ msgstr ""
 msgid "trap_handler: bad signal %d"
 msgstr "trap_handler: bad signal %d"
 
-#: variables.c:310
+#: variables.c:314
 #, c-format
 msgid "error importing function definition for `%s'"
 msgstr "error importing function definition for ‘%s’"
 
-#: variables.c:670
+#: variables.c:674
 #, c-format
 msgid "shell level (%d) too high, resetting to 1"
 msgstr "shell level (%d) too high, resetting to 1"
 
-#: variables.c:1610
+#: variables.c:1617
 msgid "make_local_variable: no function context at current scope"
 msgstr "make_local_variable: no function context at current scope"
 
-#: variables.c:2709
+#: variables.c:2724
 msgid "all_local_variables: no function context at current scope"
 msgstr "all_local_variables: no function context at current scope"
 
-#: variables.c:2923 variables.c:2932
+#: variables.c:2938 variables.c:2947
 #, c-format
 msgid "invalid character %d in exportstr for %s"
 msgstr "invalid character %d in exportstr for %s"
 
-#: variables.c:2938
+#: variables.c:2953
 #, c-format
 msgid "no `=' in exportstr for %s"
 msgstr "no ‘=’ in exportstr for %s"
 
-#: variables.c:3363
+#: variables.c:3378
 msgid "pop_var_context: head of shell_variables not a function context"
 msgstr "pop_var_context: head of shell_variables not a function context"
 
-#: variables.c:3376
+#: variables.c:3391
 msgid "pop_var_context: no global_variables context"
 msgstr "pop_var_context: no global_variables context"
 
-#: variables.c:3442
+#: variables.c:3457
 msgid "pop_scope: head of shell_variables not a temporary environment scope"
 msgstr "pop_scope: head of shell_variables not a temporary environment scope"
 
@@ -3359,478 +3354,483 @@ msgid "The command ARG is to be read and executed when the shell receives"
 msgstr "The command ARG is to be read and executed when the shell receives"
 
 #: builtins.c:1000
-msgid "signal(s) SIGNAL_SPEC.  If ARG is absent all specified signals are"
+#, fuzzy
+msgid "signal(s) SIGNAL_SPEC.  If ARG is absent (and a single SIGNAL_SPEC"
 msgstr "signal(s) SIGNAL_SPEC.  If ARG is absent all specified signals are"
 
 #: builtins.c:1001
-msgid "reset to their original values.  If ARG is the null string each"
-msgstr "reset to their original values.  If ARG is the null string each"
+msgid "is supplied) or `-', each specified signal is reset to its original"
+msgstr ""
 
 #: builtins.c:1002
-msgid "SIGNAL_SPEC is ignored by the shell and by the commands it invokes."
-msgstr "SIGNAL_SPEC is ignored by the shell and by the commands it invokes."
+msgid "value.  If ARG is the null string each SIGNAL_SPEC is ignored by the"
+msgstr ""
 
 #: builtins.c:1003
-msgid "If a SIGNAL_SPEC is EXIT (0) the command ARG is executed on exit from"
-msgstr "If a SIGNAL_SPEC is EXIT (0) the command ARG is executed on exit from"
+msgid "shell and by the commands it invokes.  If a SIGNAL_SPEC is EXIT (0)"
+msgstr ""
 
 #: builtins.c:1004
-msgid "the shell.  If a SIGNAL_SPEC is DEBUG, ARG is executed after every"
-msgstr "the shell.  If a SIGNAL_SPEC is DEBUG, ARG is executed after every"
+msgid "the command ARG is executed on exit from the shell.  If a SIGNAL_SPEC"
+msgstr ""
 
 #: builtins.c:1005
-msgid "command.  If ARG is `-p' then the trap commands associated with"
-msgstr "command.  If ARG is ‘-p’ then the trap commands associated with"
+msgid ""
+"is DEBUG, ARG is executed after every simple command.  If the`-p' option"
+msgstr ""
 
 #: builtins.c:1006
-msgid "each SIGNAL_SPEC are displayed.  If no arguments are supplied or if"
-msgstr "each SIGNAL_SPEC are displayed.  If no arguments are supplied or if"
+#, fuzzy
+msgid "is supplied then the trap commands associated with each SIGNAL_SPEC are"
+msgstr "command.  If ARG is ‘-p’ then the trap commands associated with"
 
 #: builtins.c:1007
-msgid "only `-p' is given, trap prints the list of commands associated with"
-msgstr "only ‘-p’ is given, trap prints the list of commands associated with"
+#, fuzzy
+msgid "displayed.  If no arguments are supplied or if only `-p' is given, trap"
+msgstr "each SIGNAL_SPEC are displayed.  If no arguments are supplied or if"
 
 #: builtins.c:1008
+#, fuzzy
 msgid ""
-"each signal number.  Each SIGNAL_SPEC is either a signal name in <signal.h>"
-msgstr ""
-"each signal number.  Each SIGNAL_SPEC is either a signal name in <signal.h>"
+"prints the list of commands associated with each signal.  Each SIGNAL_SPEC"
+msgstr "only ‘-p’ is given, trap prints the list of commands associated with"
 
 #: builtins.c:1009
-msgid "or a signal number.  `trap -l' prints a list of signal names and their"
-msgstr "or a signal number.  ‘trap -l’ prints a list of signal names and their"
+msgid "is either a signal name in <signal.h> or a signal number.  Signal names"
+msgstr ""
 
 #: builtins.c:1010
-msgid "corresponding numbers.  Note that a signal can be sent to the shell"
-msgstr "corresponding numbers.  Note that a signal can be sent to the shell"
+msgid "are case insensitive and the SIG prefix is optional.  `trap -l' prints"
+msgstr ""
 
 #: builtins.c:1011
-msgid "with \"kill -signal $$\"."
-msgstr "with “kill -signal $$”."
+msgid "a list of signal names and their corresponding numbers.  Note that a"
+msgstr ""
+
+#: builtins.c:1012
+msgid "signal can be sent to the shell with \"kill -signal $$\"."
+msgstr ""
 
-#: builtins.c:1017
+#: builtins.c:1018
 msgid "For each NAME, indicate how it would be interpreted if used as a"
 msgstr "For each NAME, indicate how it would be interpreted if used as a"
 
-#: builtins.c:1018
+#: builtins.c:1019
 msgid "command name."
 msgstr "command name."
 
-#: builtins.c:1020
+#: builtins.c:1021
 msgid "If the -t option is used, `type' outputs a single word which is one of"
 msgstr "If the -t option is used, ‘type’ outputs a single word which is one of"
 
-#: builtins.c:1021
+#: builtins.c:1022
 msgid "`alias', `keyword', `function', `builtin', `file' or `', if NAME is an"
 msgstr "‘alias’, ‘keyword’, ‘function’, ‘builtin’, ‘file’ or ‘’, if NAME is an"
 
-#: builtins.c:1022
+#: builtins.c:1023
 msgid "alias, shell reserved word, shell function, shell builtin, disk file,"
 msgstr "alias, shell reserved word, shell function, shell builtin, disk file,"
 
-#: builtins.c:1023
+#: builtins.c:1024
 msgid "or unfound, respectively."
 msgstr "or unfound, respectively."
 
-#: builtins.c:1025
+#: builtins.c:1026
 msgid "If the -p flag is used, `type' either returns the name of the disk"
 msgstr "If the -p flag is used, ‘type’ either returns the name of the disk"
 
-#: builtins.c:1026
+#: builtins.c:1027
 msgid "file that would be executed, or nothing if `type -t NAME' would not"
 msgstr "file that would be executed, or nothing if ‘type -t NAME’ would not"
 
-#: builtins.c:1027
+#: builtins.c:1028
 msgid "return `file'."
 msgstr "return ‘file’."
 
-#: builtins.c:1029
+#: builtins.c:1030
 msgid "If the -a flag is used, `type' displays all of the places that contain"
 msgstr "If the -a flag is used, ‘type’ displays all of the places that contain"
 
-#: builtins.c:1030
+#: builtins.c:1031
 msgid "an executable named `file'.  This includes aliases, builtins, and"
 msgstr "an executable named ‘file’.  This includes aliases, builtins, and"
 
-#: builtins.c:1031
+#: builtins.c:1032
 msgid "functions, if and only if the -p flag is not also used."
 msgstr "functions, if and only if the -p flag is not also used."
 
-#: builtins.c:1033
+#: builtins.c:1034
 msgid "The -f flag suppresses shell function lookup."
 msgstr "The -f flag suppresses shell function lookup."
 
-#: builtins.c:1035
+#: builtins.c:1036
 msgid "The -P flag forces a PATH search for each NAME, even if it is an alias,"
 msgstr ""
 "The -P flag forces a PATH search for each NAME, even if it is an alias,"
 
-#: builtins.c:1036
+#: builtins.c:1037
 msgid "builtin, or function, and returns the name of the disk file that would"
 msgstr "builtin, or function, and returns the name of the disk file that would"
 
-#: builtins.c:1037
+#: builtins.c:1038
 msgid "be executed."
 msgstr "be executed."
 
-#: builtins.c:1044
+#: builtins.c:1045
 msgid "Ulimit provides control over the resources available to processes"
 msgstr "Ulimit provides control over the resources available to processes"
 
-#: builtins.c:1045
+#: builtins.c:1046
 msgid "started by the shell, on systems that allow such control.  If an"
 msgstr "started by the shell, on systems that allow such control.  If an"
 
-#: builtins.c:1046
+#: builtins.c:1047
 msgid "option is given, it is interpreted as follows:"
 msgstr "option is given, it is interpreted as follows:"
 
-#: builtins.c:1048
+#: builtins.c:1049
 msgid "    -S\tuse the `soft' resource limit"
 msgstr "    -S\tuse the ‘soft’ resource limit"
 
-#: builtins.c:1049
+#: builtins.c:1050
 msgid "    -H\tuse the `hard' resource limit"
 msgstr "    -H\tuse the ‘hard’ resource limit"
 
-#: builtins.c:1050
+#: builtins.c:1051
 msgid "    -a\tall current limits are reported"
 msgstr "    -a\tall current limits are reported"
 
-#: builtins.c:1051
+#: builtins.c:1052
 msgid "    -c\tthe maximum size of core files created"
 msgstr "    -c\tthe maximum size of core files created"
 
-#: builtins.c:1052
+#: builtins.c:1053
 msgid "    -d\tthe maximum size of a process's data segment"
 msgstr "    -d\tthe maximum size of a process's data segment"
 
-#: builtins.c:1053
+#: builtins.c:1054
 msgid "    -f\tthe maximum size of files created by the shell"
 msgstr "    -f\tthe maximum size of files created by the shell"
 
-#: builtins.c:1054
+#: builtins.c:1055
 msgid "    -l\tthe maximum size a process may lock into memory"
 msgstr "    -l\tthe maximum size a process may lock into memory"
 
-#: builtins.c:1055
+#: builtins.c:1056
 msgid "    -m\tthe maximum resident set size"
 msgstr "    -m\tthe maximum resident set size"
 
-#: builtins.c:1056
+#: builtins.c:1057
 msgid "    -n\tthe maximum number of open file descriptors"
 msgstr "    -n\tthe maximum number of open file descriptors"
 
-#: builtins.c:1057
+#: builtins.c:1058
 msgid "    -p\tthe pipe buffer size"
 msgstr "    -p\tthe pipe buffer size"
 
-#: builtins.c:1058
+#: builtins.c:1059
 msgid "    -s\tthe maximum stack size"
 msgstr "    -s\tthe maximum stack size"
 
-#: builtins.c:1059
+#: builtins.c:1060
 msgid "    -t\tthe maximum amount of cpu time in seconds"
 msgstr "    -t\tthe maximum amount of cpu time in seconds"
 
-#: builtins.c:1060
+#: builtins.c:1061
 msgid "    -u\tthe maximum number of user processes"
 msgstr "    -u\tthe maximum number of user processes"
 
-#: builtins.c:1061
+#: builtins.c:1062
 msgid "    -v\tthe size of virtual memory"
 msgstr "    -v\tthe size of virtual memory"
 
-#: builtins.c:1063
+#: builtins.c:1064
 msgid "If LIMIT is given, it is the new value of the specified resource;"
 msgstr "If LIMIT is given, it is the new value of the specified resource;"
 
-#: builtins.c:1064
+#: builtins.c:1065
 msgid "the special LIMIT values `soft', `hard', and `unlimited' stand for"
 msgstr "the special LIMIT values ‘soft’, ‘hard’, and ‘unlimited’ stand for"
 
-#: builtins.c:1065
+#: builtins.c:1066
 msgid ""
 "the current soft limit, the current hard limit, and no limit, respectively."
 msgstr ""
 "the current soft limit, the current hard limit, and no limit, respectively."
 
-#: builtins.c:1066
+#: builtins.c:1067
 msgid "Otherwise, the current value of the specified resource is printed."
 msgstr "Otherwise, the current value of the specified resource is printed."
 
-#: builtins.c:1067
+#: builtins.c:1068
 msgid "If no option is given, then -f is assumed.  Values are in 1024-byte"
 msgstr "If no option is given, then -f is assumed.  Values are in 1024-byte"
 
-#: builtins.c:1068
+#: builtins.c:1069
 msgid "increments, except for -t, which is in seconds, -p, which is in"
 msgstr "increments, except for -t, which is in seconds, -p, which is in"
 
-#: builtins.c:1069
+#: builtins.c:1070
 msgid "increments of 512 bytes, and -u, which is an unscaled number of"
 msgstr "increments of 512 bytes, and -u, which is an unscaled number of"
 
-#: builtins.c:1070
+#: builtins.c:1071
 msgid "processes."
 msgstr "processes."
 
-#: builtins.c:1077
+#: builtins.c:1078
 msgid "The user file-creation mask is set to MODE.  If MODE is omitted, or if"
 msgstr "The user file-creation mask is set to MODE.  If MODE is omitted, or if"
 
-#: builtins.c:1078
+#: builtins.c:1079
 msgid "`-S' is supplied, the current value of the mask is printed.  The `-S'"
 msgstr "‘-S’ is supplied, the current value of the mask is printed.  The ‘-S’"
 
-#: builtins.c:1079
+#: builtins.c:1080
 msgid "option makes the output symbolic; otherwise an octal number is output."
 msgstr "option makes the output symbolic; otherwise an octal number is output."
 
-#: builtins.c:1080
+#: builtins.c:1081
 msgid "If `-p' is supplied, and MODE is omitted, the output is in a form"
 msgstr "If ‘-p’ is supplied, and MODE is omitted, the output is in a form"
 
-#: builtins.c:1081
+#: builtins.c:1082
 msgid "that may be used as input.  If MODE begins with a digit, it is"
 msgstr "that may be used as input.  If MODE begins with a digit, it is"
 
-#: builtins.c:1082
+#: builtins.c:1083
 msgid "interpreted as an octal number, otherwise it is a symbolic mode string"
 msgstr "interpreted as an octal number, otherwise it is a symbolic mode string"
 
-#: builtins.c:1083
+#: builtins.c:1084
 msgid "like that accepted by chmod(1)."
 msgstr "like that accepted by chmod(1)."
 
-#: builtins.c:1090 builtins.c:1102
+#: builtins.c:1091 builtins.c:1103
 msgid "Wait for the specified process and report its termination status.  If"
 msgstr "Wait for the specified process and report its termination status.  If"
 
-#: builtins.c:1091 builtins.c:1103
+#: builtins.c:1092 builtins.c:1104
 msgid "N is not given, all currently active child processes are waited for,"
 msgstr "N is not given, all currently active child processes are waited for,"
 
-#: builtins.c:1092
+#: builtins.c:1093
 msgid "and the return code is zero.  N may be a process ID or a job"
 msgstr "and the return code is zero.  N may be a process ID or a job"
 
-#: builtins.c:1093
+#: builtins.c:1094
 msgid "specification; if a job spec is given, all processes in the job's"
 msgstr "specification; if a job spec is given, all processes in the job's"
 
-#: builtins.c:1094
+#: builtins.c:1095
 msgid "pipeline are waited for."
 msgstr "pipeline are waited for."
 
-#: builtins.c:1104
+#: builtins.c:1105
 msgid "and the return code is zero.  N is a process ID; if it is not given,"
 msgstr "and the return code is zero.  N is a process ID; if it is not given,"
 
-#: builtins.c:1105
+#: builtins.c:1106
 msgid "all child processes of the shell are waited for."
 msgstr "all child processes of the shell are waited for."
 
-#: builtins.c:1112
+#: builtins.c:1113
 msgid "The `for' loop executes a sequence of commands for each member in a"
 msgstr "The ‘for’ loop executes a sequence of commands for each member in a"
 
-#: builtins.c:1113
+#: builtins.c:1114
 msgid "list of items.  If `in WORDS ...;' is not present, then `in \"$@\"' is"
 msgstr "list of items.  If ‘in WORDS ...;’ is not present, then ‘in “$@”’ is"
 
-#: builtins.c:1114
+#: builtins.c:1115
 msgid "assumed.  For each element in WORDS, NAME is set to that element, and"
 msgstr "assumed.  For each element in WORDS, NAME is set to that element, and"
 
-#: builtins.c:1115
+#: builtins.c:1116
 msgid "the COMMANDS are executed."
 msgstr "the COMMANDS are executed."
 
-#: builtins.c:1121
+#: builtins.c:1122
 msgid "Equivalent to"
 msgstr "Equivalent to"
 
-#: builtins.c:1122
+#: builtins.c:1123
 msgid "\t(( EXP1 ))"
 msgstr "\t(( EXP1 ))"
 
-#: builtins.c:1123
+#: builtins.c:1124
 msgid "\twhile (( EXP2 )); do"
 msgstr "\twhile (( EXP2 )); do"
 
-#: builtins.c:1124
+#: builtins.c:1125
 msgid "\t\tCOMMANDS"
 msgstr "\t\tCOMMANDS"
 
-#: builtins.c:1125
+#: builtins.c:1126
 msgid "\t\t(( EXP3 ))"
 msgstr "\t\t(( EXP3 ))"
 
-#: builtins.c:1126
+#: builtins.c:1127
 msgid "\tdone"
 msgstr "\tdone"
 
-#: builtins.c:1127
+#: builtins.c:1128
 msgid "EXP1, EXP2, and EXP3 are arithmetic expressions.  If any expression is"
 msgstr "EXP1, EXP2, and EXP3 are arithmetic expressions.  If any expression is"
 
-#: builtins.c:1128
+#: builtins.c:1129
 msgid "omitted, it behaves as if it evaluates to 1."
 msgstr "omitted, it behaves as if it evaluates to 1."
 
-#: builtins.c:1134
+#: builtins.c:1135
 msgid "The WORDS are expanded, generating a list of words.  The"
 msgstr "The WORDS are expanded, generating a list of words.  The"
 
-#: builtins.c:1135
+#: builtins.c:1136
 msgid "set of expanded words is printed on the standard error, each"
 msgstr "set of expanded words is printed on the standard error, each"
 
-#: builtins.c:1136
+#: builtins.c:1137
 msgid "preceded by a number.  If `in WORDS' is not present, `in \"$@\"'"
 msgstr "preceded by a number.  If ‘in WORDS’ is not present, ‘in “$@”’"
 
-#: builtins.c:1137
+#: builtins.c:1138
 msgid "is assumed.  The PS3 prompt is then displayed and a line read"
 msgstr "is assumed.  The PS3 prompt is then displayed and a line read"
 
-#: builtins.c:1138
+#: builtins.c:1139
 msgid "from the standard input.  If the line consists of the number"
 msgstr "from the standard input.  If the line consists of the number"
 
-#: builtins.c:1139
+#: builtins.c:1140
 msgid "corresponding to one of the displayed words, then NAME is set"
 msgstr "corresponding to one of the displayed words, then NAME is set"
 
-#: builtins.c:1140
+#: builtins.c:1141
 msgid "to that word.  If the line is empty, WORDS and the prompt are"
 msgstr "to that word.  If the line is empty, WORDS and the prompt are"
 
-#: builtins.c:1141
+#: builtins.c:1142
 msgid "redisplayed.  If EOF is read, the command completes.  Any other"
 msgstr "redisplayed.  If EOF is read, the command completes.  Any other"
 
-#: builtins.c:1142
+#: builtins.c:1143
 msgid "value read causes NAME to be set to null.  The line read is saved"
 msgstr "value read causes NAME to be set to null.  The line read is saved"
 
-#: builtins.c:1143
+#: builtins.c:1144
 msgid "in the variable REPLY.  COMMANDS are executed after each selection"
 msgstr "in the variable REPLY.  COMMANDS are executed after each selection"
 
-#: builtins.c:1144
+#: builtins.c:1145
 msgid "until a break command is executed."
 msgstr "until a break command is executed."
 
-#: builtins.c:1150
+#: builtins.c:1151
 msgid "Execute PIPELINE and print a summary of the real time, user CPU time,"
 msgstr "Execute PIPELINE and print a summary of the real time, user CPU time,"
 
-#: builtins.c:1151
+#: builtins.c:1152
 msgid "and system CPU time spent executing PIPELINE when it terminates."
 msgstr "and system CPU time spent executing PIPELINE when it terminates."
 
-#: builtins.c:1152
+#: builtins.c:1153
 msgid "The return status is the return status of PIPELINE.  The `-p' option"
 msgstr "The return status is the return status of PIPELINE.  The ‘-p’ option"
 
-#: builtins.c:1153
+#: builtins.c:1154
 msgid "prints the timing summary in a slightly different format.  This uses"
 msgstr "prints the timing summary in a slightly different format.  This uses"
 
-#: builtins.c:1154
+#: builtins.c:1155
 msgid "the value of the TIMEFORMAT variable as the output format."
 msgstr "the value of the TIMEFORMAT variable as the output format."
 
-#: builtins.c:1160
+#: builtins.c:1161
 msgid "Selectively execute COMMANDS based upon WORD matching PATTERN.  The"
 msgstr "Selectively execute COMMANDS based upon WORD matching PATTERN.  The"
 
-#: builtins.c:1161
+#: builtins.c:1162
 msgid "`|' is used to separate multiple patterns."
 msgstr "‘|’ is used to separate multiple patterns."
 
-#: builtins.c:1167
+#: builtins.c:1168
 msgid ""
 "The if COMMANDS are executed.  If the exit status is zero, then the then"
 msgstr ""
 "The if COMMANDS are executed.  If the exit status is zero, then the then"
 
-#: builtins.c:1168
+#: builtins.c:1169
 msgid ""
 "COMMANDS are executed.  Otherwise, each of the elif COMMANDS are executed"
 msgstr ""
 "COMMANDS are executed.  Otherwise, each of the elif COMMANDS are executed"
 
-#: builtins.c:1169
+#: builtins.c:1170
 msgid ""
 "in turn, and if the exit status is zero, the corresponding then COMMANDS"
 msgstr ""
 "in turn, and if the exit status is zero, the corresponding then COMMANDS"
 
-#: builtins.c:1170
+#: builtins.c:1171
 msgid ""
 "are executed and the if command completes.  Otherwise, the else COMMANDS"
 msgstr ""
 "are executed and the if command completes.  Otherwise, the else COMMANDS"
 
-#: builtins.c:1171
+#: builtins.c:1172
 msgid ""
 "are executed, if present.  The exit status is the exit status of the last"
 msgstr ""
 "are executed, if present.  The exit status is the exit status of the last"
 
-#: builtins.c:1172
+#: builtins.c:1173
 msgid "command executed, or zero if no condition tested true."
 msgstr "command executed, or zero if no condition tested true."
 
-#: builtins.c:1178 builtins.c:1185
+#: builtins.c:1179 builtins.c:1186
 msgid "Expand and execute COMMANDS as long as the final command in the"
 msgstr "Expand and execute COMMANDS as long as the final command in the"
 
-#: builtins.c:1179
+#: builtins.c:1180
 msgid "`while' COMMANDS has an exit status of zero."
 msgstr "‘while’ COMMANDS has an exit status of zero."
 
-#: builtins.c:1186
+#: builtins.c:1187
 msgid "`until' COMMANDS has an exit status which is not zero."
 msgstr "‘until’ COMMANDS has an exit status which is not zero."
 
-#: builtins.c:1192
+#: builtins.c:1193
 msgid "Create a simple command invoked by NAME which runs COMMANDS."
 msgstr "Create a simple command invoked by NAME which runs COMMANDS."
 
-#: builtins.c:1193
+#: builtins.c:1194
 msgid "Arguments on the command line along with NAME are passed to the"
 msgstr "Arguments on the command line along with NAME are passed to the"
 
-#: builtins.c:1194
+#: builtins.c:1195
 msgid "function as $0 .. $n."
 msgstr "function as $0 .. $n."
 
-#: builtins.c:1200
+#: builtins.c:1201
 msgid "Run a set of commands in a group.  This is one way to redirect an"
 msgstr "Run a set of commands in a group.  This is one way to redirect an"
 
-#: builtins.c:1201
+#: builtins.c:1202
 msgid "entire set of commands."
 msgstr "entire set of commands."
 
-#: builtins.c:1207
+#: builtins.c:1208
 msgid "This is similar to the `fg' command.  Resume a stopped or background"
 msgstr "This is similar to the ‘fg’ command.  Resume a stopped or background"
 
-#: builtins.c:1208
-msgid "job.  If you specifiy DIGITS, then that job is used.  If you specify"
-msgstr "job.  If you specifiy DIGITS, then that job is used.  If you specify"
-
 #: builtins.c:1209
-msgid "WORD, then the job whose name begins with WORD is used.  Following the"
-msgstr "WORD, then the job whose name begins with WORD is used.  Following the"
+msgid "job specified by %JOBSPEC.  Following the job specification with a `&'"
+msgstr ""
 
 #: builtins.c:1210
-msgid "job specification with a `&' places the job in the background."
+#, fuzzy
+msgid "places the job in the background."
 msgstr "job specification with a ‘&’ places the job in the background."
 
 #: builtins.c:1216
@@ -3898,386 +3898,433 @@ msgid "BASH_VERSION    Version information for this Bash."
 msgstr "BASH_VERSION    Version information for this Bash."
 
 #: builtins.c:1242
-msgid "CDPATH          A colon separated list of directories to search"
+#, fuzzy
+msgid "CDPATH          A colon-separated list of directories to search"
 msgstr "CDPATH          A colon separated list of directories to search"
 
 #: builtins.c:1243
-msgid "\t\twhen the argument to `cd' is not found in the current"
-msgstr "\t\twhen the argument to ‘cd’ is not found in the current"
+msgid "\t\tfor directries given as arguments to `cd'."
+msgstr ""
 
 #: builtins.c:1244
-msgid "\t\tdirectory."
-msgstr "\t\tdirectory."
-
-#: builtins.c:1245
 msgid "GLOBIGNORE\tA colon-separated list of patterns describing filenames to"
 msgstr "GLOBIGNORE\tA colon-separated list of patterns describing filenames to"
 
-#: builtins.c:1246
+#: builtins.c:1245
 msgid "\t\tbe ignored by pathname expansion."
 msgstr "\t\tbe ignored by pathname expansion."
 
-#: builtins.c:1248
+#: builtins.c:1247
 msgid ""
 "HISTFILE        The name of the file where your command history is stored."
 msgstr ""
 "HISTFILE        The name of the file where your command history is stored."
 
-#: builtins.c:1249
+#: builtins.c:1248
 msgid "HISTFILESIZE    The maximum number of lines this file can contain."
 msgstr "HISTFILESIZE    The maximum number of lines this file can contain."
 
-#: builtins.c:1250
+#: builtins.c:1249
 msgid "HISTSIZE        The maximum number of history lines that a running"
 msgstr "HISTSIZE        The maximum number of history lines that a running"
 
-#: builtins.c:1251
+#: builtins.c:1250
 msgid "\t\tshell can access."
 msgstr "\t\tshell can access."
 
-#: builtins.c:1253
+#: builtins.c:1252
 msgid "HOME            The complete pathname to your login directory."
 msgstr "HOME            The complete pathname to your login directory."
 
-#: builtins.c:1254
+#: builtins.c:1253
 msgid "HOSTNAME\tThe name of the current host."
 msgstr "HOSTNAME\tThe name of the current host."
 
-#: builtins.c:1255
+#: builtins.c:1254
 msgid "HOSTTYPE        The type of CPU this version of Bash is running under."
 msgstr "HOSTTYPE        The type of CPU this version of Bash is running under."
 
-#: builtins.c:1256
+#: builtins.c:1255
 msgid "IGNOREEOF       Controls the action of the shell on receipt of an EOF"
 msgstr "IGNOREEOF       Controls the action of the shell on receipt of an EOF"
 
-#: builtins.c:1257
+#: builtins.c:1256
 msgid "\t\tcharacter as the sole input.  If set, then the value"
 msgstr "\t\tcharacter as the sole input.  If set, then the value"
 
-#: builtins.c:1258
+#: builtins.c:1257
 msgid "\t\tof it is the number of EOF characters that can be seen"
 msgstr "\t\tof it is the number of EOF characters that can be seen"
 
-#: builtins.c:1259
+#: builtins.c:1258
 msgid "\t\tin a row on an empty line before the shell will exit"
 msgstr "\t\tin a row on an empty line before the shell will exit"
 
-#: builtins.c:1260
+#: builtins.c:1259
 msgid "\t\t(default 10).  When unset, EOF signifies the end of input."
 msgstr "\t\t(default 10).  When unset, EOF signifies the end of input."
 
-#: builtins.c:1261
+#: builtins.c:1260
 msgid "MACHTYPE\tA string describing the current system Bash is running on."
 msgstr "MACHTYPE\tA string describing the current system Bash is running on."
 
-#: builtins.c:1262
+#: builtins.c:1261
 msgid "MAILCHECK\tHow often, in seconds, Bash checks for new mail."
 msgstr "MAILCHECK\tHow often, in seconds, Bash checks for new mail."
 
-#: builtins.c:1263
+#: builtins.c:1262
 msgid "MAILPATH\tA colon-separated list of filenames which Bash checks"
 msgstr "MAILPATH\tA colon-separated list of filenames which Bash checks"
 
-#: builtins.c:1264
+#: builtins.c:1263
 msgid "\t\tfor new mail."
 msgstr "\t\tfor new mail."
 
-#: builtins.c:1265
+#: builtins.c:1264
 msgid "OSTYPE\t\tThe version of Unix this version of Bash is running on."
 msgstr "OSTYPE\t\tThe version of Unix this version of Bash is running on."
 
-#: builtins.c:1266
+#: builtins.c:1265
 msgid "PATH            A colon-separated list of directories to search when"
 msgstr "PATH            A colon-separated list of directories to search when"
 
-#: builtins.c:1267
+#: builtins.c:1266
 msgid "\t\tlooking for commands."
 msgstr "\t\tlooking for commands."
 
-#: builtins.c:1268
+#: builtins.c:1267
 msgid "PROMPT_COMMAND  A command to be executed before the printing of each"
 msgstr "PROMPT_COMMAND  A command to be executed before the printing of each"
 
-#: builtins.c:1269
+#: builtins.c:1268
 msgid "\t\tprimary prompt."
 msgstr "\t\tprimary prompt."
 
-#: builtins.c:1270
+#: builtins.c:1269
 msgid "PS1             The primary prompt string."
 msgstr "PS1             The primary prompt string."
 
-#: builtins.c:1271
+#: builtins.c:1270
 msgid "PS2             The secondary prompt string."
 msgstr "PS2             The secondary prompt string."
 
-#: builtins.c:1272
+#: builtins.c:1271
 msgid "PWD\t\tThe full pathname of the current directory."
 msgstr "PWD\t\tThe full pathname of the current directory."
 
-#: builtins.c:1273
+#: builtins.c:1272
 msgid "SHELLOPTS\tA colon-separated list of enabled shell options."
 msgstr "SHELLOPTS\tA colon-separated list of enabled shell options."
 
-#: builtins.c:1274
+#: builtins.c:1273
 msgid "TERM            The name of the current terminal type."
 msgstr "TERM            The name of the current terminal type."
 
-#: builtins.c:1275
+#: builtins.c:1274
 msgid "TIMEFORMAT\tThe output format for timing statistics displayed by the"
 msgstr "TIMEFORMAT\tThe output format for timing statistics displayed by the"
 
-#: builtins.c:1276
+#: builtins.c:1275
 msgid "\t\t`time' reserved word."
 msgstr "\t\t‘time’ reserved word."
 
-#: builtins.c:1277
+#: builtins.c:1276
 msgid "auto_resume     Non-null means a command word appearing on a line by"
 msgstr "auto_resume     Non-null means a command word appearing on a line by"
 
-#: builtins.c:1278
+#: builtins.c:1277
 msgid "\t\titself is first looked for in the list of currently"
 msgstr "\t\titself is first looked for in the list of currently"
 
-#: builtins.c:1279
+#: builtins.c:1278
 msgid "\t\tstopped jobs.  If found there, that job is foregrounded."
 msgstr "\t\tstopped jobs.  If found there, that job is foregrounded."
 
-#: builtins.c:1280
+#: builtins.c:1279
 msgid "\t\tA value of `exact' means that the command word must"
 msgstr "\t\tA value of ‘exact’ means that the command word must"
 
-#: builtins.c:1281
+#: builtins.c:1280
 msgid "\t\texactly match a command in the list of stopped jobs.  A"
 msgstr "\t\texactly match a command in the list of stopped jobs.  A"
 
-#: builtins.c:1282
+#: builtins.c:1281
 msgid "\t\tvalue of `substring' means that the command word must"
 msgstr "\t\tvalue of ‘substring’ means that the command word must"
 
-#: builtins.c:1283
+#: builtins.c:1282
 msgid "\t\tmatch a substring of the job.  Any other value means that"
 msgstr "\t\tmatch a substring of the job.  Any other value means that"
 
-#: builtins.c:1284
+#: builtins.c:1283
 msgid "\t\tthe command must be a prefix of a stopped job."
 msgstr "\t\tthe command must be a prefix of a stopped job."
 
-#: builtins.c:1287
+#: builtins.c:1286
 msgid "histchars       Characters controlling history expansion and quick"
 msgstr "histchars       Characters controlling history expansion and quick"
 
-#: builtins.c:1288
+#: builtins.c:1287
 msgid "\t\tsubstitution.  The first character is the history"
 msgstr "\t\tsubstitution.  The first character is the history"
 
-#: builtins.c:1289
+#: builtins.c:1288
 msgid "\t\tsubstitution character, usually `!'.  The second is"
 msgstr "\t\tsubstitution character, usually ‘!’.  The second is"
 
-#: builtins.c:1290
+#: builtins.c:1289
 msgid "\t\tthe `quick substitution' character, usually `^'.  The"
 msgstr "\t\tthe ‘quick substitution’ character, usually ‘^’.  The"
 
-#: builtins.c:1291
+#: builtins.c:1290
 msgid "\t\tthird is the `history comment' character, usually `#'."
 msgstr "\t\tthird is the ‘history comment’ character, usually ‘#’."
 
-#: builtins.c:1293
+#: builtins.c:1292
 msgid "HISTIGNORE\tA colon-separated list of patterns used to decide which"
 msgstr "HISTIGNORE\tA colon-separated list of patterns used to decide which"
 
-#: builtins.c:1294
+#: builtins.c:1293
 msgid "\t\tcommands should be saved on the history list."
 msgstr "\t\tcommands should be saved on the history list."
 
-#: builtins.c:1306
+#: builtins.c:1305
 msgid "+N\tRotates the stack so that the Nth directory (counting"
 msgstr "+N\tRotates the stack so that the Nth directory (counting"
 
-#: builtins.c:1307
+#: builtins.c:1306
 msgid "\tfrom the left of the list shown by `dirs', starting with"
 msgstr "\tfrom the left of the list shown by ‘dirs’, starting with"
 
-#: builtins.c:1308 builtins.c:1312
+#: builtins.c:1307 builtins.c:1311
 msgid "\tzero) is at the top."
 msgstr "\tzero) is at the top."
 
-#: builtins.c:1310
+#: builtins.c:1309
 msgid "-N\tRotates the stack so that the Nth directory (counting"
 msgstr "-N\tRotates the stack so that the Nth directory (counting"
 
-#: builtins.c:1311
+#: builtins.c:1310
 msgid "\tfrom the right of the list shown by `dirs', starting with"
 msgstr "\tfrom the right of the list shown by ‘dirs’, starting with"
 
-#: builtins.c:1314
+#: builtins.c:1313
 msgid "-n\tsuppress the normal change of directory when adding directories"
 msgstr "-n\tsuppress the normal change of directory when adding directories"
 
-#: builtins.c:1315
+#: builtins.c:1314
 msgid "\tto the stack, so only the stack is manipulated."
 msgstr "\tto the stack, so only the stack is manipulated."
 
-#: builtins.c:1317
+#: builtins.c:1316
 msgid "dir\tadds DIR to the directory stack at the top, making it the"
 msgstr "dir\tadds DIR to the directory stack at the top, making it the"
 
-#: builtins.c:1318
+#: builtins.c:1317
 msgid "\tnew current working directory."
 msgstr "\tnew current working directory."
 
-#: builtins.c:1332
+#: builtins.c:1331
 msgid "+N\tremoves the Nth entry counting from the left of the list"
 msgstr "+N\tremoves the Nth entry counting from the left of the list"
 
-#: builtins.c:1333
+#: builtins.c:1332
 msgid "\tshown by `dirs', starting with zero.  For example: `popd +0'"
 msgstr "\tshown by ‘dirs’, starting with zero.  For example: ‘popd +0’"
 
-#: builtins.c:1334
+#: builtins.c:1333
 msgid "\tremoves the first directory, `popd +1' the second."
 msgstr "\tremoves the first directory, ‘popd +1’ the second."
 
-#: builtins.c:1336
+#: builtins.c:1335
 msgid "-N\tremoves the Nth entry counting from the right of the list"
 msgstr "-N\tremoves the Nth entry counting from the right of the list"
 
-#: builtins.c:1337
+#: builtins.c:1336
 msgid "\tshown by `dirs', starting with zero.  For example: `popd -0'"
 msgstr "\tshown by ‘dirs’, starting with zero.  For example: ‘popd -0’"
 
-#: builtins.c:1338
+#: builtins.c:1337
 msgid "\tremoves the last directory, `popd -1' the next to last."
 msgstr "\tremoves the last directory, ‘popd -1’ the next to last."
 
-#: builtins.c:1340
+#: builtins.c:1339
 msgid "-n\tsuppress the normal change of directory when removing directories"
 msgstr "-n\tsuppress the normal change of directory when removing directories"
 
-#: builtins.c:1341
+#: builtins.c:1340
 msgid "\tfrom the stack, so only the stack is manipulated."
 msgstr "\tfrom the stack, so only the stack is manipulated."
 
-#: builtins.c:1363
+#: builtins.c:1362
 msgid "+N\tdisplays the Nth entry counting from the left of the list shown by"
 msgstr "+N\tdisplays the Nth entry counting from the left of the list shown by"
 
-#: builtins.c:1364 builtins.c:1367
+#: builtins.c:1363 builtins.c:1366
 msgid "\tdirs when invoked without options, starting with zero."
 msgstr "\tdirs when invoked without options, starting with zero."
 
-#: builtins.c:1366
+#: builtins.c:1365
 msgid "-N\tdisplays the Nth entry counting from the right of the list shown by"
 msgstr ""
 "-N\tdisplays the Nth entry counting from the right of the list shown by"
 
-#: builtins.c:1374
+#: builtins.c:1373
 msgid "Toggle the values of variables controlling optional behavior."
 msgstr "Toggle the values of variables controlling optional behavior."
 
-#: builtins.c:1375
+#: builtins.c:1374
 msgid "The -s flag means to enable (set) each OPTNAME; the -u flag"
 msgstr "The -s flag means to enable (set) each OPTNAME; the -u flag"
 
-#: builtins.c:1376
+#: builtins.c:1375
 msgid "unsets each OPTNAME.  The -q flag suppresses output; the exit"
 msgstr "unsets each OPTNAME.  The -q flag suppresses output; the exit"
 
-#: builtins.c:1377
+#: builtins.c:1376
 msgid "status indicates whether each OPTNAME is set or unset.  The -o"
 msgstr "status indicates whether each OPTNAME is set or unset.  The -o"
 
-#: builtins.c:1378
+#: builtins.c:1377
 msgid "option restricts the OPTNAMEs to those defined for use with"
 msgstr "option restricts the OPTNAMEs to those defined for use with"
 
-#: builtins.c:1379
+#: builtins.c:1378
 msgid "`set -o'.  With no options, or with the -p option, a list of all"
 msgstr "‘set -o’.  With no options, or with the -p option, a list of all"
 
-#: builtins.c:1380
+#: builtins.c:1379
 msgid "settable options is displayed, with an indication of whether or"
 msgstr "settable options is displayed, with an indication of whether or"
 
-#: builtins.c:1381
+#: builtins.c:1380
 msgid "not each is set."
 msgstr "not each is set."
 
-#: builtins.c:1387
+#: builtins.c:1386
 msgid "printf formats and prints ARGUMENTS under control of the FORMAT. FORMAT"
 msgstr ""
 "printf formats and prints ARGUMENTS under control of the FORMAT. FORMAT"
 
-#: builtins.c:1388
+#: builtins.c:1387
 msgid "is a character string which contains three types of objects: plain"
 msgstr "is a character string which contains three types of objects: plain"
 
-#: builtins.c:1389
+#: builtins.c:1388
 msgid ""
 "characters, which are simply copied to standard output, character escape"
 msgstr ""
 "characters, which are simply copied to standard output, character escape"
 
-#: builtins.c:1390
+#: builtins.c:1389
 msgid "sequences which are converted and copied to the standard output, and"
 msgstr "sequences which are converted and copied to the standard output, and"
 
-#: builtins.c:1391
+#: builtins.c:1390
 msgid ""
 "format specifications, each of which causes printing of the next successive"
 msgstr ""
 "format specifications, each of which causes printing of the next successive"
 
-#: builtins.c:1392
+#: builtins.c:1391
 msgid "argument.  In addition to the standard printf(1) formats, %b means to"
 msgstr "argument.  In addition to the standard printf(1) formats, %b means to"
 
-#: builtins.c:1393
+#: builtins.c:1392
 msgid "expand backslash escape sequences in the corresponding argument, and %q"
 msgstr ""
 "expand backslash escape sequences in the corresponding argument, and %q"
 
-#: builtins.c:1394
+#: builtins.c:1393
 msgid "means to quote the argument in a way that can be reused as shell input."
 msgstr ""
 "means to quote the argument in a way that can be reused as shell input."
 
-#: builtins.c:1401
+#: builtins.c:1400
 msgid "For each NAME, specify how arguments are to be completed."
 msgstr "For each NAME, specify how arguments are to be completed."
 
-#: builtins.c:1402
+#: builtins.c:1401
 msgid "If the -p option is supplied, or if no options are supplied, existing"
 msgstr "If the -p option is supplied, or if no options are supplied, existing"
 
-#: builtins.c:1403
+#: builtins.c:1402
 msgid "completion specifications are printed in a way that allows them to be"
 msgstr "completion specifications are printed in a way that allows them to be"
 
-#: builtins.c:1404
+#: builtins.c:1403
 msgid "reused as input.  The -r option removes a completion specification for"
 msgstr "reused as input.  The -r option removes a completion specification for"
 
-#: builtins.c:1405
+#: builtins.c:1404
 msgid "each NAME, or, if no NAMEs are supplied, all completion specifications."
 msgstr ""
 "each NAME, or, if no NAMEs are supplied, all completion specifications."
 
-#: builtins.c:1413
+#: builtins.c:1412
 msgid "Display the possible completions depending on the options.  Intended"
 msgstr "Display the possible completions depending on the options.  Intended"
 
-#: builtins.c:1414
+#: builtins.c:1413
 msgid ""
 "to be used from within a shell function generating possible completions."
 msgstr ""
 "to be used from within a shell function generating possible completions."
 
-#: builtins.c:1415
+#: builtins.c:1414
 msgid "If the optional WORD argument is supplied, matches against WORD are"
 msgstr "If the optional WORD argument is supplied, matches against WORD are"
 
-#: builtins.c:1416
+#: builtins.c:1415
 msgid "generated."
 msgstr "generated."
+
+#~ msgid "`%s': invalid alias name"
+#~ msgstr "‘%s’: invalid alias name"
+
+#~ msgid "reset to their original values.  If ARG is the null string each"
+#~ msgstr "reset to their original values.  If ARG is the null string each"
+
+#~ msgid "SIGNAL_SPEC is ignored by the shell and by the commands it invokes."
+#~ msgstr "SIGNAL_SPEC is ignored by the shell and by the commands it invokes."
+
+#~ msgid ""
+#~ "If a SIGNAL_SPEC is EXIT (0) the command ARG is executed on exit from"
+#~ msgstr ""
+#~ "If a SIGNAL_SPEC is EXIT (0) the command ARG is executed on exit from"
+
+#~ msgid "the shell.  If a SIGNAL_SPEC is DEBUG, ARG is executed after every"
+#~ msgstr "the shell.  If a SIGNAL_SPEC is DEBUG, ARG is executed after every"
+
+#~ msgid ""
+#~ "each signal number.  Each SIGNAL_SPEC is either a signal name in <signal."
+#~ "h>"
+#~ msgstr ""
+#~ "each signal number.  Each SIGNAL_SPEC is either a signal name in <signal."
+#~ "h>"
+
+#~ msgid ""
+#~ "or a signal number.  `trap -l' prints a list of signal names and their"
+#~ msgstr ""
+#~ "or a signal number.  ‘trap -l’ prints a list of signal names and their"
+
+#~ msgid "corresponding numbers.  Note that a signal can be sent to the shell"
+#~ msgstr "corresponding numbers.  Note that a signal can be sent to the shell"
+
+#~ msgid "with \"kill -signal $$\"."
+#~ msgstr "with “kill -signal $$”."
+
+#~ msgid "job.  If you specifiy DIGITS, then that job is used.  If you specify"
+#~ msgstr ""
+#~ "job.  If you specifiy DIGITS, then that job is used.  If you specify"
+
+#~ msgid ""
+#~ "WORD, then the job whose name begins with WORD is used.  Following the"
+#~ msgstr ""
+#~ "WORD, then the job whose name begins with WORD is used.  Following the"
+
+#~ msgid "\t\twhen the argument to `cd' is not found in the current"
+#~ msgstr "\t\twhen the argument to ‘cd’ is not found in the current"
+
+#~ msgid "\t\tdirectory."
+#~ msgstr "\t\tdirectory."
diff --git a/po/en@quot.po~ b/po/en@quot.po~
new file mode 100644 (file)
index 0000000..a560bf6
--- /dev/null
@@ -0,0 +1,4283 @@
+# English translations for GNU bash package.
+# Copyright (C) 2004 Free Software Foundation, Inc.
+# This file is distributed under the same license as the GNU bash package.
+# Automatically generated, 2004.
+#
+# All this catalog "translates" are quotation characters.
+# The msgids must be ASCII and therefore cannot contain real quotation
+# characters, only substitutes like grave accent (0x60), apostrophe (0x27)
+# and double quote (0x22). These substitutes look strange; see
+# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
+#
+# This catalog translates grave accent (0x60) and apostrophe (0x27) to
+# left single quotation mark (U+2018) and right single quotation mark (U+2019).
+# It also translates pairs of apostrophe (0x27) to
+# left single quotation mark (U+2018) and right single quotation mark (U+2019)
+# and pairs of quotation mark (0x22) to
+# left double quotation mark (U+201C) and right double quotation mark (U+201D).
+#
+# When output to an UTF-8 terminal, the quotation characters appear perfectly.
+# When output to an ISO-8859-1 terminal, the single quotation marks are
+# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to
+# grave/acute accent (by libiconv), and the double quotation marks are
+# transliterated to 0x22.
+# When output to an ASCII terminal, the single quotation marks are
+# transliterated to apostrophes, and the double quotation marks are
+# transliterated to 0x22.
+#
+#: builtins/caller.def:128 builtins/caller.def:132 builtins/pushd.def:655
+#: builtins/pushd.def:663 builtins/pushd.def:666 builtins/pushd.def:676
+#: builtins/pushd.def:680 builtins/pushd.def:684 builtins/pushd.def:687
+#: builtins/pushd.def:690 builtins/pushd.def:699 builtins/pushd.def:703
+#: builtins/pushd.def:707 builtins/pushd.def:710 builtins.c:321 builtins.c:325
+#: builtins.c:390 builtins.c:392 builtins.c:401 builtins.c:404 builtins.c:408
+#: builtins.c:445 builtins.c:487 builtins.c:491 builtins.c:498 builtins.c:509
+#: builtins.c:513 builtins.c:552 builtins.c:555 builtins.c:559 builtins.c:562
+#: builtins.c:630 builtins.c:637 builtins.c:692 builtins.c:713 builtins.c:718
+#: builtins.c:722 builtins.c:745 builtins.c:835 builtins.c:919 builtins.c:921
+#: builtins.c:943 builtins.c:946 builtins.c:948 builtins.c:950 builtins.c:952
+#: builtins.c:954 builtins.c:957 builtins.c:966 builtins.c:968 builtins.c:973
+#: builtins.c:976 builtins.c:1019 builtins.c:1024 builtins.c:1028
+#: builtins.c:1032 builtins.c:1034 builtins.c:1047 builtins.c:1062
+#: builtins.c:1226 builtins.c:1231 builtins.c:1305 builtins.c:1309
+#: builtins.c:1313 builtins.c:1316 builtins.c:1319 builtins.c:1331
+#: builtins.c:1335 builtins.c:1339 builtins.c:1342 builtins.c:1354
+#: builtins.c:1362 builtins.c:1365
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU bash 3.0-rc1\n"
+"POT-Creation-Date: 2003-12-22 15:34-0500\n"
+"PO-Revision-Date: 2003-12-22 15:34-0500\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Report-Msgid-Bugs-To: bug-bash@gnu.org\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: arrayfunc.c:45
+msgid "bad array subscript"
+msgstr "bad array subscript"
+
+#: arrayfunc.c:306
+#, c-format
+msgid "%s: cannot assign to non-numeric index"
+msgstr "%s: cannot assign to non-numeric index"
+
+#: bashhist.c:321
+#, c-format
+msgid "%s: cannot create: %s"
+msgstr "%s: cannot create: %s"
+
+#: bashline.c:2791
+msgid "bash_execute_unix_command: cannot find keymap for command"
+msgstr "bash_execute_unix_command: cannot find keymap for command"
+
+#: bashline.c:2840
+#, c-format
+msgid "%s: first non-whitespace character is not `\"'"
+msgstr "%s: first non-whitespace character is not ‘\"’"
+
+#: bashline.c:2869
+#, c-format
+msgid "no closing `%c' in %s"
+msgstr "no closing ‘%c’ in %s"
+
+#: bashline.c:2903
+#, c-format
+msgid "%s: missing colon separator"
+msgstr "%s: missing colon separator"
+
+#: builtins/alias.def:123
+#, c-format
+msgid "`%s': invalid alias name"
+msgstr "‘%s’: invalid alias name"
+
+#: builtins/bind.def:194
+#, c-format
+msgid "`%s': invalid keymap name"
+msgstr "‘%s’: invalid keymap name"
+
+#: builtins/bind.def:233
+#, c-format
+msgid "%s: cannot read: %s"
+msgstr "%s: cannot read: %s"
+
+#: builtins/bind.def:248
+#, c-format
+msgid "`%s': cannot unbind"
+msgstr "‘%s’: cannot unbind"
+
+#: builtins/bind.def:283
+#, c-format
+msgid "`%s': unknown function name"
+msgstr "‘%s’: unknown function name"
+
+#: builtins/bind.def:291
+#, c-format
+msgid "%s is not bound to any keys.\n"
+msgstr "%s is not bound to any keys.\n"
+
+#: builtins/bind.def:295
+#, c-format
+msgid "%s can be invoked via "
+msgstr "%s can be invoked via "
+
+#: builtins/break.def:128
+msgid "only meaningful in a `for', `while', or `until' loop"
+msgstr "only meaningful in a ‘for’, ‘while’, or ‘until’ loop"
+
+#: builtins/caller.def:127 builtins.c:320
+msgid "Returns the context of the current subroutine call."
+msgstr "Returns the context of the current subroutine call."
+
+#: builtins/caller.def:129 builtins.c:322
+msgid "Without EXPR, returns returns \"$line $filename\".  With EXPR,"
+msgstr "Without EXPR, returns returns “$line $filename”.  With EXPR,"
+
+#: builtins/caller.def:130 builtins.c:323
+msgid "returns \"$line $subroutine $filename\"; this extra information"
+msgstr "returns “$line $subroutine $filename”; this extra information"
+
+#: builtins/caller.def:131 builtins.c:324
+msgid "can be used used to provide a stack trace."
+msgstr "can be used used to provide a stack trace."
+
+#: builtins/caller.def:133 builtins.c:326
+msgid "The value of EXPR indicates how many call frames to go back before the"
+msgstr "The value of EXPR indicates how many call frames to go back before the"
+
+#: builtins/caller.def:134 builtins.c:327
+msgid "current one; the top frame is frame 0."
+msgstr "current one; the top frame is frame 0."
+
+#: builtins/cd.def:188
+msgid "HOME not set"
+msgstr "HOME not set"
+
+#: builtins/cd.def:200
+msgid "OLDPWD not set"
+msgstr "OLDPWD not set"
+
+#: builtins/cd.def:357
+#, c-format
+msgid "write error: %s"
+msgstr "write error: %s"
+
+#: builtins/common.c:133 test.c:921
+msgid "too many arguments"
+msgstr "too many arguments"
+
+#: builtins/common.c:157 shell.c:465 shell.c:737
+#, c-format
+msgid "%s: option requires an argument"
+msgstr "%s: option requires an argument"
+
+#: builtins/common.c:164
+#, c-format
+msgid "%s: numeric argument required"
+msgstr "%s: numeric argument required"
+
+#: builtins/common.c:171
+#, c-format
+msgid "%s: not found"
+msgstr "%s: not found"
+
+#: builtins/common.c:180 shell.c:750
+#, c-format
+msgid "%s: invalid option"
+msgstr "%s: invalid option"
+
+#: builtins/common.c:187
+#, c-format
+msgid "%s: invalid option name"
+msgstr "%s: invalid option name"
+
+#: builtins/common.c:194 general.c:229 general.c:234
+#, c-format
+msgid "`%s': not a valid identifier"
+msgstr "‘%s’: not a valid identifier"
+
+#: builtins/common.c:201
+#, c-format
+msgid "%s: invalid number"
+msgstr "%s: invalid number"
+
+#: builtins/common.c:208
+#, c-format
+msgid "%s: invalid signal specification"
+msgstr "%s: invalid signal specification"
+
+#: builtins/common.c:215
+#, c-format
+msgid "`%s': not a pid or valid job spec"
+msgstr "‘%s’: not a pid or valid job spec"
+
+#: builtins/common.c:222 error.c:453
+#, c-format
+msgid "%s: readonly variable"
+msgstr "%s: readonly variable"
+
+#: builtins/common.c:230
+#, c-format
+msgid "%s: %s out of range"
+msgstr "%s: %s out of range"
+
+#: builtins/common.c:230 builtins/common.c:232
+msgid "argument"
+msgstr "argument"
+
+#: builtins/common.c:232
+#, c-format
+msgid "%s out of range"
+msgstr "%s out of range"
+
+#: builtins/common.c:240
+#, c-format
+msgid "%s: no such job"
+msgstr "%s: no such job"
+
+#: builtins/common.c:248
+#, c-format
+msgid "%s: no job control"
+msgstr "%s: no job control"
+
+#: builtins/common.c:250
+msgid "no job control"
+msgstr "no job control"
+
+#: builtins/common.c:260
+#, c-format
+msgid "%s: restricted"
+msgstr "%s: restricted"
+
+#: builtins/common.c:262
+msgid "restricted"
+msgstr "restricted"
+
+#: builtins/common.c:270
+#, c-format
+msgid "%s: not a shell builtin"
+msgstr "%s: not a shell builtin"
+
+#: builtins/common.c:486
+#, c-format
+msgid "%s: error retrieving current directory: %s: %s\n"
+msgstr "%s: error retrieving current directory: %s: %s\n"
+
+#: builtins/common.c:553 builtins/common.c:555
+#, c-format
+msgid "%s: ambiguous job spec"
+msgstr "%s: ambiguous job spec"
+
+#: builtins/complete.def:251
+#, c-format
+msgid "%s: invalid action name"
+msgstr "%s: invalid action name"
+
+#: builtins/complete.def:381 builtins/complete.def:524
+#, c-format
+msgid "%s: no completion specification"
+msgstr "%s: no completion specification"
+
+#: builtins/complete.def:571
+msgid "warning: -F option may not work as you expect"
+msgstr "warning: -F option may not work as you expect"
+
+#: builtins/complete.def:573
+msgid "warning: -C option may not work as you expect"
+msgstr "warning: -C option may not work as you expect"
+
+#: builtins/declare.def:105
+msgid "can only be used in a function"
+msgstr "can only be used in a function"
+
+#: builtins/declare.def:295
+msgid "cannot use `-f' to make functions"
+msgstr "cannot use ‘-f’ to make functions"
+
+#: builtins/declare.def:307 execute_cmd.c:3949
+#, c-format
+msgid "%s: readonly function"
+msgstr "%s: readonly function"
+
+#: builtins/declare.def:389
+#, c-format
+msgid "%s: cannot destroy array variables in this way"
+msgstr "%s: cannot destroy array variables in this way"
+
+#: builtins/enable.def:128 builtins/enable.def:136
+msgid "dynamic loading not available"
+msgstr "dynamic loading not available"
+
+#: builtins/enable.def:303
+#, c-format
+msgid "cannot open shared object %s: %s"
+msgstr "cannot open shared object %s: %s"
+
+#: builtins/enable.def:326
+#, c-format
+msgid "cannot find %s in shared object %s: %s"
+msgstr "cannot find %s in shared object %s: %s"
+
+#: builtins/enable.def:450
+#, c-format
+msgid "%s: not dynamically loaded"
+msgstr "%s: not dynamically loaded"
+
+#: builtins/enable.def:465
+#, c-format
+msgid "%s: cannot delete: %s"
+msgstr "%s: cannot delete: %s"
+
+#: builtins/evalfile.c:128 execute_cmd.c:3821 shell.c:1395
+#, c-format
+msgid "%s: is a directory"
+msgstr "%s: is a directory"
+
+#: builtins/evalfile.c:133
+#, c-format
+msgid "%s: not a regular file"
+msgstr "%s: not a regular file"
+
+#: builtins/evalfile.c:141
+#, c-format
+msgid "%s: file is too large"
+msgstr "%s: file is too large"
+
+#: builtins/exec.def:205
+#, c-format
+msgid "%s: cannot execute: %s"
+msgstr "%s: cannot execute: %s"
+
+#: builtins/exit.def:83
+msgid "not login shell: use `exit'"
+msgstr "not login shell: use ‘exit’"
+
+#: builtins/exit.def:111
+msgid "There are stopped jobs.\n"
+msgstr "There are stopped jobs.\n"
+
+#: builtins/fc.def:252
+msgid "no command found"
+msgstr "no command found"
+
+#: builtins/fc.def:317
+msgid "history specification"
+msgstr "history specification"
+
+#: builtins/fc.def:338
+#, c-format
+msgid "%s: cannot open temp file: %s"
+msgstr "%s: cannot open temp file: %s"
+
+#: builtins/fg_bg.def:133
+#, c-format
+msgid "job %d started without job control"
+msgstr "job %d started without job control"
+
+#: builtins/getopt.c:109
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: illegal option -- %c\n"
+
+#: builtins/getopt.c:110
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: option requires an argument -- %c\n"
+
+#: builtins/hash.def:83
+msgid "hashing disabled"
+msgstr "hashing disabled"
+
+#: builtins/hash.def:128
+#, c-format
+msgid "%s: hash table empty\n"
+msgstr "%s: hash table empty\n"
+
+#: builtins/help.def:108
+msgid "Shell commands matching keywords `"
+msgstr "Shell commands matching keywords `"
+
+#: builtins/help.def:110
+msgid "Shell commands matching keyword `"
+msgstr "Shell commands matching keyword `"
+
+#: builtins/help.def:138
+#, c-format
+msgid ""
+"no help topics match `%s'.  Try `help help' or `man -k %s' or `info %s'."
+msgstr ""
+"no help topics match ‘%s’.  Try ‘help help’ or ‘man -k %s’ or ‘info %s’."
+
+#: builtins/help.def:164
+#, c-format
+msgid "%s: cannot open: %s"
+msgstr "%s: cannot open: %s"
+
+#: builtins/help.def:182
+msgid ""
+"These shell commands are defined internally.  Type `help' to see this list.\n"
+"Type `help name' to find out more about the function `name'.\n"
+"Use `info bash' to find out more about the shell in general.\n"
+"Use `man -k' or `info' to find out more about commands not in this list.\n"
+"\n"
+"A star (*) next to a name means that the command is disabled.\n"
+"\n"
+msgstr ""
+"These shell commands are defined internally.  Type ‘help’ to see this list.\n"
+"Type ‘help name’ to find out more about the function ‘name’.\n"
+"Use ‘info bash’ to find out more about the shell in general.\n"
+"Use ‘man -k’ or ‘info’ to find out more about commands not in this list.\n"
+"\n"
+"A star (*) next to a name means that the command is disabled.\n"
+"\n"
+
+#: builtins/history.def:148
+msgid "cannot use more than one of -anrw"
+msgstr "cannot use more than one of -anrw"
+
+#: builtins/history.def:180
+msgid "history position"
+msgstr "history position"
+
+#: builtins/history.def:390
+#, c-format
+msgid "%s: history expansion failed"
+msgstr "%s: history expansion failed"
+
+#: builtins/jobs.def:99
+msgid "no other options allowed with `-x'"
+msgstr "no other options allowed with ‘-x’"
+
+#: builtins/kill.def:187
+#, c-format
+msgid "%s: arguments must be process or job IDs"
+msgstr "%s: arguments must be process or job IDs"
+
+#: builtins/kill.def:248
+msgid "Unknown error"
+msgstr "Unknown error"
+
+#: builtins/let.def:94 builtins/let.def:119 expr.c:496 expr.c:511
+msgid "expression expected"
+msgstr "expression expected"
+
+#: builtins/printf.def:249
+#, c-format
+msgid "`%s': missing format character"
+msgstr "‘%s’: missing format character"
+
+#: builtins/printf.def:408
+#, c-format
+msgid "`%c': invalid format character"
+msgstr "‘%c’: invalid format character"
+
+#: builtins/printf.def:601
+msgid "missing hex digit for \\x"
+msgstr "missing hex digit for \\x"
+
+#: builtins/pushd.def:168
+msgid "no other directory"
+msgstr "no other directory"
+
+#: builtins/pushd.def:435
+msgid "<no current directory>"
+msgstr "<no current directory>"
+
+#: builtins/pushd.def:652 builtins.c:1351
+msgid "Display the list of currently remembered directories.  Directories"
+msgstr "Display the list of currently remembered directories.  Directories"
+
+#: builtins/pushd.def:653 builtins.c:1352
+msgid "find their way onto the list with the `pushd' command; you can get"
+msgstr "find their way onto the list with the ‘pushd’ command; you can get"
+
+#: builtins/pushd.def:654 builtins.c:1353
+msgid "back up through the list with the `popd' command."
+msgstr "back up through the list with the ‘popd’ command."
+
+#: builtins/pushd.def:656 builtins.c:1355
+msgid "The -l flag specifies that `dirs' should not print shorthand versions"
+msgstr "The -l flag specifies that ‘dirs’ should not print shorthand versions"
+
+#: builtins/pushd.def:657 builtins.c:1356
+msgid "of directories which are relative to your home directory.  This means"
+msgstr "of directories which are relative to your home directory.  This means"
+
+#: builtins/pushd.def:658 builtins.c:1357
+msgid "that `~/bin' might be displayed as `/homes/bfox/bin'.  The -v flag"
+msgstr "that ‘~/bin’ might be displayed as ‘/homes/bfox/bin’.  The -v flag"
+
+#: builtins/pushd.def:659 builtins.c:1358
+msgid "causes `dirs' to print the directory stack with one entry per line,"
+msgstr "causes ‘dirs’ to print the directory stack with one entry per line,"
+
+#: builtins/pushd.def:660 builtins.c:1359
+msgid "prepending the directory name with its position in the stack.  The -p"
+msgstr "prepending the directory name with its position in the stack.  The -p"
+
+#: builtins/pushd.def:661 builtins.c:1360
+msgid "flag does the same thing, but the stack position is not prepended."
+msgstr "flag does the same thing, but the stack position is not prepended."
+
+#: builtins/pushd.def:662 builtins.c:1361
+msgid "The -c flag clears the directory stack by deleting all of the elements."
+msgstr ""
+"The -c flag clears the directory stack by deleting all of the elements."
+
+#: builtins/pushd.def:664
+msgid "+N   displays the Nth entry counting from the left of the list shown by"
+msgstr ""
+"+N   displays the Nth entry counting from the left of the list shown by"
+
+#: builtins/pushd.def:665 builtins/pushd.def:668
+msgid "     dirs when invoked without options, starting with zero."
+msgstr "     dirs when invoked without options, starting with zero."
+
+#: builtins/pushd.def:667
+msgid ""
+"-N   displays the Nth entry counting from the right of the list shown by"
+msgstr ""
+"-N   displays the Nth entry counting from the right of the list shown by"
+
+#: builtins/pushd.def:673 builtins.c:1302
+msgid "Adds a directory to the top of the directory stack, or rotates"
+msgstr "Adds a directory to the top of the directory stack, or rotates"
+
+#: builtins/pushd.def:674 builtins.c:1303
+msgid "the stack, making the new top of the stack the current working"
+msgstr "the stack, making the new top of the stack the current working"
+
+#: builtins/pushd.def:675 builtins.c:1304
+msgid "directory.  With no arguments, exchanges the top two directories."
+msgstr "directory.  With no arguments, exchanges the top two directories."
+
+#: builtins/pushd.def:677
+msgid "+N   Rotates the stack so that the Nth directory (counting"
+msgstr "+N   Rotates the stack so that the Nth directory (counting"
+
+#: builtins/pushd.def:678
+msgid "     from the left of the list shown by `dirs', starting with"
+msgstr "     from the left of the list shown by ‘dirs’, starting with"
+
+#: builtins/pushd.def:679 builtins/pushd.def:683
+msgid "     zero) is at the top."
+msgstr "     zero) is at the top."
+
+#: builtins/pushd.def:681
+msgid "-N   Rotates the stack so that the Nth directory (counting"
+msgstr "-N   Rotates the stack so that the Nth directory (counting"
+
+#: builtins/pushd.def:682
+msgid "     from the right of the list shown by `dirs', starting with"
+msgstr "     from the right of the list shown by ‘dirs’, starting with"
+
+#: builtins/pushd.def:685
+msgid "-n   suppress the normal change of directory when adding directories"
+msgstr "-n   suppress the normal change of directory when adding directories"
+
+#: builtins/pushd.def:686
+msgid "     to the stack, so only the stack is manipulated."
+msgstr "     to the stack, so only the stack is manipulated."
+
+#: builtins/pushd.def:688
+msgid "dir  adds DIR to the directory stack at the top, making it the"
+msgstr "dir  adds DIR to the directory stack at the top, making it the"
+
+#: builtins/pushd.def:689
+msgid "     new current working directory."
+msgstr "     new current working directory."
+
+#: builtins/pushd.def:691 builtins/pushd.def:711 builtins.c:1320
+#: builtins.c:1343
+msgid "You can see the directory stack with the `dirs' command."
+msgstr "You can see the directory stack with the ‘dirs’ command."
+
+#: builtins/pushd.def:696 builtins.c:1328
+msgid "Removes entries from the directory stack.  With no arguments,"
+msgstr "Removes entries from the directory stack.  With no arguments,"
+
+#: builtins/pushd.def:697 builtins.c:1329
+msgid "removes the top directory from the stack, and cd's to the new"
+msgstr "removes the top directory from the stack, and cd's to the new"
+
+#: builtins/pushd.def:698 builtins.c:1330
+msgid "top directory."
+msgstr "top directory."
+
+#: builtins/pushd.def:700
+msgid "+N   removes the Nth entry counting from the left of the list"
+msgstr "+N   removes the Nth entry counting from the left of the list"
+
+#: builtins/pushd.def:701
+msgid "     shown by `dirs', starting with zero.  For example: `popd +0'"
+msgstr "     shown by ‘dirs’, starting with zero.  For example: ‘popd +0’"
+
+#: builtins/pushd.def:702
+msgid "     removes the first directory, `popd +1' the second."
+msgstr "     removes the first directory, ‘popd +1’ the second."
+
+#: builtins/pushd.def:704
+msgid "-N   removes the Nth entry counting from the right of the list"
+msgstr "-N   removes the Nth entry counting from the right of the list"
+
+#: builtins/pushd.def:705
+msgid "     shown by `dirs', starting with zero.  For example: `popd -0'"
+msgstr "     shown by ‘dirs’, starting with zero.  For example: ‘popd -0’"
+
+#: builtins/pushd.def:706
+msgid "     removes the last directory, `popd -1' the next to last."
+msgstr "     removes the last directory, ‘popd -1’ the next to last."
+
+#: builtins/pushd.def:708
+msgid "-n   suppress the normal change of directory when removing directories"
+msgstr "-n   suppress the normal change of directory when removing directories"
+
+#: builtins/pushd.def:709
+msgid "     from the stack, so only the stack is manipulated."
+msgstr "     from the stack, so only the stack is manipulated."
+
+#: builtins/read.def:207
+#, c-format
+msgid "%s: invalid timeout specification"
+msgstr "%s: invalid timeout specification"
+
+#: builtins/read.def:230
+#, c-format
+msgid "%s: invalid file descriptor specification"
+msgstr "%s: invalid file descriptor specification"
+
+#: builtins/read.def:237
+#, c-format
+msgid "%d: invalid file descriptor: %s"
+msgstr "%d: invalid file descriptor: %s"
+
+#: builtins/read.def:463
+#, c-format
+msgid "read error: %d: %s"
+msgstr "read error: %d: %s"
+
+#: builtins/return.def:63
+msgid "can only `return' from a function or sourced script"
+msgstr "can only ‘return’ from a function or sourced script"
+
+#: builtins/set.def:743
+msgid "cannot simultaneously unset a function and a variable"
+msgstr "cannot simultaneously unset a function and a variable"
+
+#: builtins/set.def:780
+#, c-format
+msgid "%s: cannot unset"
+msgstr "%s: cannot unset"
+
+#: builtins/set.def:787
+#, c-format
+msgid "%s: cannot unset: readonly %s"
+msgstr "%s: cannot unset: readonly %s"
+
+#: builtins/set.def:798
+#, c-format
+msgid "%s: not an array variable"
+msgstr "%s: not an array variable"
+
+#: builtins/setattr.def:165
+#, c-format
+msgid "%s: not a function"
+msgstr "%s: not a function"
+
+#: builtins/shift.def:66 builtins/shift.def:72
+msgid "shift count"
+msgstr "shift count"
+
+#: builtins/shopt.def:226
+msgid "cannot set and unset shell options simultaneously"
+msgstr "cannot set and unset shell options simultaneously"
+
+#: builtins/shopt.def:291
+#, c-format
+msgid "%s: invalid shell option name"
+msgstr "%s: invalid shell option name"
+
+#: builtins/source.def:117
+msgid "filename argument required"
+msgstr "filename argument required"
+
+#: builtins/source.def:137
+#, c-format
+msgid "%s: file not found"
+msgstr "%s: file not found"
+
+#: builtins/suspend.def:93
+msgid "cannot suspend"
+msgstr "cannot suspend"
+
+#: builtins/suspend.def:103
+msgid "cannot suspend a login shell"
+msgstr "cannot suspend a login shell"
+
+#: builtins/type.def:231
+#, c-format
+msgid "%s is aliased to `%s'\n"
+msgstr "%s is aliased to ‘%s’\n"
+
+#: builtins/type.def:252
+#, c-format
+msgid "%s is a shell keyword\n"
+msgstr "%s is a shell keyword\n"
+
+#: builtins/type.def:272
+#, c-format
+msgid "%s is a function\n"
+msgstr "%s is a function\n"
+
+#: builtins/type.def:297
+#, c-format
+msgid "%s is a shell builtin\n"
+msgstr "%s is a shell builtin\n"
+
+#: builtins/type.def:318
+#, c-format
+msgid "%s is %s\n"
+msgstr "%s is %s\n"
+
+#: builtins/type.def:338
+#, c-format
+msgid "%s is hashed (%s)\n"
+msgstr "%s is hashed (%s)\n"
+
+#: builtins/ulimit.def:332
+#, c-format
+msgid "%s: invalid limit argument"
+msgstr "%s: invalid limit argument"
+
+#: builtins/ulimit.def:358
+#, c-format
+msgid "`%c': bad command"
+msgstr "‘%c’: bad command"
+
+#: builtins/ulimit.def:387
+#, c-format
+msgid "%s: cannot get limit: %s"
+msgstr "%s: cannot get limit: %s"
+
+#: builtins/ulimit.def:425
+#, c-format
+msgid "%s: cannot modify limit: %s"
+msgstr "%s: cannot modify limit: %s"
+
+#: builtins/umask.def:112
+msgid "octal number"
+msgstr "octal number"
+
+#: builtins/umask.def:226
+#, c-format
+msgid "`%c': invalid symbolic mode operator"
+msgstr "‘%c’: invalid symbolic mode operator"
+
+#: builtins/umask.def:279
+#, c-format
+msgid "`%c': invalid symbolic mode character"
+msgstr "‘%c’: invalid symbolic mode character"
+
+#: error.c:165
+#, c-format
+msgid "last command: %s\n"
+msgstr "last command: %s\n"
+
+#: error.c:173
+msgid "Aborting..."
+msgstr "Aborting..."
+
+#: error.c:260
+#, c-format
+msgid "%s: warning: "
+msgstr "%s: warning: "
+
+#: error.c:405
+msgid "unknown command error"
+msgstr "unknown command error"
+
+#: error.c:406
+msgid "bad command type"
+msgstr "bad command type"
+
+#: error.c:407
+msgid "bad connector"
+msgstr "bad connector"
+
+#: error.c:408
+msgid "bad jump"
+msgstr "bad jump"
+
+#: error.c:446
+#, c-format
+msgid "%s: unbound variable"
+msgstr "%s: unbound variable"
+
+#: eval.c:175
+msgid "\atimed out waiting for input: auto-logout\n"
+msgstr "\atimed out waiting for input: auto-logout\n"
+
+#: execute_cmd.c:466
+#, c-format
+msgid "cannot redirect standard input from /dev/null: %s"
+msgstr "cannot redirect standard input from /dev/null: %s"
+
+#: execute_cmd.c:1036
+#, c-format
+msgid "TIMEFORMAT: `%c': invalid format character"
+msgstr "TIMEFORMAT: ‘%c’: invalid format character"
+
+#: execute_cmd.c:3521
+#, c-format
+msgid "%s: restricted: cannot specify `/' in command names"
+msgstr "%s: restricted: cannot specify ‘/’ in command names"
+
+#: execute_cmd.c:3609
+#, c-format
+msgid "%s: command not found"
+msgstr "%s: command not found"
+
+#: execute_cmd.c:3839
+#, c-format
+msgid "%s: %s: bad interpreter"
+msgstr "%s: %s: bad interpreter"
+
+#: execute_cmd.c:3876
+#, c-format
+msgid "%s: cannot execute binary file"
+msgstr "%s: cannot execute binary file"
+
+#: execute_cmd.c:3988
+#, c-format
+msgid "cannot duplicate fd %d to fd %d"
+msgstr "cannot duplicate fd %d to fd %d"
+
+#: expr.c:239
+msgid "expression recursion level exceeded"
+msgstr "expression recursion level exceeded"
+
+#: expr.c:263
+msgid "recursion stack underflow"
+msgstr "recursion stack underflow"
+
+#: expr.c:374
+msgid "syntax error in expression"
+msgstr "syntax error in expression"
+
+#: expr.c:414
+msgid "attempted assignment to non-variable"
+msgstr "attempted assignment to non-variable"
+
+#: expr.c:435 expr.c:440 expr.c:750
+msgid "division by 0"
+msgstr "division by 0"
+
+#: expr.c:466
+msgid "bug: bad expassign token"
+msgstr "bug: bad expassign token"
+
+#: expr.c:508
+msgid "`:' expected for conditional expression"
+msgstr "‘:’ expected for conditional expression"
+
+#: expr.c:775
+msgid "exponent less than 0"
+msgstr "exponent less than 0"
+
+#: expr.c:819
+msgid "identifier expected after pre-increment or pre-decrement"
+msgstr "identifier expected after pre-increment or pre-decrement"
+
+#: expr.c:847
+msgid "missing `)'"
+msgstr "missing ‘)’"
+
+#: expr.c:871
+msgid "syntax error: operand expected"
+msgstr "syntax error: operand expected"
+
+#: expr.c:1146
+msgid "invalid number"
+msgstr "invalid number"
+
+#: expr.c:1150
+msgid "invalid arithmetic base"
+msgstr "invalid arithmetic base"
+
+#: expr.c:1170
+msgid "value too great for base"
+msgstr "value too great for base"
+
+#: general.c:60
+msgid "getcwd: cannot access parent directories"
+msgstr "getcwd: cannot access parent directories"
+
+#: input.c:231
+#, c-format
+msgid "cannot allocate new file descriptor for bash input from fd %d"
+msgstr "cannot allocate new file descriptor for bash input from fd %d"
+
+#: input.c:239
+#, c-format
+msgid "save_bash_input: buffer already exists for new fd %d"
+msgstr "save_bash_input: buffer already exists for new fd %d"
+
+#: jobs.c:693
+#, c-format
+msgid "deleting stopped job %d with process group %ld"
+msgstr "deleting stopped job %d with process group %ld"
+
+#: jobs.c:1001
+#, c-format
+msgid "describe_pid: %ld: no such pid"
+msgstr "describe_pid: %ld: no such pid"
+
+#: jobs.c:1632 nojobs.c:648
+#, c-format
+msgid "wait: pid %ld is not a child of this shell"
+msgstr "wait: pid %ld is not a child of this shell"
+
+#: jobs.c:1815
+#, c-format
+msgid "wait_for: No record of process %ld"
+msgstr "wait_for: No record of process %ld"
+
+#: jobs.c:2062
+#, c-format
+msgid "wait_for_job: job %d is stopped"
+msgstr "wait_for_job: job %d is stopped"
+
+#: jobs.c:2284
+#, c-format
+msgid "%s: job has terminated"
+msgstr "%s: job has terminated"
+
+#: jobs.c:2293
+#, c-format
+msgid "%s: job %d already in background"
+msgstr "%s: job %d already in background"
+
+#: jobs.c:3037
+msgid "no job control in this shell"
+msgstr "no job control in this shell"
+
+#: lib/malloc/malloc.c:298
+#, c-format
+msgid "malloc: failed assertion: %s\n"
+msgstr "malloc: failed assertion: %s\n"
+
+#: lib/malloc/malloc.c:314
+#, c-format
+msgid ""
+"\r\n"
+"malloc: %s:%d: assertion botched\r\n"
+msgstr ""
+"\r\n"
+"malloc: %s:%d: assertion botched\r\n"
+
+#: lib/malloc/malloc.c:740
+msgid "malloc: block on free list clobbered"
+msgstr "malloc: block on free list clobbered"
+
+#: lib/malloc/malloc.c:817
+msgid "free: called with already freed block argument"
+msgstr "free: called with already freed block argument"
+
+#: lib/malloc/malloc.c:820
+msgid "free: called with unallocated block argument"
+msgstr "free: called with unallocated block argument"
+
+#: lib/malloc/malloc.c:839
+msgid "free: underflow detected; mh_nbytes out of range"
+msgstr "free: underflow detected; mh_nbytes out of range"
+
+#: lib/malloc/malloc.c:845
+msgid "free: start and end chunk sizes differ"
+msgstr "free: start and end chunk sizes differ"
+
+#: lib/malloc/malloc.c:942
+msgid "realloc: called with unallocated block argument"
+msgstr "realloc: called with unallocated block argument"
+
+#: lib/malloc/malloc.c:957
+msgid "realloc: underflow detected; mh_nbytes out of range"
+msgstr "realloc: underflow detected; mh_nbytes out of range"
+
+#: lib/malloc/malloc.c:963
+msgid "realloc: start and end chunk sizes differ"
+msgstr "realloc: start and end chunk sizes differ"
+
+#: lib/malloc/table.c:175
+msgid "register_alloc: alloc table is full with FIND_ALLOC?\n"
+msgstr "register_alloc: alloc table is full with FIND_ALLOC?\n"
+
+#: lib/malloc/table.c:182
+#, c-format
+msgid "register_alloc: %p already in table as allocated?\n"
+msgstr "register_alloc: %p already in table as allocated?\n"
+
+#: lib/malloc/table.c:218
+#, c-format
+msgid "register_free: %p already in table as free?\n"
+msgstr "register_free: %p already in table as free?\n"
+
+#: lib/malloc/watch.c:46
+msgid "allocated"
+msgstr "allocated"
+
+#: lib/malloc/watch.c:48
+msgid "freed"
+msgstr "freed"
+
+#: lib/malloc/watch.c:50
+msgid "requesting resize"
+msgstr "requesting resize"
+
+#: lib/malloc/watch.c:52
+msgid "just resized"
+msgstr "just resized"
+
+#: lib/malloc/watch.c:54
+msgid "bug: unknown operation"
+msgstr "bug: unknown operation"
+
+#: lib/malloc/watch.c:56
+#, c-format
+msgid "malloc: watch alert: %p %s "
+msgstr "malloc: watch alert: %p %s "
+
+#: lib/sh/fmtulong.c:101
+msgid "invalid base"
+msgstr "invalid base"
+
+#: lib/sh/netopen.c:158
+#, c-format
+msgid "%s: host unknown"
+msgstr "%s: host unknown"
+
+#: lib/sh/netopen.c:165
+#, c-format
+msgid "%s: invalid service"
+msgstr "%s: invalid service"
+
+#: lib/sh/netopen.c:296
+#, c-format
+msgid "%s: bad network path specification"
+msgstr "%s: bad network path specification"
+
+#: lib/sh/netopen.c:336
+msgid "network operations not supported"
+msgstr "network operations not supported"
+
+#: mailcheck.c:382
+msgid "You have mail in $_"
+msgstr "You have mail in $_"
+
+#: mailcheck.c:407
+msgid "You have new mail in $_"
+msgstr "You have new mail in $_"
+
+#: mailcheck.c:423
+#, c-format
+msgid "The mail in %s has been read\n"
+msgstr "The mail in %s has been read\n"
+
+#: make_cmd.c:318
+msgid "syntax error: arithmetic expression required"
+msgstr "syntax error: arithmetic expression required"
+
+#: make_cmd.c:320
+msgid "syntax error: `;' unexpected"
+msgstr "syntax error: ‘;’ unexpected"
+
+#: make_cmd.c:321
+#, c-format
+msgid "syntax error: `((%s))'"
+msgstr "syntax error: ‘((%s))’"
+
+#: make_cmd.c:560
+#, c-format
+msgid "make_here_document: bad instruction type %d"
+msgstr "make_here_document: bad instruction type %d"
+
+#: make_cmd.c:730
+#, c-format
+msgid "make_redirection: redirection instruction `%d' out of range"
+msgstr "make_redirection: redirection instruction ‘%d’ out of range"
+
+#: parse.y:2726
+#, c-format
+msgid "unexpected EOF while looking for matching `%c'"
+msgstr "unexpected EOF while looking for matching ‘%c’"
+
+#: parse.y:3011
+msgid "unexpected EOF while looking for `]]'"
+msgstr "unexpected EOF while looking for ‘]]’"
+
+#: parse.y:3016
+#, c-format
+msgid "syntax error in conditional expression: unexpected token `%s'"
+msgstr "syntax error in conditional expression: unexpected token ‘%s’"
+
+#: parse.y:3020
+msgid "syntax error in conditional expression"
+msgstr "syntax error in conditional expression"
+
+#: parse.y:3098
+#, c-format
+msgid "unexpected token `%s', expected `)'"
+msgstr "unexpected token ‘%s’, expected ‘)’"
+
+#: parse.y:3102
+msgid "expected `)'"
+msgstr "expected ‘)’"
+
+#: parse.y:3130
+#, c-format
+msgid "unexpected argument `%s' to conditional unary operator"
+msgstr "unexpected argument ‘%s’ to conditional unary operator"
+
+#: parse.y:3134
+msgid "unexpected argument to conditional unary operator"
+msgstr "unexpected argument to conditional unary operator"
+
+#: parse.y:3171
+#, c-format
+msgid "unexpected token `%s', conditional binary operator expected"
+msgstr "unexpected token ‘%s’, conditional binary operator expected"
+
+#: parse.y:3175
+msgid "conditional binary operator expected"
+msgstr "conditional binary operator expected"
+
+#: parse.y:3191
+#, c-format
+msgid "unexpected argument `%s' to conditional binary operator"
+msgstr "unexpected argument ‘%s’ to conditional binary operator"
+
+#: parse.y:3195
+msgid "unexpected argument to conditional binary operator"
+msgstr "unexpected argument to conditional binary operator"
+
+#: parse.y:3206
+#, c-format
+msgid "unexpected token `%c' in conditional command"
+msgstr "unexpected token ‘%c’ in conditional command"
+
+#: parse.y:3209
+#, c-format
+msgid "unexpected token `%s' in conditional command"
+msgstr "unexpected token ‘%s’ in conditional command"
+
+#: parse.y:3213
+#, c-format
+msgid "unexpected token %d in conditional command"
+msgstr "unexpected token %d in conditional command"
+
+#: parse.y:4400
+#, c-format
+msgid "syntax error near unexpected token `%s'"
+msgstr "syntax error near unexpected token ‘%s’"
+
+#: parse.y:4418
+#, c-format
+msgid "syntax error near `%s'"
+msgstr "syntax error near ‘%s’"
+
+#: parse.y:4428
+msgid "syntax error: unexpected end of file"
+msgstr "syntax error: unexpected end of file"
+
+#: parse.y:4428
+msgid "syntax error"
+msgstr "syntax error"
+
+#: parse.y:4490
+#, c-format
+msgid "Use \"%s\" to leave the shell.\n"
+msgstr "Use “%s” to leave the shell.\n"
+
+#: parse.y:4649
+msgid "unexpected EOF while looking for matching `)'"
+msgstr "unexpected EOF while looking for matching ‘)’"
+
+#: pcomplete.c:988
+#, c-format
+msgid "completion: function `%s' not found"
+msgstr "completion: function ‘%s’ not found"
+
+#: pcomplib.c:179
+#, c-format
+msgid "progcomp_insert: %s: NULL COMPSPEC"
+msgstr "progcomp_insert: %s: NULL COMPSPEC"
+
+#: print_cmd.c:260
+#, c-format
+msgid "print_command: bad connector `%d'"
+msgstr "print_command: bad connector ‘%d’"
+
+#: print_cmd.c:1172
+#, c-format
+msgid "cprintf: `%c': invalid format character"
+msgstr "cprintf: ‘%c’: invalid format character"
+
+#: redir.c:99
+msgid "file descriptor out of range"
+msgstr "file descriptor out of range"
+
+#: redir.c:141
+#, c-format
+msgid "%s: ambiguous redirect"
+msgstr "%s: ambiguous redirect"
+
+#: redir.c:145
+#, c-format
+msgid "%s: cannot overwrite existing file"
+msgstr "%s: cannot overwrite existing file"
+
+#: redir.c:150
+#, c-format
+msgid "%s: restricted: cannot redirect output"
+msgstr "%s: restricted: cannot redirect output"
+
+#: redir.c:155
+#, c-format
+msgid "cannot create temp file for here document: %s"
+msgstr "cannot create temp file for here document: %s"
+
+#: redir.c:509
+msgid "/dev/(tcp|udp)/host/port not supported without networking"
+msgstr "/dev/(tcp|udp)/host/port not supported without networking"
+
+#: redir.c:949
+msgid "redirection error: cannot duplicate fd"
+msgstr "redirection error: cannot duplicate fd"
+
+#: shell.c:302
+msgid "could not find /tmp, please create!"
+msgstr "could not find /tmp, please create!"
+
+#: shell.c:306
+msgid "/tmp must be a valid directory name"
+msgstr "/tmp must be a valid directory name"
+
+#: shell.c:839
+#, c-format
+msgid "%c%c: invalid option"
+msgstr "%c%c: invalid option"
+
+#: shell.c:1590
+msgid "I have no name!"
+msgstr "I have no name!"
+
+#: shell.c:1725
+#, c-format
+msgid ""
+"Usage:\t%s [GNU long option] [option] ...\n"
+"\t%s [GNU long option] [option] script-file ...\n"
+msgstr ""
+"Usage:\t%s [GNU long option] [option] ...\n"
+"\t%s [GNU long option] [option] script-file ...\n"
+
+#: shell.c:1727
+msgid "GNU long options:\n"
+msgstr "GNU long options:\n"
+
+#: shell.c:1731
+msgid "Shell options:\n"
+msgstr "Shell options:\n"
+
+#: shell.c:1732
+msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n"
+msgstr "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n"
+
+#: shell.c:1747
+#, c-format
+msgid "\t-%s or -o option\n"
+msgstr "\t-%s or -o option\n"
+
+#: shell.c:1753
+#, c-format
+msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
+msgstr "Type ‘%s -c “help set”’ for more information about shell options.\n"
+
+#: shell.c:1754
+#, c-format
+msgid "Type `%s -c help' for more information about shell builtin commands.\n"
+msgstr "Type ‘%s -c help’ for more information about shell builtin commands.\n"
+
+#: shell.c:1755
+msgid "Use the `bashbug' command to report bugs.\n"
+msgstr "Use the ‘bashbug’ command to report bugs.\n"
+
+#: sig.c:485
+#, c-format
+msgid "sigprocmask: %d: invalid operation"
+msgstr "sigprocmask: %d: invalid operation"
+
+#: subst.c:1011
+#, c-format
+msgid "bad substitution: no closing `%s' in %s"
+msgstr "bad substitution: no closing ‘%s’ in %s"
+
+#: subst.c:2020
+#, c-format
+msgid "%s: cannot assign list to array member"
+msgstr "%s: cannot assign list to array member"
+
+#: subst.c:3516 subst.c:3532
+msgid "cannot make pipe for process substitution"
+msgstr "cannot make pipe for process substitution"
+
+#: subst.c:3563
+msgid "cannot make child for process substitution"
+msgstr "cannot make child for process substitution"
+
+#: subst.c:3608
+#, c-format
+msgid "cannot open named pipe %s for reading"
+msgstr "cannot open named pipe %s for reading"
+
+#: subst.c:3610
+#, c-format
+msgid "cannot open named pipe %s for writing"
+msgstr "cannot open named pipe %s for writing"
+
+#: subst.c:3618
+#, c-format
+msgid "cannout reset nodelay mode for fd %d"
+msgstr "cannout reset nodelay mode for fd %d"
+
+#: subst.c:3628
+#, c-format
+msgid "cannot duplicate named pipe %s as fd %d"
+msgstr "cannot duplicate named pipe %s as fd %d"
+
+#: subst.c:3803
+msgid "cannot make pipe for command substitution"
+msgstr "cannot make pipe for command substitution"
+
+#: subst.c:3832
+msgid "cannot make child for command substitution"
+msgstr "cannot make child for command substitution"
+
+#: subst.c:3849
+msgid "command_substitute: cannot duplicate pipe as fd 1"
+msgstr "command_substitute: cannot duplicate pipe as fd 1"
+
+#: subst.c:4284
+#, c-format
+msgid "%s: parameter null or not set"
+msgstr "%s: parameter null or not set"
+
+#: subst.c:4529
+#, c-format
+msgid "%s: substring expression < 0"
+msgstr "%s: substring expression < 0"
+
+#: subst.c:5209
+#, c-format
+msgid "%s: bad substitution"
+msgstr "%s: bad substitution"
+
+#: subst.c:5283
+#, c-format
+msgid "$%s: cannot assign in this way"
+msgstr "$%s: cannot assign in this way"
+
+#: subst.c:6652
+#, c-format
+msgid "no match: %s"
+msgstr "no match: %s"
+
+#: test.c:154
+msgid "argument expected"
+msgstr "argument expected"
+
+#: test.c:163
+#, c-format
+msgid "%s: integer expression expected"
+msgstr "%s: integer expression expected"
+
+#: test.c:361
+msgid "`)' expected"
+msgstr "‘)’ expected"
+
+#: test.c:363
+#, c-format
+msgid "`)' expected, found %s"
+msgstr "‘)’ expected, found %s"
+
+#: test.c:378 test.c:787 test.c:790
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: unary operator expected"
+
+#: test.c:543 test.c:830
+#, c-format
+msgid "%s: binary operator expected"
+msgstr "%s: binary operator expected"
+
+#: test.c:905
+msgid "missing `]'"
+msgstr "missing ‘]’"
+
+#: trap.c:194
+msgid "invalid signal number"
+msgstr "invalid signal number"
+
+#: trap.c:309
+#, c-format
+msgid "run_pending_traps: bad value in trap_list[%d]: %p"
+msgstr "run_pending_traps: bad value in trap_list[%d]: %p"
+
+#: trap.c:313
+#, c-format
+msgid ""
+"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
+msgstr ""
+"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
+
+#: trap.c:349
+#, c-format
+msgid "trap_handler: bad signal %d"
+msgstr "trap_handler: bad signal %d"
+
+#: variables.c:310
+#, c-format
+msgid "error importing function definition for `%s'"
+msgstr "error importing function definition for ‘%s’"
+
+#: variables.c:670
+#, c-format
+msgid "shell level (%d) too high, resetting to 1"
+msgstr "shell level (%d) too high, resetting to 1"
+
+#: variables.c:1610
+msgid "make_local_variable: no function context at current scope"
+msgstr "make_local_variable: no function context at current scope"
+
+#: variables.c:2709
+msgid "all_local_variables: no function context at current scope"
+msgstr "all_local_variables: no function context at current scope"
+
+#: variables.c:2923 variables.c:2932
+#, c-format
+msgid "invalid character %d in exportstr for %s"
+msgstr "invalid character %d in exportstr for %s"
+
+#: variables.c:2938
+#, c-format
+msgid "no `=' in exportstr for %s"
+msgstr "no ‘=’ in exportstr for %s"
+
+#: variables.c:3363
+msgid "pop_var_context: head of shell_variables not a function context"
+msgstr "pop_var_context: head of shell_variables not a function context"
+
+#: variables.c:3376
+msgid "pop_var_context: no global_variables context"
+msgstr "pop_var_context: no global_variables context"
+
+#: variables.c:3442
+msgid "pop_scope: head of shell_variables not a temporary environment scope"
+msgstr "pop_scope: head of shell_variables not a temporary environment scope"
+
+#: version.c:82
+msgid "Copyright (C) 2004 Free Software Foundation, Inc.\n"
+msgstr "Copyright (C) 2004 Free Software Foundation, Inc.\n"
+
+#: xmalloc.c:93
+#, c-format
+msgid "xmalloc: cannot allocate %lu bytes (%lu bytes allocated)"
+msgstr "xmalloc: cannot allocate %lu bytes (%lu bytes allocated)"
+
+#: xmalloc.c:95
+#, c-format
+msgid "xmalloc: cannot allocate %lu bytes"
+msgstr "xmalloc: cannot allocate %lu bytes"
+
+#: xmalloc.c:115
+#, c-format
+msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)"
+msgstr "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)"
+
+#: xmalloc.c:117
+#, c-format
+msgid "xrealloc: cannot allocate %lu bytes"
+msgstr "xrealloc: cannot allocate %lu bytes"
+
+#: xmalloc.c:151
+#, c-format
+msgid "xmalloc: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
+msgstr "xmalloc: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
+
+#: xmalloc.c:153
+#, c-format
+msgid "xmalloc: %s:%d: cannot allocate %lu bytes"
+msgstr "xmalloc: %s:%d: cannot allocate %lu bytes"
+
+#: xmalloc.c:175
+#, c-format
+msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)"
+msgstr "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)"
+
+#: xmalloc.c:177
+#, c-format
+msgid "xrealloc: %s:%d: cannot allocate %lu bytes"
+msgstr "xrealloc: %s:%d: cannot allocate %lu bytes"
+
+#: builtins.c:244
+msgid "`alias' with no arguments or with the -p option prints the list"
+msgstr "‘alias’ with no arguments or with the -p option prints the list"
+
+#: builtins.c:245
+msgid "of aliases in the form alias NAME=VALUE on standard output."
+msgstr "of aliases in the form alias NAME=VALUE on standard output."
+
+#: builtins.c:246
+msgid "Otherwise, an alias is defined for each NAME whose VALUE is given."
+msgstr "Otherwise, an alias is defined for each NAME whose VALUE is given."
+
+#: builtins.c:247
+msgid "A trailing space in VALUE causes the next word to be checked for"
+msgstr "A trailing space in VALUE causes the next word to be checked for"
+
+#: builtins.c:248
+msgid "alias substitution when the alias is expanded.  Alias returns"
+msgstr "alias substitution when the alias is expanded.  Alias returns"
+
+#: builtins.c:249
+msgid "true unless a NAME is given for which no alias has been defined."
+msgstr "true unless a NAME is given for which no alias has been defined."
+
+#: builtins.c:257
+msgid ""
+"Remove NAMEs from the list of defined aliases.  If the -a option is given,"
+msgstr ""
+"Remove NAMEs from the list of defined aliases.  If the -a option is given,"
+
+#: builtins.c:258
+msgid "then remove all alias definitions."
+msgstr "then remove all alias definitions."
+
+#: builtins.c:266
+msgid "Bind a key sequence to a Readline function or a macro, or set"
+msgstr "Bind a key sequence to a Readline function or a macro, or set"
+
+#: builtins.c:267
+msgid "a Readline variable.  The non-option argument syntax is equivalent"
+msgstr "a Readline variable.  The non-option argument syntax is equivalent"
+
+#: builtins.c:268
+msgid "to that found in ~/.inputrc, but must be passed as a single argument:"
+msgstr "to that found in ~/.inputrc, but must be passed as a single argument:"
+
+#: builtins.c:269
+msgid "bind '\"\\C-x\\C-r\": re-read-init-file'."
+msgstr "bind '“\\C-x\\C-r”: re-read-init-file'."
+
+#: builtins.c:270
+msgid "bind accepts the following options:"
+msgstr "bind accepts the following options:"
+
+#: builtins.c:271
+msgid ""
+"  -m  keymap         Use `keymap' as the keymap for the duration of this"
+msgstr ""
+"  -m  keymap         Use ‘keymap’ as the keymap for the duration of this"
+
+#: builtins.c:272
+msgid "                     command.  Acceptable keymap names are emacs,"
+msgstr "                     command.  Acceptable keymap names are emacs,"
+
+#: builtins.c:273
+msgid ""
+"                     emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,"
+msgstr ""
+"                     emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,"
+
+#: builtins.c:274
+msgid "                     vi-command, and vi-insert."
+msgstr "                     vi-command, and vi-insert."
+
+#: builtins.c:275
+msgid "  -l                 List names of functions."
+msgstr "  -l                 List names of functions."
+
+#: builtins.c:276
+msgid "  -P                 List function names and bindings."
+msgstr "  -P                 List function names and bindings."
+
+#: builtins.c:277
+msgid "  -p                 List functions and bindings in a form that can be"
+msgstr "  -p                 List functions and bindings in a form that can be"
+
+#: builtins.c:278
+msgid "                     reused as input."
+msgstr "                     reused as input."
+
+#: builtins.c:279
+msgid "  -r  keyseq         Remove the binding for KEYSEQ."
+msgstr "  -r  keyseq         Remove the binding for KEYSEQ."
+
+#: builtins.c:280
+msgid "  -x  keyseq:shell-command\tCause SHELL-COMMAND to be executed when"
+msgstr "  -x  keyseq:shell-command\tCause SHELL-COMMAND to be executed when"
+
+#: builtins.c:281
+msgid "\t\t\t\tKEYSEQ is entered."
+msgstr "\t\t\t\tKEYSEQ is entered."
+
+#: builtins.c:282
+msgid "  -f  filename       Read key bindings from FILENAME."
+msgstr "  -f  filename       Read key bindings from FILENAME."
+
+#: builtins.c:283
+msgid "  -q  function-name  Query about which keys invoke the named function."
+msgstr "  -q  function-name  Query about which keys invoke the named function."
+
+#: builtins.c:284
+msgid ""
+"  -u  function-name  Unbind all keys which are bound to the named function."
+msgstr ""
+"  -u  function-name  Unbind all keys which are bound to the named function."
+
+#: builtins.c:285
+msgid "  -V                 List variable names and values"
+msgstr "  -V                 List variable names and values"
+
+#: builtins.c:286
+msgid "  -v                 List variable names and values in a form that can"
+msgstr "  -v                 List variable names and values in a form that can"
+
+#: builtins.c:287
+msgid "                     be reused as input."
+msgstr "                     be reused as input."
+
+#: builtins.c:288
+msgid ""
+"  -S                 List key sequences that invoke macros and their values"
+msgstr ""
+"  -S                 List key sequences that invoke macros and their values"
+
+#: builtins.c:289
+msgid ""
+"  -s                 List key sequences that invoke macros and their values"
+msgstr ""
+"  -s                 List key sequences that invoke macros and their values"
+
+#: builtins.c:290
+msgid "                     in a form that can be reused as input."
+msgstr "                     in a form that can be reused as input."
+
+#: builtins.c:297
+msgid "Exit from within a FOR, WHILE or UNTIL loop.  If N is specified,"
+msgstr "Exit from within a FOR, WHILE or UNTIL loop.  If N is specified,"
+
+#: builtins.c:298
+msgid "break N levels."
+msgstr "break N levels."
+
+#: builtins.c:304
+msgid "Resume the next iteration of the enclosing FOR, WHILE or UNTIL loop."
+msgstr "Resume the next iteration of the enclosing FOR, WHILE or UNTIL loop."
+
+#: builtins.c:305
+msgid "If N is specified, resume at the N-th enclosing loop."
+msgstr "If N is specified, resume at the N-th enclosing loop."
+
+#: builtins.c:311
+msgid "Run a shell builtin.  This is useful when you wish to rename a"
+msgstr "Run a shell builtin.  This is useful when you wish to rename a"
+
+#: builtins.c:312
+msgid "shell builtin to be a function, but need the functionality of the"
+msgstr "shell builtin to be a function, but need the functionality of the"
+
+#: builtins.c:313
+msgid "builtin within the function itself."
+msgstr "builtin within the function itself."
+
+#: builtins.c:334
+msgid "Change the current directory to DIR.  The variable $HOME is the"
+msgstr "Change the current directory to DIR.  The variable $HOME is the"
+
+#: builtins.c:335
+msgid "default DIR.  The variable CDPATH defines the search path for"
+msgstr "default DIR.  The variable CDPATH defines the search path for"
+
+#: builtins.c:336
+msgid "the directory containing DIR.  Alternative directory names in CDPATH"
+msgstr "the directory containing DIR.  Alternative directory names in CDPATH"
+
+#: builtins.c:337
+msgid "are separated by a colon (:).  A null directory name is the same as"
+msgstr "are separated by a colon (:).  A null directory name is the same as"
+
+#: builtins.c:338
+msgid "the current directory, i.e. `.'.  If DIR begins with a slash (/),"
+msgstr "the current directory, i.e. ‘.’.  If DIR begins with a slash (/),"
+
+#: builtins.c:339
+msgid "then CDPATH is not used.  If the directory is not found, and the"
+msgstr "then CDPATH is not used.  If the directory is not found, and the"
+
+#: builtins.c:340
+msgid "shell option `cdable_vars' is set, then try the word as a variable"
+msgstr "shell option ‘cdable_vars’ is set, then try the word as a variable"
+
+#: builtins.c:341
+msgid "name.  If that variable has a value, then cd to the value of that"
+msgstr "name.  If that variable has a value, then cd to the value of that"
+
+#: builtins.c:342
+msgid "variable.  The -P option says to use the physical directory structure"
+msgstr "variable.  The -P option says to use the physical directory structure"
+
+#: builtins.c:343
+msgid ""
+"instead of following symbolic links; the -L option forces symbolic links"
+msgstr ""
+"instead of following symbolic links; the -L option forces symbolic links"
+
+#: builtins.c:344
+msgid "to be followed."
+msgstr "to be followed."
+
+#: builtins.c:350
+msgid "Print the current working directory.  With the -P option, pwd prints"
+msgstr "Print the current working directory.  With the -P option, pwd prints"
+
+#: builtins.c:351
+msgid "the physical directory, without any symbolic links; the -L option"
+msgstr "the physical directory, without any symbolic links; the -L option"
+
+#: builtins.c:352
+msgid "makes pwd follow symbolic links."
+msgstr "makes pwd follow symbolic links."
+
+#: builtins.c:358
+msgid "No effect; the command does nothing.  A zero exit code is returned."
+msgstr "No effect; the command does nothing.  A zero exit code is returned."
+
+#: builtins.c:364
+msgid "Return a successful result."
+msgstr "Return a successful result."
+
+#: builtins.c:370
+msgid "Return an unsuccessful result."
+msgstr "Return an unsuccessful result."
+
+#: builtins.c:376
+msgid "Runs COMMAND with ARGS ignoring shell functions.  If you have a shell"
+msgstr "Runs COMMAND with ARGS ignoring shell functions.  If you have a shell"
+
+#: builtins.c:377
+msgid "function called `ls', and you wish to call the command `ls', you can"
+msgstr "function called ‘ls’, and you wish to call the command ‘ls’, you can"
+
+#: builtins.c:378
+msgid "say \"command ls\".  If the -p option is given, a default value is used"
+msgstr "say “command ls”.  If the -p option is given, a default value is used"
+
+#: builtins.c:379
+msgid "for PATH that is guaranteed to find all of the standard utilities.  If"
+msgstr "for PATH that is guaranteed to find all of the standard utilities.  If"
+
+#: builtins.c:380
+msgid "the -V or -v option is given, a string is printed describing COMMAND."
+msgstr "the -V or -v option is given, a string is printed describing COMMAND."
+
+#: builtins.c:381
+msgid "The -V option produces a more verbose description."
+msgstr "The -V option produces a more verbose description."
+
+#: builtins.c:387
+msgid "Declare variables and/or give them attributes.  If no NAMEs are"
+msgstr "Declare variables and/or give them attributes.  If no NAMEs are"
+
+#: builtins.c:388
+msgid "given, then display the values of variables instead.  The -p option"
+msgstr "given, then display the values of variables instead.  The -p option"
+
+#: builtins.c:389
+msgid "will display the attributes and values of each NAME."
+msgstr "will display the attributes and values of each NAME."
+
+#: builtins.c:391
+msgid "The flags are:"
+msgstr "The flags are:"
+
+#: builtins.c:393
+msgid "  -a\tto make NAMEs arrays (if supported)"
+msgstr "  -a\tto make NAMEs arrays (if supported)"
+
+#: builtins.c:394
+msgid "  -f\tto select from among function names only"
+msgstr "  -f\tto select from among function names only"
+
+#: builtins.c:395
+msgid ""
+"  -F\tto display function names (and line number and source file name if"
+msgstr ""
+"  -F\tto display function names (and line number and source file name if"
+
+#: builtins.c:396
+msgid "\tdebugging) without definitions"
+msgstr "\tdebugging) without definitions"
+
+#: builtins.c:397
+msgid "  -i\tto make NAMEs have the `integer' attribute"
+msgstr "  -i\tto make NAMEs have the ‘integer’ attribute"
+
+#: builtins.c:398
+msgid "  -r\tto make NAMEs readonly"
+msgstr "  -r\tto make NAMEs readonly"
+
+#: builtins.c:399
+msgid "  -t\tto make NAMEs have the `trace' attribute"
+msgstr "  -t\tto make NAMEs have the ‘trace’ attribute"
+
+#: builtins.c:400
+msgid "  -x\tto make NAMEs export"
+msgstr "  -x\tto make NAMEs export"
+
+#: builtins.c:402
+msgid "Variables with the integer attribute have arithmetic evaluation (see"
+msgstr "Variables with the integer attribute have arithmetic evaluation (see"
+
+#: builtins.c:403
+msgid "`let') done when the variable is assigned to."
+msgstr "‘let’) done when the variable is assigned to."
+
+#: builtins.c:405
+msgid "When displaying values of variables, -f displays a function's name"
+msgstr "When displaying values of variables, -f displays a function's name"
+
+#: builtins.c:406
+msgid "and definition.  The -F option restricts the display to function"
+msgstr "and definition.  The -F option restricts the display to function"
+
+#: builtins.c:407
+msgid "name only."
+msgstr "name only."
+
+#: builtins.c:409
+msgid "Using `+' instead of `-' turns off the given attribute instead.  When"
+msgstr "Using ‘+’ instead of ‘-’ turns off the given attribute instead.  When"
+
+#: builtins.c:410
+msgid "used in a function, makes NAMEs local, as with the `local' command."
+msgstr "used in a function, makes NAMEs local, as with the ‘local’ command."
+
+#: builtins.c:416
+msgid "Obsolete.  See `declare'."
+msgstr "Obsolete.  See ‘declare’."
+
+#: builtins.c:422
+msgid "Create a local variable called NAME, and give it VALUE.  LOCAL"
+msgstr "Create a local variable called NAME, and give it VALUE.  LOCAL"
+
+#: builtins.c:423
+msgid "can only be used within a function; it makes the variable NAME"
+msgstr "can only be used within a function; it makes the variable NAME"
+
+#: builtins.c:424
+msgid "have a visible scope restricted to that function and its children."
+msgstr "have a visible scope restricted to that function and its children."
+
+#: builtins.c:431
+msgid "Output the ARGs.  If -n is specified, the trailing newline is"
+msgstr "Output the ARGs.  If -n is specified, the trailing newline is"
+
+#: builtins.c:432
+msgid "suppressed.  If the -e option is given, interpretation of the"
+msgstr "suppressed.  If the -e option is given, interpretation of the"
+
+#: builtins.c:433
+msgid "following backslash-escaped characters is turned on:"
+msgstr "following backslash-escaped characters is turned on:"
+
+#: builtins.c:434
+msgid "\t\\a\talert (bell)"
+msgstr "\t\\a\talert (bell)"
+
+#: builtins.c:435
+msgid "\t\\b\tbackspace"
+msgstr "\t\\b\tbackspace"
+
+#: builtins.c:436
+msgid "\t\\c\tsuppress trailing newline"
+msgstr "\t\\c\tsuppress trailing newline"
+
+#: builtins.c:437
+msgid "\t\\E\tescape character"
+msgstr "\t\\E\tescape character"
+
+#: builtins.c:438
+msgid "\t\\f\tform feed"
+msgstr "\t\\f\tform feed"
+
+#: builtins.c:439
+msgid "\t\\n\tnew line"
+msgstr "\t\\n\tnew line"
+
+#: builtins.c:440
+msgid "\t\\r\tcarriage return"
+msgstr "\t\\r\tcarriage return"
+
+#: builtins.c:441
+msgid "\t\\t\thorizontal tab"
+msgstr "\t\\t\thorizontal tab"
+
+#: builtins.c:442
+msgid "\t\\v\tvertical tab"
+msgstr "\t\\v\tvertical tab"
+
+#: builtins.c:443
+msgid "\t\\\\\tbackslash"
+msgstr "\t\\\\\tbackslash"
+
+#: builtins.c:444
+msgid "\t\\num\tthe character whose ASCII code is NUM (octal)."
+msgstr "\t\\num\tthe character whose ASCII code is NUM (octal)."
+
+#: builtins.c:446
+msgid "You can explicitly turn off the interpretation of the above characters"
+msgstr "You can explicitly turn off the interpretation of the above characters"
+
+#: builtins.c:447
+msgid "with the -E option."
+msgstr "with the -E option."
+
+#: builtins.c:455
+msgid ""
+"Output the ARGs.  If -n is specified, the trailing newline is suppressed."
+msgstr ""
+"Output the ARGs.  If -n is specified, the trailing newline is suppressed."
+
+#: builtins.c:462
+msgid "Enable and disable builtin shell commands.  This allows"
+msgstr "Enable and disable builtin shell commands.  This allows"
+
+#: builtins.c:463
+msgid "you to use a disk command which has the same name as a shell"
+msgstr "you to use a disk command which has the same name as a shell"
+
+#: builtins.c:464
+msgid "builtin without specifying a full pathname.  If -n is used, the"
+msgstr "builtin without specifying a full pathname.  If -n is used, the"
+
+#: builtins.c:465
+msgid "NAMEs become disabled; otherwise NAMEs are enabled.  For example,"
+msgstr "NAMEs become disabled; otherwise NAMEs are enabled.  For example,"
+
+#: builtins.c:466
+msgid "to use the `test' found in $PATH instead of the shell builtin"
+msgstr "to use the ‘test’ found in $PATH instead of the shell builtin"
+
+#: builtins.c:467
+msgid "version, type `enable -n test'.  On systems supporting dynamic"
+msgstr "version, type ‘enable -n test’.  On systems supporting dynamic"
+
+#: builtins.c:468
+msgid "loading, the -f option may be used to load new builtins from the"
+msgstr "loading, the -f option may be used to load new builtins from the"
+
+#: builtins.c:469
+msgid "shared object FILENAME.  The -d option will delete a builtin"
+msgstr "shared object FILENAME.  The -d option will delete a builtin"
+
+#: builtins.c:470
+msgid "previously loaded with -f.  If no non-option names are given, or"
+msgstr "previously loaded with -f.  If no non-option names are given, or"
+
+#: builtins.c:471
+msgid "the -p option is supplied, a list of builtins is printed.  The"
+msgstr "the -p option is supplied, a list of builtins is printed.  The"
+
+#: builtins.c:472
+msgid "-a option means to print every builtin with an indication of whether"
+msgstr "-a option means to print every builtin with an indication of whether"
+
+#: builtins.c:473
+msgid ""
+"or not it is enabled.  The -s option restricts the output to the POSIX.2"
+msgstr ""
+"or not it is enabled.  The -s option restricts the output to the POSIX.2"
+
+#: builtins.c:474
+msgid ""
+"`special' builtins.  The -n option displays a list of all disabled builtins."
+msgstr ""
+"‘special’ builtins.  The -n option displays a list of all disabled builtins."
+
+#: builtins.c:480
+msgid "Read ARGs as input to the shell and execute the resulting command(s)."
+msgstr "Read ARGs as input to the shell and execute the resulting command(s)."
+
+#: builtins.c:486
+msgid "Getopts is used by shell procedures to parse positional parameters."
+msgstr "Getopts is used by shell procedures to parse positional parameters."
+
+#: builtins.c:488
+msgid "OPTSTRING contains the option letters to be recognized; if a letter"
+msgstr "OPTSTRING contains the option letters to be recognized; if a letter"
+
+#: builtins.c:489
+msgid "is followed by a colon, the option is expected to have an argument,"
+msgstr "is followed by a colon, the option is expected to have an argument,"
+
+#: builtins.c:490
+msgid "which should be separated from it by white space."
+msgstr "which should be separated from it by white space."
+
+#: builtins.c:492
+msgid "Each time it is invoked, getopts will place the next option in the"
+msgstr "Each time it is invoked, getopts will place the next option in the"
+
+#: builtins.c:493
+msgid "shell variable $name, initializing name if it does not exist, and"
+msgstr "shell variable $name, initializing name if it does not exist, and"
+
+#: builtins.c:494
+msgid "the index of the next argument to be processed into the shell"
+msgstr "the index of the next argument to be processed into the shell"
+
+#: builtins.c:495
+msgid "variable OPTIND.  OPTIND is initialized to 1 each time the shell or"
+msgstr "variable OPTIND.  OPTIND is initialized to 1 each time the shell or"
+
+#: builtins.c:496
+msgid "a shell script is invoked.  When an option requires an argument,"
+msgstr "a shell script is invoked.  When an option requires an argument,"
+
+#: builtins.c:497
+msgid "getopts places that argument into the shell variable OPTARG."
+msgstr "getopts places that argument into the shell variable OPTARG."
+
+#: builtins.c:499
+msgid "getopts reports errors in one of two ways.  If the first character"
+msgstr "getopts reports errors in one of two ways.  If the first character"
+
+#: builtins.c:500
+msgid "of OPTSTRING is a colon, getopts uses silent error reporting.  In"
+msgstr "of OPTSTRING is a colon, getopts uses silent error reporting.  In"
+
+#: builtins.c:501
+msgid "this mode, no error messages are printed.  If an invalid option is"
+msgstr "this mode, no error messages are printed.  If an invalid option is"
+
+#: builtins.c:502
+msgid "seen, getopts places the option character found into OPTARG.  If a"
+msgstr "seen, getopts places the option character found into OPTARG.  If a"
+
+#: builtins.c:503
+msgid "required argument is not found, getopts places a ':' into NAME and"
+msgstr "required argument is not found, getopts places a ‘:’ into NAME and"
+
+#: builtins.c:504
+msgid "sets OPTARG to the option character found.  If getopts is not in"
+msgstr "sets OPTARG to the option character found.  If getopts is not in"
+
+#: builtins.c:505
+msgid "silent mode, and an invalid option is seen, getopts places '?' into"
+msgstr "silent mode, and an invalid option is seen, getopts places ‘?’ into"
+
+#: builtins.c:506
+msgid "NAME and unsets OPTARG.  If a required argument is not found, a '?'"
+msgstr "NAME and unsets OPTARG.  If a required argument is not found, a ‘?’"
+
+#: builtins.c:507
+msgid "is placed in NAME, OPTARG is unset, and a diagnostic message is"
+msgstr "is placed in NAME, OPTARG is unset, and a diagnostic message is"
+
+#: builtins.c:508
+msgid "printed."
+msgstr "printed."
+
+#: builtins.c:510
+msgid "If the shell variable OPTERR has the value 0, getopts disables the"
+msgstr "If the shell variable OPTERR has the value 0, getopts disables the"
+
+#: builtins.c:511
+msgid "printing of error messages, even if the first character of"
+msgstr "printing of error messages, even if the first character of"
+
+#: builtins.c:512
+msgid "OPTSTRING is not a colon.  OPTERR has the value 1 by default."
+msgstr "OPTSTRING is not a colon.  OPTERR has the value 1 by default."
+
+#: builtins.c:514
+msgid "Getopts normally parses the positional parameters ($0 - $9), but if"
+msgstr "Getopts normally parses the positional parameters ($0 - $9), but if"
+
+#: builtins.c:515
+msgid "more arguments are given, they are parsed instead."
+msgstr "more arguments are given, they are parsed instead."
+
+#: builtins.c:521
+msgid "Exec FILE, replacing this shell with the specified program."
+msgstr "Exec FILE, replacing this shell with the specified program."
+
+#: builtins.c:522
+msgid "If FILE is not specified, the redirections take effect in this"
+msgstr "If FILE is not specified, the redirections take effect in this"
+
+#: builtins.c:523
+msgid "shell.  If the first argument is `-l', then place a dash in the"
+msgstr "shell.  If the first argument is ‘-l’, then place a dash in the"
+
+#: builtins.c:524
+msgid "zeroth arg passed to FILE, as login does.  If the `-c' option"
+msgstr "zeroth arg passed to FILE, as login does.  If the ‘-c’ option"
+
+#: builtins.c:525
+msgid "is supplied, FILE is executed with a null environment.  The `-a'"
+msgstr "is supplied, FILE is executed with a null environment.  The ‘-a’"
+
+#: builtins.c:526
+msgid "option means to make set argv[0] of the executed process to NAME."
+msgstr "option means to make set argv[0] of the executed process to NAME."
+
+#: builtins.c:527
+msgid "If the file cannot be executed and the shell is not interactive,"
+msgstr "If the file cannot be executed and the shell is not interactive,"
+
+#: builtins.c:528
+msgid "then the shell exits, unless the shell option `execfail' is set."
+msgstr "then the shell exits, unless the shell option ‘execfail’ is set."
+
+#: builtins.c:534
+msgid "Exit the shell with a status of N.  If N is omitted, the exit status"
+msgstr "Exit the shell with a status of N.  If N is omitted, the exit status"
+
+#: builtins.c:535
+msgid "is that of the last command executed."
+msgstr "is that of the last command executed."
+
+#: builtins.c:541
+msgid "Logout of a login shell."
+msgstr "Logout of a login shell."
+
+#: builtins.c:548
+msgid ""
+"fc is used to list or edit and re-execute commands from the history list."
+msgstr ""
+"fc is used to list or edit and re-execute commands from the history list."
+
+#: builtins.c:549
+msgid "FIRST and LAST can be numbers specifying the range, or FIRST can be a"
+msgstr "FIRST and LAST can be numbers specifying the range, or FIRST can be a"
+
+#: builtins.c:550
+msgid "string, which means the most recent command beginning with that"
+msgstr "string, which means the most recent command beginning with that"
+
+#: builtins.c:551
+msgid "string."
+msgstr "string."
+
+#: builtins.c:553
+msgid ""
+"   -e ENAME selects which editor to use.  Default is FCEDIT, then EDITOR,"
+msgstr ""
+"   -e ENAME selects which editor to use.  Default is FCEDIT, then EDITOR,"
+
+#: builtins.c:554
+msgid "      then vi."
+msgstr "      then vi."
+
+#: builtins.c:556
+msgid "   -l means list lines instead of editing."
+msgstr "   -l means list lines instead of editing."
+
+#: builtins.c:557
+msgid "   -n means no line numbers listed."
+msgstr "   -n means no line numbers listed."
+
+#: builtins.c:558
+msgid ""
+"   -r means reverse the order of the lines (making it newest listed first)."
+msgstr ""
+"   -r means reverse the order of the lines (making it newest listed first)."
+
+#: builtins.c:560
+msgid "With the `fc -s [pat=rep ...] [command]' format, the command is"
+msgstr "With the ‘fc -s [pat=rep ...] [command]’ format, the command is"
+
+#: builtins.c:561
+msgid "re-executed after the substitution OLD=NEW is performed."
+msgstr "re-executed after the substitution OLD=NEW is performed."
+
+#: builtins.c:563
+msgid "A useful alias to use with this is r='fc -s', so that typing `r cc'"
+msgstr "A useful alias to use with this is r='fc -s', so that typing ‘r cc’"
+
+#: builtins.c:564
+msgid "runs the last command beginning with `cc' and typing `r' re-executes"
+msgstr "runs the last command beginning with ‘cc’ and typing ‘r’ re-executes"
+
+#: builtins.c:565
+msgid "the last command."
+msgstr "the last command."
+
+#: builtins.c:573
+msgid "Place JOB_SPEC in the foreground, and make it the current job.  If"
+msgstr "Place JOB_SPEC in the foreground, and make it the current job.  If"
+
+#: builtins.c:574
+msgid "JOB_SPEC is not present, the shell's notion of the current job is"
+msgstr "JOB_SPEC is not present, the shell's notion of the current job is"
+
+#: builtins.c:575
+msgid "used."
+msgstr "used."
+
+#: builtins.c:583
+msgid "Place JOB_SPEC in the background, as if it had been started with"
+msgstr "Place JOB_SPEC in the background, as if it had been started with"
+
+#: builtins.c:584
+msgid "`&'.  If JOB_SPEC is not present, the shell's notion of the current"
+msgstr "‘&’.  If JOB_SPEC is not present, the shell's notion of the current"
+
+#: builtins.c:585
+msgid "job is used."
+msgstr "job is used."
+
+#: builtins.c:592
+msgid "For each NAME, the full pathname of the command is determined and"
+msgstr "For each NAME, the full pathname of the command is determined and"
+
+#: builtins.c:593
+msgid "remembered.  If the -p option is supplied, PATHNAME is used as the"
+msgstr "remembered.  If the -p option is supplied, PATHNAME is used as the"
+
+#: builtins.c:594
+msgid "full pathname of NAME, and no path search is performed.  The -r"
+msgstr "full pathname of NAME, and no path search is performed.  The -r"
+
+#: builtins.c:595
+msgid "option causes the shell to forget all remembered locations.  The -d"
+msgstr "option causes the shell to forget all remembered locations.  The -d"
+
+#: builtins.c:596
+msgid "option causes the shell to forget the remembered location of each NAME."
+msgstr ""
+"option causes the shell to forget the remembered location of each NAME."
+
+#: builtins.c:597
+msgid "If the -t option is supplied the full pathname to which each NAME"
+msgstr "If the -t option is supplied the full pathname to which each NAME"
+
+#: builtins.c:598
+msgid "corresponds is printed.  If multiple NAME arguments are supplied with"
+msgstr "corresponds is printed.  If multiple NAME arguments are supplied with"
+
+#: builtins.c:599
+msgid "-t, the NAME is printed before the hashed full pathname.  The -l option"
+msgstr ""
+"-t, the NAME is printed before the hashed full pathname.  The -l option"
+
+#: builtins.c:600
+msgid "causes output to be displayed in a format that may be reused as input."
+msgstr "causes output to be displayed in a format that may be reused as input."
+
+#: builtins.c:601
+msgid ""
+"If no arguments are given, information about remembered commands is "
+"displayed."
+msgstr ""
+"If no arguments are given, information about remembered commands is "
+"displayed."
+
+#: builtins.c:608
+msgid "Display helpful information about builtin commands.  If PATTERN is"
+msgstr "Display helpful information about builtin commands.  If PATTERN is"
+
+#: builtins.c:609
+msgid "specified, gives detailed help on all commands matching PATTERN,"
+msgstr "specified, gives detailed help on all commands matching PATTERN,"
+
+#: builtins.c:610
+msgid "otherwise a list of the builtins is printed.  The -s option"
+msgstr "otherwise a list of the builtins is printed.  The -s option"
+
+#: builtins.c:611
+msgid "restricts the output for each builtin command matching PATTERN to"
+msgstr "restricts the output for each builtin command matching PATTERN to"
+
+#: builtins.c:612
+msgid "a short usage synopsis."
+msgstr "a short usage synopsis."
+
+#: builtins.c:620
+msgid "Display the history list with line numbers.  Lines listed with"
+msgstr "Display the history list with line numbers.  Lines listed with"
+
+#: builtins.c:621
+msgid "with a `*' have been modified.  Argument of N says to list only"
+msgstr "with a ‘*’ have been modified.  Argument of N says to list only"
+
+#: builtins.c:622
+msgid "the last N lines.  The `-c' option causes the history list to be"
+msgstr "the last N lines.  The ‘-c’ option causes the history list to be"
+
+#: builtins.c:623
+msgid "cleared by deleting all of the entries.  The `-d' option deletes"
+msgstr "cleared by deleting all of the entries.  The ‘-d’ option deletes"
+
+#: builtins.c:624
+msgid "the history entry at offset OFFSET.  The `-w' option writes out the"
+msgstr "the history entry at offset OFFSET.  The ‘-w’ option writes out the"
+
+#: builtins.c:625
+msgid "current history to the history file;  `-r' means to read the file and"
+msgstr "current history to the history file;  ‘-r’ means to read the file and"
+
+#: builtins.c:626
+msgid "append the contents to the history list instead.  `-a' means"
+msgstr "append the contents to the history list instead.  ‘-a’ means"
+
+#: builtins.c:627
+msgid "to append history lines from this session to the history file."
+msgstr "to append history lines from this session to the history file."
+
+#: builtins.c:628
+msgid "Argument `-n' means to read all history lines not already read"
+msgstr "Argument ‘-n’ means to read all history lines not already read"
+
+#: builtins.c:629
+msgid "from the history file and append them to the history list."
+msgstr "from the history file and append them to the history list."
+
+#: builtins.c:631
+msgid "If FILENAME is given, then that is used as the history file else"
+msgstr "If FILENAME is given, then that is used as the history file else"
+
+#: builtins.c:632
+msgid "if $HISTFILE has a value, that is used, else ~/.bash_history."
+msgstr "if $HISTFILE has a value, that is used, else ~/.bash_history."
+
+#: builtins.c:633
+msgid "If the -s option is supplied, the non-option ARGs are appended to"
+msgstr "If the -s option is supplied, the non-option ARGs are appended to"
+
+#: builtins.c:634
+msgid "the history list as a single entry.  The -p option means to perform"
+msgstr "the history list as a single entry.  The -p option means to perform"
+
+#: builtins.c:635
+msgid "history expansion on each ARG and display the result, without storing"
+msgstr "history expansion on each ARG and display the result, without storing"
+
+#: builtins.c:636
+msgid "anything in the history list."
+msgstr "anything in the history list."
+
+#: builtins.c:638
+msgid "If the $HISTTIMEFORMAT variable is set and not null, its value is used"
+msgstr "If the $HISTTIMEFORMAT variable is set and not null, its value is used"
+
+#: builtins.c:639
+msgid "as a format string for strftime(3) to print the time stamp associated"
+msgstr "as a format string for strftime(3) to print the time stamp associated"
+
+#: builtins.c:640
+msgid ""
+"with each displayed history entry.  No time stamps are printed otherwise."
+msgstr ""
+"with each displayed history entry.  No time stamps are printed otherwise."
+
+#: builtins.c:648
+msgid "Lists the active jobs.  The -l option lists process id's in addition"
+msgstr "Lists the active jobs.  The -l option lists process id's in addition"
+
+#: builtins.c:649
+msgid "to the normal information; the -p option lists process id's only."
+msgstr "to the normal information; the -p option lists process id's only."
+
+#: builtins.c:650
+msgid "If -n is given, only processes that have changed status since the last"
+msgstr "If -n is given, only processes that have changed status since the last"
+
+#: builtins.c:651
+msgid "notification are printed.  JOBSPEC restricts output to that job.  The"
+msgstr "notification are printed.  JOBSPEC restricts output to that job.  The"
+
+#: builtins.c:652
+msgid "-r and -s options restrict output to running and stopped jobs only,"
+msgstr "-r and -s options restrict output to running and stopped jobs only,"
+
+#: builtins.c:653
+msgid "respectively.  Without options, the status of all active jobs is"
+msgstr "respectively.  Without options, the status of all active jobs is"
+
+#: builtins.c:654
+msgid "printed.  If -x is given, COMMAND is run after all job specifications"
+msgstr "printed.  If -x is given, COMMAND is run after all job specifications"
+
+#: builtins.c:655
+msgid ""
+"that appear in ARGS have been replaced with the process ID of that job's"
+msgstr ""
+"that appear in ARGS have been replaced with the process ID of that job's"
+
+#: builtins.c:656
+msgid "process group leader."
+msgstr "process group leader."
+
+#: builtins.c:664
+msgid ""
+"By default, removes each JOBSPEC argument from the table of active jobs."
+msgstr ""
+"By default, removes each JOBSPEC argument from the table of active jobs."
+
+#: builtins.c:665
+msgid ""
+"If the -h option is given, the job is not removed from the table, but is"
+msgstr ""
+"If the -h option is given, the job is not removed from the table, but is"
+
+#: builtins.c:666
+msgid "marked so that SIGHUP is not sent to the job if the shell receives a"
+msgstr "marked so that SIGHUP is not sent to the job if the shell receives a"
+
+#: builtins.c:667
+msgid ""
+"SIGHUP.  The -a option, when JOBSPEC is not supplied, means to remove all"
+msgstr ""
+"SIGHUP.  The -a option, when JOBSPEC is not supplied, means to remove all"
+
+#: builtins.c:668
+msgid ""
+"jobs from the job table; the -r option means to remove only running jobs."
+msgstr ""
+"jobs from the job table; the -r option means to remove only running jobs."
+
+#: builtins.c:675
+msgid "Send the processes named by PID (or JOB) the signal SIGSPEC.  If"
+msgstr "Send the processes named by PID (or JOB) the signal SIGSPEC.  If"
+
+#: builtins.c:676
+msgid "SIGSPEC is not present, then SIGTERM is assumed.  An argument of `-l'"
+msgstr "SIGSPEC is not present, then SIGTERM is assumed.  An argument of ‘-l’"
+
+#: builtins.c:677
+msgid "lists the signal names; if arguments follow `-l' they are assumed to"
+msgstr "lists the signal names; if arguments follow ‘-l’ they are assumed to"
+
+#: builtins.c:678
+msgid "be signal numbers for which names should be listed.  Kill is a shell"
+msgstr "be signal numbers for which names should be listed.  Kill is a shell"
+
+#: builtins.c:679
+msgid "builtin for two reasons: it allows job IDs to be used instead of"
+msgstr "builtin for two reasons: it allows job IDs to be used instead of"
+
+#: builtins.c:680
+msgid "process IDs, and, if you have reached the limit on processes that"
+msgstr "process IDs, and, if you have reached the limit on processes that"
+
+#: builtins.c:681
+msgid "you can create, you don't have to start a process to kill another one."
+msgstr "you can create, you don't have to start a process to kill another one."
+
+#: builtins.c:687
+msgid "Each ARG is an arithmetic expression to be evaluated.  Evaluation"
+msgstr "Each ARG is an arithmetic expression to be evaluated.  Evaluation"
+
+#: builtins.c:688
+msgid "is done in fixed-width integers with no check for overflow, though"
+msgstr "is done in fixed-width integers with no check for overflow, though"
+
+#: builtins.c:689
+msgid "division by 0 is trapped and flagged as an error.  The following"
+msgstr "division by 0 is trapped and flagged as an error.  The following"
+
+#: builtins.c:690
+msgid "list of operators is grouped into levels of equal-precedence operators."
+msgstr ""
+"list of operators is grouped into levels of equal-precedence operators."
+
+#: builtins.c:691
+msgid "The levels are listed in order of decreasing precedence."
+msgstr "The levels are listed in order of decreasing precedence."
+
+#: builtins.c:693
+msgid "\tid++, id--\tvariable post-increment, post-decrement"
+msgstr "\tid++, id--\tvariable post-increment, post-decrement"
+
+#: builtins.c:694
+msgid "\t++id, --id\tvariable pre-increment, pre-decrement"
+msgstr "\t++id, --id\tvariable pre-increment, pre-decrement"
+
+#: builtins.c:695
+msgid "\t-, +\t\tunary minus, plus"
+msgstr "\t-, +\t\tunary minus, plus"
+
+#: builtins.c:696
+msgid "\t!, ~\t\tlogical and bitwise negation"
+msgstr "\t!, ~\t\tlogical and bitwise negation"
+
+#: builtins.c:697
+msgid "\t**\t\texponentiation"
+msgstr "\t**\t\texponentiation"
+
+#: builtins.c:698
+msgid "\t*, /, %\t\tmultiplication, division, remainder"
+msgstr "\t*, /, %\t\tmultiplication, division, remainder"
+
+#: builtins.c:699
+msgid "\t+, -\t\taddition, subtraction"
+msgstr "\t+, -\t\taddition, subtraction"
+
+#: builtins.c:700
+msgid "\t<<, >>\t\tleft and right bitwise shifts"
+msgstr "\t<<, >>\t\tleft and right bitwise shifts"
+
+#: builtins.c:701
+msgid "\t<=, >=, <, >\tcomparison"
+msgstr "\t<=, >=, <, >\tcomparison"
+
+#: builtins.c:702
+msgid "\t==, !=\t\tequality, inequality"
+msgstr "\t==, !=\t\tequality, inequality"
+
+#: builtins.c:703
+msgid "\t&\t\tbitwise AND"
+msgstr "\t&\t\tbitwise AND"
+
+#: builtins.c:704
+msgid "\t^\t\tbitwise XOR"
+msgstr "\t^\t\tbitwise XOR"
+
+#: builtins.c:705
+msgid "\t|\t\tbitwise OR"
+msgstr "\t|\t\tbitwise OR"
+
+#: builtins.c:706
+msgid "\t&&\t\tlogical AND"
+msgstr "\t&&\t\tlogical AND"
+
+#: builtins.c:707
+msgid "\t||\t\tlogical OR"
+msgstr "\t||\t\tlogical OR"
+
+#: builtins.c:708
+msgid "\texpr ? expr : expr"
+msgstr "\texpr ? expr : expr"
+
+#: builtins.c:709
+msgid "\t\t\tconditional operator"
+msgstr "\t\t\tconditional operator"
+
+#: builtins.c:710
+msgid "\t=, *=, /=, %=,"
+msgstr "\t=, *=, /=, %=,"
+
+#: builtins.c:711
+msgid "\t+=, -=, <<=, >>=,"
+msgstr "\t+=, -=, <<=, >>=,"
+
+#: builtins.c:712
+msgid "\t&=, ^=, |=\tassignment"
+msgstr "\t&=, ^=, |=\tassignment"
+
+#: builtins.c:714
+msgid "Shell variables are allowed as operands.  The name of the variable"
+msgstr "Shell variables are allowed as operands.  The name of the variable"
+
+#: builtins.c:715
+msgid "is replaced by its value (coerced to a fixed-width integer) within"
+msgstr "is replaced by its value (coerced to a fixed-width integer) within"
+
+#: builtins.c:716
+msgid "an expression.  The variable need not have its integer attribute"
+msgstr "an expression.  The variable need not have its integer attribute"
+
+#: builtins.c:717
+msgid "turned on to be used in an expression."
+msgstr "turned on to be used in an expression."
+
+#: builtins.c:719
+msgid "Operators are evaluated in order of precedence.  Sub-expressions in"
+msgstr "Operators are evaluated in order of precedence.  Sub-expressions in"
+
+#: builtins.c:720
+msgid "parentheses are evaluated first and may override the precedence"
+msgstr "parentheses are evaluated first and may override the precedence"
+
+#: builtins.c:721
+msgid "rules above."
+msgstr "rules above."
+
+#: builtins.c:723
+msgid "If the last ARG evaluates to 0, let returns 1; 0 is returned"
+msgstr "If the last ARG evaluates to 0, let returns 1; 0 is returned"
+
+#: builtins.c:724
+msgid "otherwise."
+msgstr "otherwise."
+
+#: builtins.c:730
+msgid ""
+"One line is read from the standard input, or from file descriptor FD if the"
+msgstr ""
+"One line is read from the standard input, or from file descriptor FD if the"
+
+#: builtins.c:731
+msgid ""
+"-u option is supplied, and the first word is assigned to the first NAME,"
+msgstr ""
+"-u option is supplied, and the first word is assigned to the first NAME,"
+
+#: builtins.c:732
+msgid ""
+"the second word to the second NAME, and so on, with leftover words assigned"
+msgstr ""
+"the second word to the second NAME, and so on, with leftover words assigned"
+
+#: builtins.c:733
+msgid ""
+"to the last NAME.  Only the characters found in $IFS are recognized as word"
+msgstr ""
+"to the last NAME.  Only the characters found in $IFS are recognized as word"
+
+#: builtins.c:734
+msgid ""
+"delimiters.  If no NAMEs are supplied, the line read is stored in the REPLY"
+msgstr ""
+"delimiters.  If no NAMEs are supplied, the line read is stored in the REPLY"
+
+#: builtins.c:735
+msgid "variable.  If the -r option is given, this signifies `raw' input, and"
+msgstr "variable.  If the -r option is given, this signifies ‘raw’ input, and"
+
+#: builtins.c:736
+msgid "backslash escaping is disabled.  The -d option causes read to continue"
+msgstr "backslash escaping is disabled.  The -d option causes read to continue"
+
+#: builtins.c:737
+msgid ""
+"until the first character of DELIM is read, rather than newline.  If the -p"
+msgstr ""
+"until the first character of DELIM is read, rather than newline.  If the -p"
+
+#: builtins.c:738
+msgid ""
+"option is supplied, the string PROMPT is output without a trailing newline"
+msgstr ""
+"option is supplied, the string PROMPT is output without a trailing newline"
+
+#: builtins.c:739
+msgid ""
+"before attempting to read.  If -a is supplied, the words read are assigned"
+msgstr ""
+"before attempting to read.  If -a is supplied, the words read are assigned"
+
+#: builtins.c:740
+msgid ""
+"to sequential indices of ARRAY, starting at zero.  If -e is supplied and"
+msgstr ""
+"to sequential indices of ARRAY, starting at zero.  If -e is supplied and"
+
+#: builtins.c:741
+msgid ""
+"the shell is interactive, readline is used to obtain the line.  If -n is"
+msgstr ""
+"the shell is interactive, readline is used to obtain the line.  If -n is"
+
+#: builtins.c:742
+msgid "supplied with a non-zero NCHARS argument, read returns after NCHARS"
+msgstr "supplied with a non-zero NCHARS argument, read returns after NCHARS"
+
+#: builtins.c:743
+msgid "characters have been read.  The -s option causes input coming from a"
+msgstr "characters have been read.  The -s option causes input coming from a"
+
+#: builtins.c:744
+msgid "terminal to not be echoed."
+msgstr "terminal to not be echoed."
+
+#: builtins.c:746
+msgid ""
+"The -t option causes read to time out and return failure if a complete line"
+msgstr ""
+"The -t option causes read to time out and return failure if a complete line"
+
+#: builtins.c:747
+msgid ""
+"of input is not read within TIMEOUT seconds.  If the TMOUT variable is set,"
+msgstr ""
+"of input is not read within TIMEOUT seconds.  If the TMOUT variable is set,"
+
+#: builtins.c:748
+msgid ""
+"its value is the default timeout.  The return code is zero, unless end-of-"
+"file"
+msgstr ""
+"its value is the default timeout.  The return code is zero, unless end-of-"
+"file"
+
+#: builtins.c:749
+msgid ""
+"is encountered, read times out, or an invalid file descriptor is supplied as"
+msgstr ""
+"is encountered, read times out, or an invalid file descriptor is supplied as"
+
+#: builtins.c:750
+msgid "the argument to -u."
+msgstr "the argument to -u."
+
+#: builtins.c:756
+msgid "Causes a function to exit with the return value specified by N.  If N"
+msgstr "Causes a function to exit with the return value specified by N.  If N"
+
+#: builtins.c:757
+msgid "is omitted, the return status is that of the last command."
+msgstr "is omitted, the return status is that of the last command."
+
+#: builtins.c:763
+msgid "    -a  Mark variables which are modified or created for export."
+msgstr "    -a  Mark variables which are modified or created for export."
+
+#: builtins.c:764
+msgid "    -b  Notify of job termination immediately."
+msgstr "    -b  Notify of job termination immediately."
+
+#: builtins.c:765
+msgid "    -e  Exit immediately if a command exits with a non-zero status."
+msgstr "    -e  Exit immediately if a command exits with a non-zero status."
+
+#: builtins.c:766
+msgid "    -f  Disable file name generation (globbing)."
+msgstr "    -f  Disable file name generation (globbing)."
+
+#: builtins.c:767
+msgid "    -h  Remember the location of commands as they are looked up."
+msgstr "    -h  Remember the location of commands as they are looked up."
+
+#: builtins.c:768
+msgid "    -k  All assignment arguments are placed in the environment for a"
+msgstr "    -k  All assignment arguments are placed in the environment for a"
+
+#: builtins.c:769
+msgid "        command, not just those that precede the command name."
+msgstr "        command, not just those that precede the command name."
+
+#: builtins.c:770
+msgid "    -m  Job control is enabled."
+msgstr "    -m  Job control is enabled."
+
+#: builtins.c:771
+msgid "    -n  Read commands but do not execute them."
+msgstr "    -n  Read commands but do not execute them."
+
+#: builtins.c:772
+msgid "    -o option-name"
+msgstr "    -o option-name"
+
+#: builtins.c:773
+msgid "        Set the variable corresponding to option-name:"
+msgstr "        Set the variable corresponding to option-name:"
+
+#: builtins.c:774
+msgid "            allexport    same as -a"
+msgstr "            allexport    same as -a"
+
+#: builtins.c:775
+msgid "            braceexpand  same as -B"
+msgstr "            braceexpand  same as -B"
+
+#: builtins.c:777
+msgid "            emacs        use an emacs-style line editing interface"
+msgstr "            emacs        use an emacs-style line editing interface"
+
+#: builtins.c:779
+msgid "            errexit      same as -e"
+msgstr "            errexit      same as -e"
+
+#: builtins.c:780
+msgid "            errtrace     same as -E"
+msgstr "            errtrace     same as -E"
+
+#: builtins.c:781
+msgid "            functrace    same as -T"
+msgstr "            functrace    same as -T"
+
+#: builtins.c:782
+msgid "            hashall      same as -h"
+msgstr "            hashall      same as -h"
+
+#: builtins.c:784
+msgid "            histexpand   same as -H"
+msgstr "            histexpand   same as -H"
+
+#: builtins.c:787
+msgid "            history      enable command history"
+msgstr "            history      enable command history"
+
+#: builtins.c:789
+msgid "            ignoreeof    the shell will not exit upon reading EOF"
+msgstr "            ignoreeof    the shell will not exit upon reading EOF"
+
+#: builtins.c:790
+msgid "            interactive-comments"
+msgstr "            interactive-comments"
+
+#: builtins.c:791
+msgid ""
+"                         allow comments to appear in interactive commands"
+msgstr ""
+"                         allow comments to appear in interactive commands"
+
+#: builtins.c:792
+msgid "            keyword      same as -k"
+msgstr "            keyword      same as -k"
+
+#: builtins.c:793
+msgid "            monitor      same as -m"
+msgstr "            monitor      same as -m"
+
+#: builtins.c:794
+msgid "            noclobber    same as -C"
+msgstr "            noclobber    same as -C"
+
+#: builtins.c:795
+msgid "            noexec       same as -n"
+msgstr "            noexec       same as -n"
+
+#: builtins.c:796
+msgid "            noglob       same as -f"
+msgstr "            noglob       same as -f"
+
+#: builtins.c:797
+msgid "            nolog        currently accepted but ignored"
+msgstr "            nolog        currently accepted but ignored"
+
+#: builtins.c:798
+msgid "            notify       same as -b"
+msgstr "            notify       same as -b"
+
+#: builtins.c:799
+msgid "            nounset      same as -u"
+msgstr "            nounset      same as -u"
+
+#: builtins.c:800
+msgid "            onecmd       same as -t"
+msgstr "            onecmd       same as -t"
+
+#: builtins.c:801
+msgid "            physical     same as -P"
+msgstr "            physical     same as -P"
+
+#: builtins.c:802
+msgid ""
+"            pipefail     the return value of a pipeline is the status of"
+msgstr ""
+"            pipefail     the return value of a pipeline is the status of"
+
+#: builtins.c:803
+msgid ""
+"                         the last command to exit with a non-zero status,"
+msgstr ""
+"                         the last command to exit with a non-zero status,"
+
+#: builtins.c:804
+msgid ""
+"                         or zero if no command exited with a non-zero status"
+msgstr ""
+"                         or zero if no command exited with a non-zero status"
+
+#: builtins.c:805
+msgid "            posix        change the behavior of bash where the default"
+msgstr "            posix        change the behavior of bash where the default"
+
+#: builtins.c:806
+msgid "                         operation differs from the 1003.2 standard to"
+msgstr "                         operation differs from the 1003.2 standard to"
+
+#: builtins.c:807
+msgid "                         match the standard"
+msgstr "                         match the standard"
+
+#: builtins.c:808
+msgid "            privileged   same as -p"
+msgstr "            privileged   same as -p"
+
+#: builtins.c:809
+msgid "            verbose      same as -v"
+msgstr "            verbose      same as -v"
+
+#: builtins.c:811
+msgid "            vi           use a vi-style line editing interface"
+msgstr "            vi           use a vi-style line editing interface"
+
+#: builtins.c:813
+msgid "            xtrace       same as -x"
+msgstr "            xtrace       same as -x"
+
+#: builtins.c:814
+msgid ""
+"    -p  Turned on whenever the real and effective user ids do not match."
+msgstr ""
+"    -p  Turned on whenever the real and effective user ids do not match."
+
+#: builtins.c:815
+msgid "        Disables processing of the $ENV file and importing of shell"
+msgstr "        Disables processing of the $ENV file and importing of shell"
+
+#: builtins.c:816
+msgid ""
+"        functions.  Turning this option off causes the effective uid and"
+msgstr ""
+"        functions.  Turning this option off causes the effective uid and"
+
+#: builtins.c:817
+msgid "        gid to be set to the real uid and gid."
+msgstr "        gid to be set to the real uid and gid."
+
+#: builtins.c:818
+msgid "    -t  Exit after reading and executing one command."
+msgstr "    -t  Exit after reading and executing one command."
+
+#: builtins.c:819
+msgid "    -u  Treat unset variables as an error when substituting."
+msgstr "    -u  Treat unset variables as an error when substituting."
+
+#: builtins.c:820
+msgid "    -v  Print shell input lines as they are read."
+msgstr "    -v  Print shell input lines as they are read."
+
+#: builtins.c:821
+msgid "    -x  Print commands and their arguments as they are executed."
+msgstr "    -x  Print commands and their arguments as they are executed."
+
+#: builtins.c:823
+msgid "    -B  the shell will perform brace expansion"
+msgstr "    -B  the shell will perform brace expansion"
+
+#: builtins.c:825
+msgid "    -C  If set, disallow existing regular files to be overwritten"
+msgstr "    -C  If set, disallow existing regular files to be overwritten"
+
+#: builtins.c:826
+msgid "        by redirection of output."
+msgstr "        by redirection of output."
+
+#: builtins.c:827
+msgid "    -E  If set, the ERR trap is inherited by shell functions."
+msgstr "    -E  If set, the ERR trap is inherited by shell functions."
+
+#: builtins.c:829
+msgid "    -H  Enable ! style history substitution.  This flag is on"
+msgstr "    -H  Enable ! style history substitution.  This flag is on"
+
+#: builtins.c:830
+msgid "        by default."
+msgstr "        by default."
+
+#: builtins.c:832
+msgid "    -P  If set, do not follow symbolic links when executing commands"
+msgstr "    -P  If set, do not follow symbolic links when executing commands"
+
+#: builtins.c:833
+msgid "        such as cd which change the current directory."
+msgstr "        such as cd which change the current directory."
+
+#: builtins.c:834
+msgid "    -T  If set, the DEBUG trap is inherited by shell functions."
+msgstr "    -T  If set, the DEBUG trap is inherited by shell functions."
+
+#: builtins.c:836
+msgid "Using + rather than - causes these flags to be turned off.  The"
+msgstr "Using + rather than - causes these flags to be turned off.  The"
+
+#: builtins.c:837
+msgid "flags can also be used upon invocation of the shell.  The current"
+msgstr "flags can also be used upon invocation of the shell.  The current"
+
+#: builtins.c:838
+msgid "set of flags may be found in $-.  The remaining n ARGs are positional"
+msgstr "set of flags may be found in $-.  The remaining n ARGs are positional"
+
+#: builtins.c:839
+msgid "parameters and are assigned, in order, to $1, $2, .. $n.  If no"
+msgstr "parameters and are assigned, in order, to $1, $2, .. $n.  If no"
+
+#: builtins.c:840
+msgid "ARGs are given, all shell variables are printed."
+msgstr "ARGs are given, all shell variables are printed."
+
+#: builtins.c:846
+msgid "For each NAME, remove the corresponding variable or function.  Given"
+msgstr "For each NAME, remove the corresponding variable or function.  Given"
+
+#: builtins.c:847
+msgid "the `-v', unset will only act on variables.  Given the `-f' flag,"
+msgstr "the ‘-v’, unset will only act on variables.  Given the ‘-f’ flag,"
+
+#: builtins.c:848
+msgid "unset will only act on functions.  With neither flag, unset first"
+msgstr "unset will only act on functions.  With neither flag, unset first"
+
+#: builtins.c:849
+msgid "tries to unset a variable, and if that fails, then tries to unset a"
+msgstr "tries to unset a variable, and if that fails, then tries to unset a"
+
+#: builtins.c:850
+msgid "function.  Some variables cannot be unset; also see readonly."
+msgstr "function.  Some variables cannot be unset; also see readonly."
+
+#: builtins.c:856
+msgid "NAMEs are marked for automatic export to the environment of"
+msgstr "NAMEs are marked for automatic export to the environment of"
+
+#: builtins.c:857
+msgid "subsequently executed commands.  If the -f option is given,"
+msgstr "subsequently executed commands.  If the -f option is given,"
+
+#: builtins.c:858
+msgid "the NAMEs refer to functions.  If no NAMEs are given, or if `-p'"
+msgstr "the NAMEs refer to functions.  If no NAMEs are given, or if ‘-p’"
+
+#: builtins.c:859
+msgid "is given, a list of all names that are exported in this shell is"
+msgstr "is given, a list of all names that are exported in this shell is"
+
+#: builtins.c:860
+msgid "printed.  An argument of `-n' says to remove the export property"
+msgstr "printed.  An argument of ‘-n’ says to remove the export property"
+
+#: builtins.c:861
+msgid "from subsequent NAMEs.  An argument of `--' disables further option"
+msgstr "from subsequent NAMEs.  An argument of ‘--’ disables further option"
+
+#: builtins.c:862 builtins.c:874
+msgid "processing."
+msgstr "processing."
+
+#: builtins.c:868
+msgid "The given NAMEs are marked readonly and the values of these NAMEs may"
+msgstr "The given NAMEs are marked readonly and the values of these NAMEs may"
+
+#: builtins.c:869
+msgid "not be changed by subsequent assignment.  If the -f option is given,"
+msgstr "not be changed by subsequent assignment.  If the -f option is given,"
+
+#: builtins.c:870
+msgid "then functions corresponding to the NAMEs are so marked.  If no"
+msgstr "then functions corresponding to the NAMEs are so marked.  If no"
+
+#: builtins.c:871
+msgid "arguments are given, or if `-p' is given, a list of all readonly names"
+msgstr "arguments are given, or if ‘-p’ is given, a list of all readonly names"
+
+#: builtins.c:872
+msgid "is printed.  The `-a' option means to treat each NAME as"
+msgstr "is printed.  The ‘-a’ option means to treat each NAME as"
+
+#: builtins.c:873
+msgid "an array variable.  An argument of `--' disables further option"
+msgstr "an array variable.  An argument of ‘--’ disables further option"
+
+#: builtins.c:880
+msgid "The positional parameters from $N+1 ... are renamed to $1 ...  If N is"
+msgstr "The positional parameters from $N+1 ... are renamed to $1 ...  If N is"
+
+#: builtins.c:881
+msgid "not given, it is assumed to be 1."
+msgstr "not given, it is assumed to be 1."
+
+#: builtins.c:887 builtins.c:896
+msgid "Read and execute commands from FILENAME and return.  The pathnames"
+msgstr "Read and execute commands from FILENAME and return.  The pathnames"
+
+#: builtins.c:888 builtins.c:897
+msgid "in $PATH are used to find the directory containing FILENAME.  If any"
+msgstr "in $PATH are used to find the directory containing FILENAME.  If any"
+
+#: builtins.c:889 builtins.c:898
+msgid "ARGUMENTS are supplied, they become the positional parameters when"
+msgstr "ARGUMENTS are supplied, they become the positional parameters when"
+
+#: builtins.c:890 builtins.c:899
+msgid "FILENAME is executed."
+msgstr "FILENAME is executed."
+
+#: builtins.c:906
+msgid "Suspend the execution of this shell until it receives a SIGCONT"
+msgstr "Suspend the execution of this shell until it receives a SIGCONT"
+
+#: builtins.c:907
+msgid "signal.  The `-f' if specified says not to complain about this"
+msgstr "signal.  The ‘-f’ if specified says not to complain about this"
+
+#: builtins.c:908
+msgid "being a login shell if it is; just suspend anyway."
+msgstr "being a login shell if it is; just suspend anyway."
+
+#: builtins.c:915
+msgid "Exits with a status of 0 (true) or 1 (false) depending on"
+msgstr "Exits with a status of 0 (true) or 1 (false) depending on"
+
+#: builtins.c:916
+msgid "the evaluation of EXPR.  Expressions may be unary or binary.  Unary"
+msgstr "the evaluation of EXPR.  Expressions may be unary or binary.  Unary"
+
+#: builtins.c:917
+msgid "expressions are often used to examine the status of a file.  There"
+msgstr "expressions are often used to examine the status of a file.  There"
+
+#: builtins.c:918
+msgid "are string operators as well, and numeric comparison operators."
+msgstr "are string operators as well, and numeric comparison operators."
+
+#: builtins.c:920
+msgid "File operators:"
+msgstr "File operators:"
+
+#: builtins.c:922
+msgid "    -a FILE        True if file exists."
+msgstr "    -a FILE        True if file exists."
+
+#: builtins.c:923
+msgid "    -b FILE        True if file is block special."
+msgstr "    -b FILE        True if file is block special."
+
+#: builtins.c:924
+msgid "    -c FILE        True if file is character special."
+msgstr "    -c FILE        True if file is character special."
+
+#: builtins.c:925
+msgid "    -d FILE        True if file is a directory."
+msgstr "    -d FILE        True if file is a directory."
+
+#: builtins.c:926
+msgid "    -e FILE        True if file exists."
+msgstr "    -e FILE        True if file exists."
+
+#: builtins.c:927
+msgid "    -f FILE        True if file exists and is a regular file."
+msgstr "    -f FILE        True if file exists and is a regular file."
+
+#: builtins.c:928
+msgid "    -g FILE        True if file is set-group-id."
+msgstr "    -g FILE        True if file is set-group-id."
+
+#: builtins.c:929
+msgid "    -h FILE        True if file is a symbolic link."
+msgstr "    -h FILE        True if file is a symbolic link."
+
+#: builtins.c:930
+msgid "    -L FILE        True if file is a symbolic link."
+msgstr "    -L FILE        True if file is a symbolic link."
+
+#: builtins.c:931
+msgid "    -k FILE        True if file has its `sticky' bit set."
+msgstr "    -k FILE        True if file has its ‘sticky’ bit set."
+
+#: builtins.c:932
+msgid "    -p FILE        True if file is a named pipe."
+msgstr "    -p FILE        True if file is a named pipe."
+
+#: builtins.c:933
+msgid "    -r FILE        True if file is readable by you."
+msgstr "    -r FILE        True if file is readable by you."
+
+#: builtins.c:934
+msgid "    -s FILE        True if file exists and is not empty."
+msgstr "    -s FILE        True if file exists and is not empty."
+
+#: builtins.c:935
+msgid "    -S FILE        True if file is a socket."
+msgstr "    -S FILE        True if file is a socket."
+
+#: builtins.c:936
+msgid "    -t FD          True if FD is opened on a terminal."
+msgstr "    -t FD          True if FD is opened on a terminal."
+
+#: builtins.c:937
+msgid "    -u FILE        True if the file is set-user-id."
+msgstr "    -u FILE        True if the file is set-user-id."
+
+#: builtins.c:938
+msgid "    -w FILE        True if the file is writable by you."
+msgstr "    -w FILE        True if the file is writable by you."
+
+#: builtins.c:939
+msgid "    -x FILE        True if the file is executable by you."
+msgstr "    -x FILE        True if the file is executable by you."
+
+#: builtins.c:940
+msgid "    -O FILE        True if the file is effectively owned by you."
+msgstr "    -O FILE        True if the file is effectively owned by you."
+
+#: builtins.c:941
+msgid "    -G FILE        True if the file is effectively owned by your group."
+msgstr ""
+"    -G FILE        True if the file is effectively owned by your group."
+
+#: builtins.c:942
+msgid ""
+"    -N FILE        True if the file has been modified since it was last read."
+msgstr ""
+"    -N FILE        True if the file has been modified since it was last read."
+
+#: builtins.c:944
+msgid "  FILE1 -nt FILE2  True if file1 is newer than file2 (according to"
+msgstr "  FILE1 -nt FILE2  True if file1 is newer than file2 (according to"
+
+#: builtins.c:945
+msgid "                   modification date)."
+msgstr "                   modification date)."
+
+#: builtins.c:947
+msgid "  FILE1 -ot FILE2  True if file1 is older than file2."
+msgstr "  FILE1 -ot FILE2  True if file1 is older than file2."
+
+#: builtins.c:949
+msgid "  FILE1 -ef FILE2  True if file1 is a hard link to file2."
+msgstr "  FILE1 -ef FILE2  True if file1 is a hard link to file2."
+
+#: builtins.c:951
+msgid "String operators:"
+msgstr "String operators:"
+
+#: builtins.c:953
+msgid "    -z STRING      True if string is empty."
+msgstr "    -z STRING      True if string is empty."
+
+#: builtins.c:955
+msgid "    -n STRING"
+msgstr "    -n STRING"
+
+#: builtins.c:956
+msgid "    STRING         True if string is not empty."
+msgstr "    STRING         True if string is not empty."
+
+#: builtins.c:958
+msgid "    STRING1 = STRING2"
+msgstr "    STRING1 = STRING2"
+
+#: builtins.c:959
+msgid "                   True if the strings are equal."
+msgstr "                   True if the strings are equal."
+
+#: builtins.c:960
+msgid "    STRING1 != STRING2"
+msgstr "    STRING1 != STRING2"
+
+#: builtins.c:961
+msgid "                   True if the strings are not equal."
+msgstr "                   True if the strings are not equal."
+
+#: builtins.c:962
+msgid "    STRING1 < STRING2"
+msgstr "    STRING1 < STRING2"
+
+#: builtins.c:963
+msgid ""
+"                   True if STRING1 sorts before STRING2 lexicographically."
+msgstr ""
+"                   True if STRING1 sorts before STRING2 lexicographically."
+
+#: builtins.c:964
+msgid "    STRING1 > STRING2"
+msgstr "    STRING1 > STRING2"
+
+#: builtins.c:965
+msgid ""
+"                   True if STRING1 sorts after STRING2 lexicographically."
+msgstr ""
+"                   True if STRING1 sorts after STRING2 lexicographically."
+
+#: builtins.c:967
+msgid "Other operators:"
+msgstr "Other operators:"
+
+#: builtins.c:969
+msgid "    -o OPTION      True if the shell option OPTION is enabled."
+msgstr "    -o OPTION      True if the shell option OPTION is enabled."
+
+#: builtins.c:970
+msgid "    ! EXPR         True if expr is false."
+msgstr "    ! EXPR         True if expr is false."
+
+#: builtins.c:971
+msgid "    EXPR1 -a EXPR2 True if both expr1 AND expr2 are true."
+msgstr "    EXPR1 -a EXPR2 True if both expr1 AND expr2 are true."
+
+#: builtins.c:972
+msgid "    EXPR1 -o EXPR2 True if either expr1 OR expr2 is true."
+msgstr "    EXPR1 -o EXPR2 True if either expr1 OR expr2 is true."
+
+#: builtins.c:974
+msgid "    arg1 OP arg2   Arithmetic tests.  OP is one of -eq, -ne,"
+msgstr "    arg1 OP arg2   Arithmetic tests.  OP is one of -eq, -ne,"
+
+#: builtins.c:975
+msgid "                   -lt, -le, -gt, or -ge."
+msgstr "                   -lt, -le, -gt, or -ge."
+
+#: builtins.c:977
+msgid "Arithmetic binary operators return true if ARG1 is equal, not-equal,"
+msgstr "Arithmetic binary operators return true if ARG1 is equal, not-equal,"
+
+#: builtins.c:978
+msgid "less-than, less-than-or-equal, greater-than, or greater-than-or-equal"
+msgstr "less-than, less-than-or-equal, greater-than, or greater-than-or-equal"
+
+#: builtins.c:979
+msgid "than ARG2."
+msgstr "than ARG2."
+
+#: builtins.c:985
+msgid "This is a synonym for the \"test\" builtin, but the last"
+msgstr "This is a synonym for the “test” builtin, but the last"
+
+#: builtins.c:986
+msgid "argument must be a literal `]', to match the opening `['."
+msgstr "argument must be a literal ‘]’, to match the opening ‘[’."
+
+#: builtins.c:992
+msgid "Print the accumulated user and system times for processes run from"
+msgstr "Print the accumulated user and system times for processes run from"
+
+#: builtins.c:993
+msgid "the shell."
+msgstr "the shell."
+
+#: builtins.c:999
+msgid "The command ARG is to be read and executed when the shell receives"
+msgstr "The command ARG is to be read and executed when the shell receives"
+
+#: builtins.c:1000
+msgid "signal(s) SIGNAL_SPEC.  If ARG is absent all specified signals are"
+msgstr "signal(s) SIGNAL_SPEC.  If ARG is absent all specified signals are"
+
+#: builtins.c:1001
+msgid "reset to their original values.  If ARG is the null string each"
+msgstr "reset to their original values.  If ARG is the null string each"
+
+#: builtins.c:1002
+msgid "SIGNAL_SPEC is ignored by the shell and by the commands it invokes."
+msgstr "SIGNAL_SPEC is ignored by the shell and by the commands it invokes."
+
+#: builtins.c:1003
+msgid "If a SIGNAL_SPEC is EXIT (0) the command ARG is executed on exit from"
+msgstr "If a SIGNAL_SPEC is EXIT (0) the command ARG is executed on exit from"
+
+#: builtins.c:1004
+msgid "the shell.  If a SIGNAL_SPEC is DEBUG, ARG is executed after every"
+msgstr "the shell.  If a SIGNAL_SPEC is DEBUG, ARG is executed after every"
+
+#: builtins.c:1005
+msgid "command.  If ARG is `-p' then the trap commands associated with"
+msgstr "command.  If ARG is ‘-p’ then the trap commands associated with"
+
+#: builtins.c:1006
+msgid "each SIGNAL_SPEC are displayed.  If no arguments are supplied or if"
+msgstr "each SIGNAL_SPEC are displayed.  If no arguments are supplied or if"
+
+#: builtins.c:1007
+msgid "only `-p' is given, trap prints the list of commands associated with"
+msgstr "only ‘-p’ is given, trap prints the list of commands associated with"
+
+#: builtins.c:1008
+msgid ""
+"each signal number.  Each SIGNAL_SPEC is either a signal name in <signal.h>"
+msgstr ""
+"each signal number.  Each SIGNAL_SPEC is either a signal name in <signal.h>"
+
+#: builtins.c:1009
+msgid "or a signal number.  `trap -l' prints a list of signal names and their"
+msgstr "or a signal number.  ‘trap -l’ prints a list of signal names and their"
+
+#: builtins.c:1010
+msgid "corresponding numbers.  Note that a signal can be sent to the shell"
+msgstr "corresponding numbers.  Note that a signal can be sent to the shell"
+
+#: builtins.c:1011
+msgid "with \"kill -signal $$\"."
+msgstr "with “kill -signal $$”."
+
+#: builtins.c:1017
+msgid "For each NAME, indicate how it would be interpreted if used as a"
+msgstr "For each NAME, indicate how it would be interpreted if used as a"
+
+#: builtins.c:1018
+msgid "command name."
+msgstr "command name."
+
+#: builtins.c:1020
+msgid "If the -t option is used, `type' outputs a single word which is one of"
+msgstr "If the -t option is used, ‘type’ outputs a single word which is one of"
+
+#: builtins.c:1021
+msgid "`alias', `keyword', `function', `builtin', `file' or `', if NAME is an"
+msgstr "‘alias’, ‘keyword’, ‘function’, ‘builtin’, ‘file’ or ‘’, if NAME is an"
+
+#: builtins.c:1022
+msgid "alias, shell reserved word, shell function, shell builtin, disk file,"
+msgstr "alias, shell reserved word, shell function, shell builtin, disk file,"
+
+#: builtins.c:1023
+msgid "or unfound, respectively."
+msgstr "or unfound, respectively."
+
+#: builtins.c:1025
+msgid "If the -p flag is used, `type' either returns the name of the disk"
+msgstr "If the -p flag is used, ‘type’ either returns the name of the disk"
+
+#: builtins.c:1026
+msgid "file that would be executed, or nothing if `type -t NAME' would not"
+msgstr "file that would be executed, or nothing if ‘type -t NAME’ would not"
+
+#: builtins.c:1027
+msgid "return `file'."
+msgstr "return ‘file’."
+
+#: builtins.c:1029
+msgid "If the -a flag is used, `type' displays all of the places that contain"
+msgstr "If the -a flag is used, ‘type’ displays all of the places that contain"
+
+#: builtins.c:1030
+msgid "an executable named `file'.  This includes aliases, builtins, and"
+msgstr "an executable named ‘file’.  This includes aliases, builtins, and"
+
+#: builtins.c:1031
+msgid "functions, if and only if the -p flag is not also used."
+msgstr "functions, if and only if the -p flag is not also used."
+
+#: builtins.c:1033
+msgid "The -f flag suppresses shell function lookup."
+msgstr "The -f flag suppresses shell function lookup."
+
+#: builtins.c:1035
+msgid "The -P flag forces a PATH search for each NAME, even if it is an alias,"
+msgstr ""
+"The -P flag forces a PATH search for each NAME, even if it is an alias,"
+
+#: builtins.c:1036
+msgid "builtin, or function, and returns the name of the disk file that would"
+msgstr "builtin, or function, and returns the name of the disk file that would"
+
+#: builtins.c:1037
+msgid "be executed."
+msgstr "be executed."
+
+#: builtins.c:1044
+msgid "Ulimit provides control over the resources available to processes"
+msgstr "Ulimit provides control over the resources available to processes"
+
+#: builtins.c:1045
+msgid "started by the shell, on systems that allow such control.  If an"
+msgstr "started by the shell, on systems that allow such control.  If an"
+
+#: builtins.c:1046
+msgid "option is given, it is interpreted as follows:"
+msgstr "option is given, it is interpreted as follows:"
+
+#: builtins.c:1048
+msgid "    -S\tuse the `soft' resource limit"
+msgstr "    -S\tuse the ‘soft’ resource limit"
+
+#: builtins.c:1049
+msgid "    -H\tuse the `hard' resource limit"
+msgstr "    -H\tuse the ‘hard’ resource limit"
+
+#: builtins.c:1050
+msgid "    -a\tall current limits are reported"
+msgstr "    -a\tall current limits are reported"
+
+#: builtins.c:1051
+msgid "    -c\tthe maximum size of core files created"
+msgstr "    -c\tthe maximum size of core files created"
+
+#: builtins.c:1052
+msgid "    -d\tthe maximum size of a process's data segment"
+msgstr "    -d\tthe maximum size of a process's data segment"
+
+#: builtins.c:1053
+msgid "    -f\tthe maximum size of files created by the shell"
+msgstr "    -f\tthe maximum size of files created by the shell"
+
+#: builtins.c:1054
+msgid "    -l\tthe maximum size a process may lock into memory"
+msgstr "    -l\tthe maximum size a process may lock into memory"
+
+#: builtins.c:1055
+msgid "    -m\tthe maximum resident set size"
+msgstr "    -m\tthe maximum resident set size"
+
+#: builtins.c:1056
+msgid "    -n\tthe maximum number of open file descriptors"
+msgstr "    -n\tthe maximum number of open file descriptors"
+
+#: builtins.c:1057
+msgid "    -p\tthe pipe buffer size"
+msgstr "    -p\tthe pipe buffer size"
+
+#: builtins.c:1058
+msgid "    -s\tthe maximum stack size"
+msgstr "    -s\tthe maximum stack size"
+
+#: builtins.c:1059
+msgid "    -t\tthe maximum amount of cpu time in seconds"
+msgstr "    -t\tthe maximum amount of cpu time in seconds"
+
+#: builtins.c:1060
+msgid "    -u\tthe maximum number of user processes"
+msgstr "    -u\tthe maximum number of user processes"
+
+#: builtins.c:1061
+msgid "    -v\tthe size of virtual memory"
+msgstr "    -v\tthe size of virtual memory"
+
+#: builtins.c:1063
+msgid "If LIMIT is given, it is the new value of the specified resource;"
+msgstr "If LIMIT is given, it is the new value of the specified resource;"
+
+#: builtins.c:1064
+msgid "the special LIMIT values `soft', `hard', and `unlimited' stand for"
+msgstr "the special LIMIT values ‘soft’, ‘hard’, and ‘unlimited’ stand for"
+
+#: builtins.c:1065
+msgid ""
+"the current soft limit, the current hard limit, and no limit, respectively."
+msgstr ""
+"the current soft limit, the current hard limit, and no limit, respectively."
+
+#: builtins.c:1066
+msgid "Otherwise, the current value of the specified resource is printed."
+msgstr "Otherwise, the current value of the specified resource is printed."
+
+#: builtins.c:1067
+msgid "If no option is given, then -f is assumed.  Values are in 1024-byte"
+msgstr "If no option is given, then -f is assumed.  Values are in 1024-byte"
+
+#: builtins.c:1068
+msgid "increments, except for -t, which is in seconds, -p, which is in"
+msgstr "increments, except for -t, which is in seconds, -p, which is in"
+
+#: builtins.c:1069
+msgid "increments of 512 bytes, and -u, which is an unscaled number of"
+msgstr "increments of 512 bytes, and -u, which is an unscaled number of"
+
+#: builtins.c:1070
+msgid "processes."
+msgstr "processes."
+
+#: builtins.c:1077
+msgid "The user file-creation mask is set to MODE.  If MODE is omitted, or if"
+msgstr "The user file-creation mask is set to MODE.  If MODE is omitted, or if"
+
+#: builtins.c:1078
+msgid "`-S' is supplied, the current value of the mask is printed.  The `-S'"
+msgstr "‘-S’ is supplied, the current value of the mask is printed.  The ‘-S’"
+
+#: builtins.c:1079
+msgid "option makes the output symbolic; otherwise an octal number is output."
+msgstr "option makes the output symbolic; otherwise an octal number is output."
+
+#: builtins.c:1080
+msgid "If `-p' is supplied, and MODE is omitted, the output is in a form"
+msgstr "If ‘-p’ is supplied, and MODE is omitted, the output is in a form"
+
+#: builtins.c:1081
+msgid "that may be used as input.  If MODE begins with a digit, it is"
+msgstr "that may be used as input.  If MODE begins with a digit, it is"
+
+#: builtins.c:1082
+msgid "interpreted as an octal number, otherwise it is a symbolic mode string"
+msgstr "interpreted as an octal number, otherwise it is a symbolic mode string"
+
+#: builtins.c:1083
+msgid "like that accepted by chmod(1)."
+msgstr "like that accepted by chmod(1)."
+
+#: builtins.c:1090 builtins.c:1102
+msgid "Wait for the specified process and report its termination status.  If"
+msgstr "Wait for the specified process and report its termination status.  If"
+
+#: builtins.c:1091 builtins.c:1103
+msgid "N is not given, all currently active child processes are waited for,"
+msgstr "N is not given, all currently active child processes are waited for,"
+
+#: builtins.c:1092
+msgid "and the return code is zero.  N may be a process ID or a job"
+msgstr "and the return code is zero.  N may be a process ID or a job"
+
+#: builtins.c:1093
+msgid "specification; if a job spec is given, all processes in the job's"
+msgstr "specification; if a job spec is given, all processes in the job's"
+
+#: builtins.c:1094
+msgid "pipeline are waited for."
+msgstr "pipeline are waited for."
+
+#: builtins.c:1104
+msgid "and the return code is zero.  N is a process ID; if it is not given,"
+msgstr "and the return code is zero.  N is a process ID; if it is not given,"
+
+#: builtins.c:1105
+msgid "all child processes of the shell are waited for."
+msgstr "all child processes of the shell are waited for."
+
+#: builtins.c:1112
+msgid "The `for' loop executes a sequence of commands for each member in a"
+msgstr "The ‘for’ loop executes a sequence of commands for each member in a"
+
+#: builtins.c:1113
+msgid "list of items.  If `in WORDS ...;' is not present, then `in \"$@\"' is"
+msgstr "list of items.  If ‘in WORDS ...;’ is not present, then ‘in “$@”’ is"
+
+#: builtins.c:1114
+msgid "assumed.  For each element in WORDS, NAME is set to that element, and"
+msgstr "assumed.  For each element in WORDS, NAME is set to that element, and"
+
+#: builtins.c:1115
+msgid "the COMMANDS are executed."
+msgstr "the COMMANDS are executed."
+
+#: builtins.c:1121
+msgid "Equivalent to"
+msgstr "Equivalent to"
+
+#: builtins.c:1122
+msgid "\t(( EXP1 ))"
+msgstr "\t(( EXP1 ))"
+
+#: builtins.c:1123
+msgid "\twhile (( EXP2 )); do"
+msgstr "\twhile (( EXP2 )); do"
+
+#: builtins.c:1124
+msgid "\t\tCOMMANDS"
+msgstr "\t\tCOMMANDS"
+
+#: builtins.c:1125
+msgid "\t\t(( EXP3 ))"
+msgstr "\t\t(( EXP3 ))"
+
+#: builtins.c:1126
+msgid "\tdone"
+msgstr "\tdone"
+
+#: builtins.c:1127
+msgid "EXP1, EXP2, and EXP3 are arithmetic expressions.  If any expression is"
+msgstr "EXP1, EXP2, and EXP3 are arithmetic expressions.  If any expression is"
+
+#: builtins.c:1128
+msgid "omitted, it behaves as if it evaluates to 1."
+msgstr "omitted, it behaves as if it evaluates to 1."
+
+#: builtins.c:1134
+msgid "The WORDS are expanded, generating a list of words.  The"
+msgstr "The WORDS are expanded, generating a list of words.  The"
+
+#: builtins.c:1135
+msgid "set of expanded words is printed on the standard error, each"
+msgstr "set of expanded words is printed on the standard error, each"
+
+#: builtins.c:1136
+msgid "preceded by a number.  If `in WORDS' is not present, `in \"$@\"'"
+msgstr "preceded by a number.  If ‘in WORDS’ is not present, ‘in “$@”’"
+
+#: builtins.c:1137
+msgid "is assumed.  The PS3 prompt is then displayed and a line read"
+msgstr "is assumed.  The PS3 prompt is then displayed and a line read"
+
+#: builtins.c:1138
+msgid "from the standard input.  If the line consists of the number"
+msgstr "from the standard input.  If the line consists of the number"
+
+#: builtins.c:1139
+msgid "corresponding to one of the displayed words, then NAME is set"
+msgstr "corresponding to one of the displayed words, then NAME is set"
+
+#: builtins.c:1140
+msgid "to that word.  If the line is empty, WORDS and the prompt are"
+msgstr "to that word.  If the line is empty, WORDS and the prompt are"
+
+#: builtins.c:1141
+msgid "redisplayed.  If EOF is read, the command completes.  Any other"
+msgstr "redisplayed.  If EOF is read, the command completes.  Any other"
+
+#: builtins.c:1142
+msgid "value read causes NAME to be set to null.  The line read is saved"
+msgstr "value read causes NAME to be set to null.  The line read is saved"
+
+#: builtins.c:1143
+msgid "in the variable REPLY.  COMMANDS are executed after each selection"
+msgstr "in the variable REPLY.  COMMANDS are executed after each selection"
+
+#: builtins.c:1144
+msgid "until a break command is executed."
+msgstr "until a break command is executed."
+
+#: builtins.c:1150
+msgid "Execute PIPELINE and print a summary of the real time, user CPU time,"
+msgstr "Execute PIPELINE and print a summary of the real time, user CPU time,"
+
+#: builtins.c:1151
+msgid "and system CPU time spent executing PIPELINE when it terminates."
+msgstr "and system CPU time spent executing PIPELINE when it terminates."
+
+#: builtins.c:1152
+msgid "The return status is the return status of PIPELINE.  The `-p' option"
+msgstr "The return status is the return status of PIPELINE.  The ‘-p’ option"
+
+#: builtins.c:1153
+msgid "prints the timing summary in a slightly different format.  This uses"
+msgstr "prints the timing summary in a slightly different format.  This uses"
+
+#: builtins.c:1154
+msgid "the value of the TIMEFORMAT variable as the output format."
+msgstr "the value of the TIMEFORMAT variable as the output format."
+
+#: builtins.c:1160
+msgid "Selectively execute COMMANDS based upon WORD matching PATTERN.  The"
+msgstr "Selectively execute COMMANDS based upon WORD matching PATTERN.  The"
+
+#: builtins.c:1161
+msgid "`|' is used to separate multiple patterns."
+msgstr "‘|’ is used to separate multiple patterns."
+
+#: builtins.c:1167
+msgid ""
+"The if COMMANDS are executed.  If the exit status is zero, then the then"
+msgstr ""
+"The if COMMANDS are executed.  If the exit status is zero, then the then"
+
+#: builtins.c:1168
+msgid ""
+"COMMANDS are executed.  Otherwise, each of the elif COMMANDS are executed"
+msgstr ""
+"COMMANDS are executed.  Otherwise, each of the elif COMMANDS are executed"
+
+#: builtins.c:1169
+msgid ""
+"in turn, and if the exit status is zero, the corresponding then COMMANDS"
+msgstr ""
+"in turn, and if the exit status is zero, the corresponding then COMMANDS"
+
+#: builtins.c:1170
+msgid ""
+"are executed and the if command completes.  Otherwise, the else COMMANDS"
+msgstr ""
+"are executed and the if command completes.  Otherwise, the else COMMANDS"
+
+#: builtins.c:1171
+msgid ""
+"are executed, if present.  The exit status is the exit status of the last"
+msgstr ""
+"are executed, if present.  The exit status is the exit status of the last"
+
+#: builtins.c:1172
+msgid "command executed, or zero if no condition tested true."
+msgstr "command executed, or zero if no condition tested true."
+
+#: builtins.c:1178 builtins.c:1185
+msgid "Expand and execute COMMANDS as long as the final command in the"
+msgstr "Expand and execute COMMANDS as long as the final command in the"
+
+#: builtins.c:1179
+msgid "`while' COMMANDS has an exit status of zero."
+msgstr "‘while’ COMMANDS has an exit status of zero."
+
+#: builtins.c:1186
+msgid "`until' COMMANDS has an exit status which is not zero."
+msgstr "‘until’ COMMANDS has an exit status which is not zero."
+
+#: builtins.c:1192
+msgid "Create a simple command invoked by NAME which runs COMMANDS."
+msgstr "Create a simple command invoked by NAME which runs COMMANDS."
+
+#: builtins.c:1193
+msgid "Arguments on the command line along with NAME are passed to the"
+msgstr "Arguments on the command line along with NAME are passed to the"
+
+#: builtins.c:1194
+msgid "function as $0 .. $n."
+msgstr "function as $0 .. $n."
+
+#: builtins.c:1200
+msgid "Run a set of commands in a group.  This is one way to redirect an"
+msgstr "Run a set of commands in a group.  This is one way to redirect an"
+
+#: builtins.c:1201
+msgid "entire set of commands."
+msgstr "entire set of commands."
+
+#: builtins.c:1207
+msgid "This is similar to the `fg' command.  Resume a stopped or background"
+msgstr "This is similar to the ‘fg’ command.  Resume a stopped or background"
+
+#: builtins.c:1208
+msgid "job.  If you specifiy DIGITS, then that job is used.  If you specify"
+msgstr "job.  If you specifiy DIGITS, then that job is used.  If you specify"
+
+#: builtins.c:1209
+msgid "WORD, then the job whose name begins with WORD is used.  Following the"
+msgstr "WORD, then the job whose name begins with WORD is used.  Following the"
+
+#: builtins.c:1210
+msgid "job specification with a `&' places the job in the background."
+msgstr "job specification with a ‘&’ places the job in the background."
+
+#: builtins.c:1216
+msgid "The EXPRESSION is evaluated according to the rules for arithmetic"
+msgstr "The EXPRESSION is evaluated according to the rules for arithmetic"
+
+#: builtins.c:1217
+msgid "evaluation.  Equivalent to \"let EXPRESSION\"."
+msgstr "evaluation.  Equivalent to “let EXPRESSION”."
+
+#: builtins.c:1223
+msgid ""
+"Returns a status of 0 or 1 depending on the evaluation of the conditional"
+msgstr ""
+"Returns a status of 0 or 1 depending on the evaluation of the conditional"
+
+#: builtins.c:1224
+msgid ""
+"expression EXPRESSION.  Expressions are composed of the same primaries used"
+msgstr ""
+"expression EXPRESSION.  Expressions are composed of the same primaries used"
+
+#: builtins.c:1225
+msgid ""
+"by the `test' builtin, and may be combined using the following operators"
+msgstr ""
+"by the ‘test’ builtin, and may be combined using the following operators"
+
+#: builtins.c:1227
+msgid "\t( EXPRESSION )\tReturns the value of EXPRESSION"
+msgstr "\t( EXPRESSION )\tReturns the value of EXPRESSION"
+
+#: builtins.c:1228
+msgid "\t! EXPRESSION\tTrue if EXPRESSION is false; else false"
+msgstr "\t! EXPRESSION\tTrue if EXPRESSION is false; else false"
+
+#: builtins.c:1229
+msgid "\tEXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false"
+msgstr "\tEXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false"
+
+#: builtins.c:1230
+msgid "\tEXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false"
+msgstr "\tEXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false"
+
+#: builtins.c:1232
+msgid ""
+"When the `==' and `!=' operators are used, the string to the right of the"
+msgstr ""
+"When the ‘==’ and ‘!=’ operators are used, the string to the right of the"
+
+#: builtins.c:1233
+msgid "operator is used as a pattern and pattern matching is performed.  The"
+msgstr "operator is used as a pattern and pattern matching is performed.  The"
+
+#: builtins.c:1234
+msgid "&& and || operators do not evaluate EXPR2 if EXPR1 is sufficient to"
+msgstr "&& and || operators do not evaluate EXPR2 if EXPR1 is sufficient to"
+
+#: builtins.c:1235
+msgid "determine the expression's value."
+msgstr "determine the expression's value."
+
+#: builtins.c:1241
+msgid "BASH_VERSION    Version information for this Bash."
+msgstr "BASH_VERSION    Version information for this Bash."
+
+#: builtins.c:1242
+msgid "CDPATH          A colon separated list of directories to search"
+msgstr "CDPATH          A colon separated list of directories to search"
+
+#: builtins.c:1243
+msgid "\t\twhen the argument to `cd' is not found in the current"
+msgstr "\t\twhen the argument to ‘cd’ is not found in the current"
+
+#: builtins.c:1244
+msgid "\t\tdirectory."
+msgstr "\t\tdirectory."
+
+#: builtins.c:1245
+msgid "GLOBIGNORE\tA colon-separated list of patterns describing filenames to"
+msgstr "GLOBIGNORE\tA colon-separated list of patterns describing filenames to"
+
+#: builtins.c:1246
+msgid "\t\tbe ignored by pathname expansion."
+msgstr "\t\tbe ignored by pathname expansion."
+
+#: builtins.c:1248
+msgid ""
+"HISTFILE        The name of the file where your command history is stored."
+msgstr ""
+"HISTFILE        The name of the file where your command history is stored."
+
+#: builtins.c:1249
+msgid "HISTFILESIZE    The maximum number of lines this file can contain."
+msgstr "HISTFILESIZE    The maximum number of lines this file can contain."
+
+#: builtins.c:1250
+msgid "HISTSIZE        The maximum number of history lines that a running"
+msgstr "HISTSIZE        The maximum number of history lines that a running"
+
+#: builtins.c:1251
+msgid "\t\tshell can access."
+msgstr "\t\tshell can access."
+
+#: builtins.c:1253
+msgid "HOME            The complete pathname to your login directory."
+msgstr "HOME            The complete pathname to your login directory."
+
+#: builtins.c:1254
+msgid "HOSTNAME\tThe name of the current host."
+msgstr "HOSTNAME\tThe name of the current host."
+
+#: builtins.c:1255
+msgid "HOSTTYPE        The type of CPU this version of Bash is running under."
+msgstr "HOSTTYPE        The type of CPU this version of Bash is running under."
+
+#: builtins.c:1256
+msgid "IGNOREEOF       Controls the action of the shell on receipt of an EOF"
+msgstr "IGNOREEOF       Controls the action of the shell on receipt of an EOF"
+
+#: builtins.c:1257
+msgid "\t\tcharacter as the sole input.  If set, then the value"
+msgstr "\t\tcharacter as the sole input.  If set, then the value"
+
+#: builtins.c:1258
+msgid "\t\tof it is the number of EOF characters that can be seen"
+msgstr "\t\tof it is the number of EOF characters that can be seen"
+
+#: builtins.c:1259
+msgid "\t\tin a row on an empty line before the shell will exit"
+msgstr "\t\tin a row on an empty line before the shell will exit"
+
+#: builtins.c:1260
+msgid "\t\t(default 10).  When unset, EOF signifies the end of input."
+msgstr "\t\t(default 10).  When unset, EOF signifies the end of input."
+
+#: builtins.c:1261
+msgid "MACHTYPE\tA string describing the current system Bash is running on."
+msgstr "MACHTYPE\tA string describing the current system Bash is running on."
+
+#: builtins.c:1262
+msgid "MAILCHECK\tHow often, in seconds, Bash checks for new mail."
+msgstr "MAILCHECK\tHow often, in seconds, Bash checks for new mail."
+
+#: builtins.c:1263
+msgid "MAILPATH\tA colon-separated list of filenames which Bash checks"
+msgstr "MAILPATH\tA colon-separated list of filenames which Bash checks"
+
+#: builtins.c:1264
+msgid "\t\tfor new mail."
+msgstr "\t\tfor new mail."
+
+#: builtins.c:1265
+msgid "OSTYPE\t\tThe version of Unix this version of Bash is running on."
+msgstr "OSTYPE\t\tThe version of Unix this version of Bash is running on."
+
+#: builtins.c:1266
+msgid "PATH            A colon-separated list of directories to search when"
+msgstr "PATH            A colon-separated list of directories to search when"
+
+#: builtins.c:1267
+msgid "\t\tlooking for commands."
+msgstr "\t\tlooking for commands."
+
+#: builtins.c:1268
+msgid "PROMPT_COMMAND  A command to be executed before the printing of each"
+msgstr "PROMPT_COMMAND  A command to be executed before the printing of each"
+
+#: builtins.c:1269
+msgid "\t\tprimary prompt."
+msgstr "\t\tprimary prompt."
+
+#: builtins.c:1270
+msgid "PS1             The primary prompt string."
+msgstr "PS1             The primary prompt string."
+
+#: builtins.c:1271
+msgid "PS2             The secondary prompt string."
+msgstr "PS2             The secondary prompt string."
+
+#: builtins.c:1272
+msgid "PWD\t\tThe full pathname of the current directory."
+msgstr "PWD\t\tThe full pathname of the current directory."
+
+#: builtins.c:1273
+msgid "SHELLOPTS\tA colon-separated list of enabled shell options."
+msgstr "SHELLOPTS\tA colon-separated list of enabled shell options."
+
+#: builtins.c:1274
+msgid "TERM            The name of the current terminal type."
+msgstr "TERM            The name of the current terminal type."
+
+#: builtins.c:1275
+msgid "TIMEFORMAT\tThe output format for timing statistics displayed by the"
+msgstr "TIMEFORMAT\tThe output format for timing statistics displayed by the"
+
+#: builtins.c:1276
+msgid "\t\t`time' reserved word."
+msgstr "\t\t‘time’ reserved word."
+
+#: builtins.c:1277
+msgid "auto_resume     Non-null means a command word appearing on a line by"
+msgstr "auto_resume     Non-null means a command word appearing on a line by"
+
+#: builtins.c:1278
+msgid "\t\titself is first looked for in the list of currently"
+msgstr "\t\titself is first looked for in the list of currently"
+
+#: builtins.c:1279
+msgid "\t\tstopped jobs.  If found there, that job is foregrounded."
+msgstr "\t\tstopped jobs.  If found there, that job is foregrounded."
+
+#: builtins.c:1280
+msgid "\t\tA value of `exact' means that the command word must"
+msgstr "\t\tA value of ‘exact’ means that the command word must"
+
+#: builtins.c:1281
+msgid "\t\texactly match a command in the list of stopped jobs.  A"
+msgstr "\t\texactly match a command in the list of stopped jobs.  A"
+
+#: builtins.c:1282
+msgid "\t\tvalue of `substring' means that the command word must"
+msgstr "\t\tvalue of ‘substring’ means that the command word must"
+
+#: builtins.c:1283
+msgid "\t\tmatch a substring of the job.  Any other value means that"
+msgstr "\t\tmatch a substring of the job.  Any other value means that"
+
+#: builtins.c:1284
+msgid "\t\tthe command must be a prefix of a stopped job."
+msgstr "\t\tthe command must be a prefix of a stopped job."
+
+#: builtins.c:1287
+msgid "histchars       Characters controlling history expansion and quick"
+msgstr "histchars       Characters controlling history expansion and quick"
+
+#: builtins.c:1288
+msgid "\t\tsubstitution.  The first character is the history"
+msgstr "\t\tsubstitution.  The first character is the history"
+
+#: builtins.c:1289
+msgid "\t\tsubstitution character, usually `!'.  The second is"
+msgstr "\t\tsubstitution character, usually ‘!’.  The second is"
+
+#: builtins.c:1290
+msgid "\t\tthe `quick substitution' character, usually `^'.  The"
+msgstr "\t\tthe ‘quick substitution’ character, usually ‘^’.  The"
+
+#: builtins.c:1291
+msgid "\t\tthird is the `history comment' character, usually `#'."
+msgstr "\t\tthird is the ‘history comment’ character, usually ‘#’."
+
+#: builtins.c:1293
+msgid "HISTIGNORE\tA colon-separated list of patterns used to decide which"
+msgstr "HISTIGNORE\tA colon-separated list of patterns used to decide which"
+
+#: builtins.c:1294
+msgid "\t\tcommands should be saved on the history list."
+msgstr "\t\tcommands should be saved on the history list."
+
+#: builtins.c:1306
+msgid "+N\tRotates the stack so that the Nth directory (counting"
+msgstr "+N\tRotates the stack so that the Nth directory (counting"
+
+#: builtins.c:1307
+msgid "\tfrom the left of the list shown by `dirs', starting with"
+msgstr "\tfrom the left of the list shown by ‘dirs’, starting with"
+
+#: builtins.c:1308 builtins.c:1312
+msgid "\tzero) is at the top."
+msgstr "\tzero) is at the top."
+
+#: builtins.c:1310
+msgid "-N\tRotates the stack so that the Nth directory (counting"
+msgstr "-N\tRotates the stack so that the Nth directory (counting"
+
+#: builtins.c:1311
+msgid "\tfrom the right of the list shown by `dirs', starting with"
+msgstr "\tfrom the right of the list shown by ‘dirs’, starting with"
+
+#: builtins.c:1314
+msgid "-n\tsuppress the normal change of directory when adding directories"
+msgstr "-n\tsuppress the normal change of directory when adding directories"
+
+#: builtins.c:1315
+msgid "\tto the stack, so only the stack is manipulated."
+msgstr "\tto the stack, so only the stack is manipulated."
+
+#: builtins.c:1317
+msgid "dir\tadds DIR to the directory stack at the top, making it the"
+msgstr "dir\tadds DIR to the directory stack at the top, making it the"
+
+#: builtins.c:1318
+msgid "\tnew current working directory."
+msgstr "\tnew current working directory."
+
+#: builtins.c:1332
+msgid "+N\tremoves the Nth entry counting from the left of the list"
+msgstr "+N\tremoves the Nth entry counting from the left of the list"
+
+#: builtins.c:1333
+msgid "\tshown by `dirs', starting with zero.  For example: `popd +0'"
+msgstr "\tshown by ‘dirs’, starting with zero.  For example: ‘popd +0’"
+
+#: builtins.c:1334
+msgid "\tremoves the first directory, `popd +1' the second."
+msgstr "\tremoves the first directory, ‘popd +1’ the second."
+
+#: builtins.c:1336
+msgid "-N\tremoves the Nth entry counting from the right of the list"
+msgstr "-N\tremoves the Nth entry counting from the right of the list"
+
+#: builtins.c:1337
+msgid "\tshown by `dirs', starting with zero.  For example: `popd -0'"
+msgstr "\tshown by ‘dirs’, starting with zero.  For example: ‘popd -0’"
+
+#: builtins.c:1338
+msgid "\tremoves the last directory, `popd -1' the next to last."
+msgstr "\tremoves the last directory, ‘popd -1’ the next to last."
+
+#: builtins.c:1340
+msgid "-n\tsuppress the normal change of directory when removing directories"
+msgstr "-n\tsuppress the normal change of directory when removing directories"
+
+#: builtins.c:1341
+msgid "\tfrom the stack, so only the stack is manipulated."
+msgstr "\tfrom the stack, so only the stack is manipulated."
+
+#: builtins.c:1363
+msgid "+N\tdisplays the Nth entry counting from the left of the list shown by"
+msgstr "+N\tdisplays the Nth entry counting from the left of the list shown by"
+
+#: builtins.c:1364 builtins.c:1367
+msgid "\tdirs when invoked without options, starting with zero."
+msgstr "\tdirs when invoked without options, starting with zero."
+
+#: builtins.c:1366
+msgid "-N\tdisplays the Nth entry counting from the right of the list shown by"
+msgstr ""
+"-N\tdisplays the Nth entry counting from the right of the list shown by"
+
+#: builtins.c:1374
+msgid "Toggle the values of variables controlling optional behavior."
+msgstr "Toggle the values of variables controlling optional behavior."
+
+#: builtins.c:1375
+msgid "The -s flag means to enable (set) each OPTNAME; the -u flag"
+msgstr "The -s flag means to enable (set) each OPTNAME; the -u flag"
+
+#: builtins.c:1376
+msgid "unsets each OPTNAME.  The -q flag suppresses output; the exit"
+msgstr "unsets each OPTNAME.  The -q flag suppresses output; the exit"
+
+#: builtins.c:1377
+msgid "status indicates whether each OPTNAME is set or unset.  The -o"
+msgstr "status indicates whether each OPTNAME is set or unset.  The -o"
+
+#: builtins.c:1378
+msgid "option restricts the OPTNAMEs to those defined for use with"
+msgstr "option restricts the OPTNAMEs to those defined for use with"
+
+#: builtins.c:1379
+msgid "`set -o'.  With no options, or with the -p option, a list of all"
+msgstr "‘set -o’.  With no options, or with the -p option, a list of all"
+
+#: builtins.c:1380
+msgid "settable options is displayed, with an indication of whether or"
+msgstr "settable options is displayed, with an indication of whether or"
+
+#: builtins.c:1381
+msgid "not each is set."
+msgstr "not each is set."
+
+#: builtins.c:1387
+msgid "printf formats and prints ARGUMENTS under control of the FORMAT. FORMAT"
+msgstr ""
+"printf formats and prints ARGUMENTS under control of the FORMAT. FORMAT"
+
+#: builtins.c:1388
+msgid "is a character string which contains three types of objects: plain"
+msgstr "is a character string which contains three types of objects: plain"
+
+#: builtins.c:1389
+msgid ""
+"characters, which are simply copied to standard output, character escape"
+msgstr ""
+"characters, which are simply copied to standard output, character escape"
+
+#: builtins.c:1390
+msgid "sequences which are converted and copied to the standard output, and"
+msgstr "sequences which are converted and copied to the standard output, and"
+
+#: builtins.c:1391
+msgid ""
+"format specifications, each of which causes printing of the next successive"
+msgstr ""
+"format specifications, each of which causes printing of the next successive"
+
+#: builtins.c:1392
+msgid "argument.  In addition to the standard printf(1) formats, %b means to"
+msgstr "argument.  In addition to the standard printf(1) formats, %b means to"
+
+#: builtins.c:1393
+msgid "expand backslash escape sequences in the corresponding argument, and %q"
+msgstr ""
+"expand backslash escape sequences in the corresponding argument, and %q"
+
+#: builtins.c:1394
+msgid "means to quote the argument in a way that can be reused as shell input."
+msgstr ""
+"means to quote the argument in a way that can be reused as shell input."
+
+#: builtins.c:1401
+msgid "For each NAME, specify how arguments are to be completed."
+msgstr "For each NAME, specify how arguments are to be completed."
+
+#: builtins.c:1402
+msgid "If the -p option is supplied, or if no options are supplied, existing"
+msgstr "If the -p option is supplied, or if no options are supplied, existing"
+
+#: builtins.c:1403
+msgid "completion specifications are printed in a way that allows them to be"
+msgstr "completion specifications are printed in a way that allows them to be"
+
+#: builtins.c:1404
+msgid "reused as input.  The -r option removes a completion specification for"
+msgstr "reused as input.  The -r option removes a completion specification for"
+
+#: builtins.c:1405
+msgid "each NAME, or, if no NAMEs are supplied, all completion specifications."
+msgstr ""
+"each NAME, or, if no NAMEs are supplied, all completion specifications."
+
+#: builtins.c:1413
+msgid "Display the possible completions depending on the options.  Intended"
+msgstr "Display the possible completions depending on the options.  Intended"
+
+#: builtins.c:1414
+msgid ""
+"to be used from within a shell function generating possible completions."
+msgstr ""
+"to be used from within a shell function generating possible completions."
+
+#: builtins.c:1415
+msgid "If the optional WORD argument is supplied, matches against WORD are"
+msgstr "If the optional WORD argument is supplied, matches against WORD are"
+
+#: builtins.c:1416
+msgid "generated."
+msgstr "generated."
diff --git a/subst.c b/subst.c
index 63c7b4a0128710bc7a9580d7b94f9449a08a1c98..9a1e0f0e4b5727cfe2ae7d321ea01a103ad12803 100644 (file)
--- a/subst.c
+++ b/subst.c
@@ -1528,7 +1528,7 @@ split_at_delims (string, slen, delims, sentinel, nwp, cwp)
          mblength = MBRLEN (delims + i, slength, &state);
          if (MB_INVALIDCH (mblength))
            state = state_bak;
-         else if (mblength != 1)
+         else if (mblength > 1)
            {
              memcpy (d2 + ts, delims + i, mblength);
              ts += mblength;
@@ -1793,6 +1793,8 @@ string_list_dollar_at (list, quoted)
          sep[0] = *ifs;
          sep[1] = '\0';
        }
+      else if (mblength == 0)
+       sep[0] = '\0';
       else
        {
          memcpy (sep, ifs, mblength);
@@ -2161,14 +2163,7 @@ do_assignment_internal (string, expand)
 
       /* Perform tilde expansion. */
       if (expand && temp[0])
-       {
-         temp = (xstrchr (temp, '~') && unquoted_member ('~', temp))
-                       ? bash_tilde_expand (temp, 1)
-                       : savestring (temp);
-
-         value = expand_string_if_necessary (temp, 0, expand_string_unsplit);
-         free (temp);
-       }
+       value = expand_string_if_necessary (temp, 0, expand_string_assignment);
       else
        value = savestring (temp);
     }
@@ -2336,9 +2331,6 @@ pos_params (string, start, end, quoted)
 
   t->next = (WORD_LIST *)NULL;
   if (string[0] == '*')
-#if 0
-    ret = (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ? string_list_dollar_star (quote_list (h)) : string_list (h);
-#else
     {
       if (quoted & Q_DOUBLE_QUOTES)
        ret = string_list_dollar_star (quote_list (h));
@@ -2347,7 +2339,6 @@ pos_params (string, start, end, quoted)
       else
        ret = string_list (h);
     }
-#endif
   else
     ret = string_list ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ? quote_list (h) : h);
   if (t != params)
@@ -2364,9 +2355,9 @@ pos_params (string, start, end, quoted)
 /******************************************************************/
 
 #if defined (PROCESS_SUBSTITUTION)
-#define EXP_CHAR(s) (s == '$' || s == '`' || s == '<' || s == '>' || s == CTLESC)
+#define EXP_CHAR(s) (s == '$' || s == '`' || s == '<' || s == '>' || s == CTLESC || s == '~')
 #else
-#define EXP_CHAR(s) (s == '$' || s == '`' || s == CTLESC)
+#define EXP_CHAR(s) (s == '$' || s == '`' || s == CTLESC || s == '~')
 #endif
 
 /* If there are any characters in STRING that require full expansion,
@@ -2493,13 +2484,6 @@ cond_expand_word (w, special)
   if (w->word == 0 || w->word[0] == '\0')
     return ((char *)NULL);
 
-  if (xstrchr (w->word, '~') && unquoted_member ('~', w->word))
-    {
-      p = bash_tilde_expand (w->word, 0);
-      free (w->word);
-      w->word = p;
-    }
-
   l = call_expand_word_internal (w, 0, 0, (int *)0, (int *)0);
   if (l)
     {
@@ -2599,6 +2583,36 @@ expand_string_unsplit (string, quoted)
   return (value);
 }
 
+/* Expand the rhs of an assignment statement */
+WORD_LIST *
+expand_string_assignment (string, quoted)
+     char *string;
+     int quoted;
+{
+  WORD_DESC td;
+  WORD_LIST *value;
+
+  if (string == 0 || *string == '\0')
+    return ((WORD_LIST *)NULL);
+
+  expand_no_split_dollar_star = 1;
+
+  td.flags = W_ASSIGNRHS;
+  td.word = savestring (string);
+  value = call_expand_word_internal (&td, quoted, 0, (int *)NULL, (int *)NULL);
+  FREE (td.word);
+
+  expand_no_split_dollar_star = 0;
+
+  if (value)
+    {
+      if (value->word)
+       remove_quoted_nulls (value->word->word);
+      dequote_list (value);
+    }
+  return (value);
+}
+
 
 /* Expand one of the PS? prompt strings. This is a sort of combination of
    expand_string_unsplit and expand_string_internal, but returns the
@@ -3555,8 +3569,6 @@ getpattern (value, quoted, expandpat)
   WORD_LIST *l;
   int i;
 
-  tword = xstrchr (value, '~') ? bash_tilde_expand (value, 0) : savestring (value);
-
   /* There is a problem here:  how to handle single or double quotes in the
      pattern string when the whole expression is between double quotes?
      POSIX.2 says that enclosing double quotes do not cause the pattern to
@@ -3574,11 +3586,10 @@ getpattern (value, quoted, expandpat)
 
   /* expand_string_for_rhs () leaves WORD quoted and does not perform
      word splitting. */
-  l = *tword ? expand_string_for_rhs (tword,
+  l = *value ? expand_string_for_rhs (value,
                                      (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ? Q_PATQUOTE : quoted,
                                      (int *)NULL, (int *)NULL)
             : (WORD_LIST *)0;
-  free (tword);
   pat = string_list (l);
   dispose_words (l);
   if (pat)
@@ -3626,11 +3637,7 @@ list_remove_pattern (list, pattern, patspec, itype, quoted)
 
   l = REVERSE_LIST (new, WORD_LIST *);
   if (itype == '*')
-#if 0
-    tword = (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ? string_list_dollar_star (l) : string_list (l);
-#else
     tword = (quoted & Q_DOUBLE_QUOTES) ? string_list_dollar_star (l) : string_list (l);
-#endif
   else
     tword = string_list ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ? quote_list (l) : l);
 
@@ -4707,24 +4714,16 @@ parameter_brace_expand_rhs (name, value, c, quoted, qdollaratp, hasdollarat)
   char *t, *t1, *temp;
   int hasdol;
 
-  /* XXX - Should we tilde expand in an assignment context if C is `='? */
-  if (*value == '~')
-    temp = bash_tilde_expand (value, 0);
-  else if (xstrchr (value, '~')  && unquoted_substring ("=~", value))
-    temp = bash_tilde_expand (value, 1);
-  else
-    temp = savestring (value);
-
   /* If the entire expression is between double quotes, we want to treat
      the value as a double-quoted string, with the exception that we strip
      embedded unescaped double quotes. */
-  if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && *temp)
+  if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && *value)
     {
       hasdol = 0;
-      t = string_extract_double_quoted (temp, &hasdol, 1);
-      free (temp);
-      temp = t;
+      temp = string_extract_double_quoted (value, &hasdol, 1);
     }
+  else
+    temp = value;
 
   hasdol = 0;
   /* XXX was 0 not quoted */
@@ -4732,7 +4731,8 @@ parameter_brace_expand_rhs (name, value, c, quoted, qdollaratp, hasdollarat)
            : (WORD_LIST *)0;
   if (hasdollarat)
     *hasdollarat = hasdol || (l && l->next);
-  free (temp);
+  if (temp != value)
+    free (temp);
   if (l)
     {
       /* The expansion of TEMP returned something.  We need to treat things
@@ -4792,15 +4792,7 @@ parameter_brace_expand_error (name, value)
 
   if (value && *value)
     {
-      if (*value == '~')
-       temp = bash_tilde_expand (value, 0);
-      else if (xstrchr (value, '~')  && unquoted_substring ("=~", value))
-       temp = bash_tilde_expand (value, 1);
-      else
-       temp = savestring (value);
-
-      l = expand_string (temp, 0);
-      FREE (temp);
+      l = expand_string (value, 0);
       temp =  string_list (l);
       report_error ("%s: %s", name, temp ? temp : ""); /* XXX was value not "" */
       FREE (temp);
@@ -5454,16 +5446,9 @@ parameter_brace_patsub (varname, value, patsub, quoted)
   if (rep && *rep == '\0')
     rep = (char *)NULL;
 
-#if 0
-  /* Expand PAT and REP for command, variable and parameter, arithmetic,
-     and process substitution.  Also perform quote removal.  Do not
-     perform word splitting or filename generation. */
-  pat = expand_string_if_necessary (lpatsub, (quoted & ~Q_DOUBLE_QUOTES), expand_string_unsplit);
-#else
   /* Perform the same expansions on the pattern as performed by the
      pattern removal expansions. */
   pat = getpattern (lpatsub, quoted, 1);
-#endif
 
   if (rep)
     {
@@ -6029,11 +6014,7 @@ param_expand (string, sindex, quoted, expanded_something,
             quote the whole string, including the separators.  If IFS
             is unset, the parameters are separated by ' '; if $IFS is
             null, the parameters are concatenated. */
-#if 0
-         temp = string_list_dollar_star (list);
-#else
          temp = (quoted & Q_DOUBLE_QUOTES) ? string_list_dollar_star (list) : string_list (list);
-#endif
          temp1 = quote_string (temp);
          free (temp);
          temp = temp1;
@@ -6319,10 +6300,13 @@ expand_word_internal (word, quoted, isexp, contains_dollar_at, expanded_somethin
      string (e.g., "xx"ab), or is fully quoted (e.g., "xxab"). */
   int quoted_state;
 
+  /* State flags */
   int had_quoted_null;
   int has_dollar_at;
   int tflag;
 
+  int assignoff;               /* If assignment, offset of `=' */
+
   register unsigned char c;    /* Current character. */
   int t_index;                 /* For calls to string_extract_xxx. */
 
@@ -6343,6 +6327,8 @@ expand_word_internal (word, quoted, isexp, contains_dollar_at, expanded_somethin
   if (contains_dollar_at)
     *contains_dollar_at = 0;
 
+  assignoff = -1;
+
   /* Begin the expansion. */
 
   for (sindex = 0; ;)
@@ -6412,6 +6398,81 @@ add_string:
          }
 #endif /* PROCESS_SUBSTITUTION */
 
+       case '=':
+         /* Posix.2 section 3.6.1 says that tildes following `=' in words
+            which are not assignment statements are not expanded.  If the
+            shell isn't in posix mode, though, we perform tilde expansion
+            on `likely candidate' unquoted assignment statements (flags
+            include W_ASSIGNMENT but not W_QUOTED).  A likely candidate
+            contains an unquoted :~ or =~.  Something to think about: we
+            now have a flag that says  to perform tilde expansion on arguments
+            to `assignment builtins' like declare and export that look like
+            assignment statements.  We now do tilde expansion on such words
+            even in POSIX mode. */     
+         if (word->flags & (W_ASSIGNRHS|W_NOTILDE))
+           goto add_character;
+         /* If we're not in posix mode or forcing assignment-statement tilde
+            expansion, note where the `=' appears in the word and prepare to
+            do tilde expansion following the first `='. */
+         if ((word->flags & W_ASSIGNMENT) &&
+             (posixly_correct == 0 || (word->flags & W_TILDEEXP)) &&
+             assignoff == -1 && sindex > 0)
+           assignoff = sindex;
+         if (sindex == assignoff && string[sindex+1] == '~')   /* XXX */
+           word->flags |= W_ITILDE;
+         else if ((word->flags & W_ASSIGNMENT) &&
+                  (posixly_correct == 0 || (word->flags & W_TILDEEXP)) &&
+                  string[sindex+1] == '~')
+           word->flags |= W_ITILDE;
+         goto add_character;
+
+       case ':':
+         if (word->flags & W_NOTILDE)
+           goto add_character;
+         if ((word->flags & (W_ASSIGNMENT|W_ASSIGNRHS)) &&
+             (posixly_correct == 0 || (word->flags & W_TILDEEXP)) &&
+             string[sindex+1] == '~')
+           word->flags |= W_ITILDE;
+         goto add_character;
+
+       case '~':
+         /* If the word isn't supposed to be tilde expanded, or we're not
+            at the start of a word or after an unquoted : or = in an
+            assignment statement, we don't do tilde expansion. */
+         if ((word->flags & W_NOTILDE) ||
+             (sindex > 0 && ((word->flags & W_ITILDE) == 0)) ||
+             (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)))
+           {
+             word->flags &= ~W_ITILDE;
+             goto add_character;
+           }
+
+         if (word->flags & W_ASSIGNRHS)
+           tflag = 2;
+         else if ((word->flags & W_ASSIGNMENT) &&
+                  (posixly_correct == 0 || (word->flags & W_TILDEEXP)))
+           tflag = 1;
+         else
+           tflag = 0;
+
+         temp = bash_tilde_find_word (string + sindex, tflag, &t_index);
+           
+         word->flags &= ~W_ITILDE;
+
+         if (temp && *temp && t_index > 0)
+           {
+             temp1 = bash_tilde_expand (temp, tflag);
+             free (temp);
+             temp = temp1;
+             sindex += t_index;
+             goto add_string;
+           }
+         else
+           {
+             FREE (temp);
+             goto add_character;
+           }
+       
        case '$':
          if (expanded_something)
            *expanded_something = 1;
@@ -6498,11 +6559,7 @@ add_twochars:
          break;
 
        case '"':
-#if 0
-         if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT|Q_PATQUOTE))
-#else
          if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))
-#endif
            goto add_character;
 
          t_index = ++sindex;
@@ -6644,11 +6701,7 @@ add_twochars:
          /* break; */
 
        case '\'':
-#if 0
-         if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT|Q_PATQUOTE))
-#else
          if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))
-#endif
            goto add_character;
 
          t_index = ++sindex;
@@ -6968,7 +7021,7 @@ setifs (v)
       size_t ifs_len;
       ifs_len = strnlen (ifs_value, MB_CUR_MAX);
       ifs_firstc_len = MBLEN (ifs_value, ifs_len);
-      if (ifs_firstc_len == 1 || MB_INVALIDCH (ifs_firstc_len))
+      if (ifs_firstc_len == 1 || ifs_firstc_len == 0 || MB_INVALIDCH (ifs_firstc_len))
        {
          ifs_firstc[0] = ifs_value[0];
          ifs_firstc[1] = '\0';
@@ -7382,29 +7435,6 @@ shell_expand_word_list (tlist, eflags)
 
       next = tlist->next;
 
-      /* Posix.2 section 3.6.1 says that tildes following `=' in words
-        which are not assignment statements are not expanded.  If the
-        shell isn't in posix mode, though, we perform tilde expansion
-        on `likely candidate' unquoted assignment statements (flags
-        include W_ASSIGNMENT but not W_QUOTED).  A likely candidate
-        contains an unquoted :~ or =~.  Something to think about: we
-        now have a flag that says  to perform tilde expansion on arguments
-        to `assignment builtins' like declare and export that look like
-        assignment statements.  We now do tilde expansion on such words
-        even in POSIX mode. */
-      if (((tlist->word->flags & (W_ASSIGNMENT|W_QUOTED)) == W_ASSIGNMENT) &&
-            (posixly_correct == 0 || (tlist->word->flags & W_TILDEEXP)) &&
-            (unquoted_substring ("=~", temp_string) || unquoted_substring (":~", temp_string)))
-       {
-         tlist->word->word = bash_tilde_expand (temp_string, 1);
-         free (temp_string);
-       }
-      else if (temp_string[0] == '~')
-       {
-         tlist->word->word = bash_tilde_expand (temp_string, 0);
-         free (temp_string);
-       }
-
       expanded_something = 0;
       expanded = expand_word_internal
        (tlist->word, 0, 0, &has_dollar_at, &expanded_something);
index 011930b3615f0cb7dc12d1cf0971fe5e0e15f167..3b42602e25eec871c4d262bc0d372432168ed26c 100644 (file)
@@ -124,7 +124,13 @@ pid_t current_command_subst_pid = NO_PID;
 SHELL_VAR *ifs_var;
 char *ifs_value;
 unsigned char ifs_cmap[UCHAR_MAX + 1];
+
+#if defined (HANDLE_MULTIBYTE)
+unsigned char ifs_firstc[MB_LEN_MAX];
+size_t ifs_firstc_len;
+#else
 unsigned char ifs_firstc;
+#endif
 
 /* Extern functions and variables from different files. */
 extern int last_command_exit_value, last_command_exit_signal;
@@ -138,6 +144,7 @@ extern char *this_command_name;
 extern struct fd_bitmap *current_fds_to_close;
 extern int wordexp_only;
 extern int expanding_redir;
+extern int tempenv_assign_error;
 
 /* Non-zero means to allow unmatched globbed filenames to expand to
    a null file. */
@@ -699,9 +706,16 @@ add_one_character:
 
          for (t = 0; ret[t]; t++, j++)
            temp[j] = ret[t];
-         temp[j++] = string[si];
+         temp[j] = string[si];
+
+         if (string[si])
+           {
+             j++;
+             i = si + 1;
+           }
+         else
+           i = si;
 
-         i = si + 1;
          if (free_ret)
            free (ret);
          continue;
@@ -777,7 +791,7 @@ skip_double_quoted (string, slen, sind)
        {
          si = i + 2;
          if (string[i + 1] == LPAREN)
-           ret = extract_delimited_string (string, &si, "$(", "(", ")", EX_NOALLOC);
+           ret = extract_delimited_string (string, &si, "$(", "(", ")", EX_NOALLOC); /* ) */
          else
            ret = extract_dollar_brace_string (string, &si, 0, EX_NOALLOC);
 
@@ -854,8 +868,14 @@ string_extract_verbatim (string, sindex, charlist)
      char *charlist;
 {
   register int i = *sindex;
+  size_t slen;
+#if defined (HANDLE_MULTIBYTE)
+  size_t clen;
+  wchar_t *wcharlist;
+#endif
   int c;
   char *temp;
+  DECLARE_MBSTATE;
 
   if (charlist[0] == '\'' && charlist[1] == '\0')
     {
@@ -864,18 +884,62 @@ string_extract_verbatim (string, sindex, charlist)
       return temp;
     }
 
-  for (i = *sindex; c = string[i]; i++)
+  slen = strlen (string + *sindex) + *sindex;
+  i = *sindex;
+#if defined (HANDLE_MULTIBYTE)
+  clen = strlen (charlist);
+  wcharlist = 0;
+#endif
+  while (c = string[i])
     {
+#if defined (HANDLE_MULTIBYTE)
+      size_t mblength;
+#endif
       if (c == CTLESC)
        {
-         i++;
+         i += 2;
          continue;
        }
 
+#if defined (HANDLE_MULTIBYTE)
+      mblength = MBLEN (string + i, slen - 1);
+      if (mblength > 1)
+       {
+         wchar_t wc;
+         mblength = mbtowc (&wc, string + i, slen - i);
+         if (MB_INVALIDCH (mblength))
+           {
+             if (MEMBER (c, charlist))
+               break;
+           }
+         else
+           {
+             if (wcharlist == 0)
+               {
+                 size_t len;
+                 len = mbstowcs (wcharlist, charlist, 0);
+                 if (len == -1)
+                   len = 0;
+                 wcharlist = xmalloc ((sizeof (wchar_t) * len) + 1);
+                 mbstowcs (wcharlist, charlist, len);
+               }
+
+             if (wcschr (wcharlist, wc))
+               break;
+           }
+       }
+      else             
+#endif
       if (MEMBER (c, charlist))
        break;
+
+      ADVANCE_CHAR (string, slen, i);
     }
 
+#if defined (HANDLE_MULTIBYTE)
+  FREE (wcharlist);
+#endif
+
   temp = substring (string, *sindex, i);
   *sindex = i;
 
@@ -884,13 +948,13 @@ string_extract_verbatim (string, sindex, charlist)
 
 /* Extract the $( construct in STRING, and return a new string.
    Start extracting at (SINDEX) as if we had just seen "$(".
-   Make (SINDEX) get the position of the matching ")". */
+   Make (SINDEX) get the position of the matching ")". */
 char *
 extract_command_subst (string, sindex)
      char *string;
      int *sindex;
 {
-  return (extract_delimited_string (string, sindex, "$(", "(", ")", 0));
+  return (extract_delimited_string (string, sindex, "$(", "(", ")", 0)); /*)*/
 }
 
 /* Extract the $[ construct in STRING, and return a new string. (])
@@ -1448,11 +1512,36 @@ split_at_delims (string, slen, delims, sentinel, nwp, cwp)
   d2 = 0;
   if (delims)
     {
-      d2 = (char *)xmalloc (strlen (delims) + 1);
-      for (i = ts = 0; delims[i]; i++)
+      size_t slength;
+#if defined (HANDLE_MULTIBYTE)
+      size_t mblength = 1;
+#endif
+      DECLARE_MBSTATE;
+
+      slength = strlen (delims);
+      d2 = (char *)xmalloc (slength + 1);
+      i = ts = 0;
+      while (delims[i])
        {
-         if (whitespace(delims[i]) == 0)
+#if defined (HANDLE_MULTIBYTE)
+         mbstate_t state_bak = state;
+         mblength = MBRLEN (delims + i, slength, &state);
+         if (MB_INVALIDCH (mblength))
+           state = state_bak;
+         else if (mblength > 1)
+           {
+             memcpy (d2 + ts, delims + i, mblength);
+             ts += mblength;
+             i += mblength;
+             slength -= mblength;
+             continue;
+           }
+#endif
+         if (whitespace (delims[i]) == 0)
            d2[ts++] = delims[i];
+
+         i++;
+         slength--;
        }
       d2[ts] = '\0';
     }
@@ -1646,10 +1735,25 @@ char *
 string_list_dollar_star (list)
      WORD_LIST *list;
 {
+#if defined (HANDLE_MULTIBYTE)
+  char sep[MB_CUR_MAX + 1];
+#else
   char sep[2];
+#endif
+
 
+#if defined (HANDLE_MULTIBYTE)
+  if (ifs_firstc_len == 1)
+    {
+      sep[0] = ifs_firstc[0];
+      sep[1] = '\0';
+    }
+  else
+    memcpy (sep, ifs_firstc, ifs_firstc_len);
+#else
   sep[0] = ifs_firstc;
   sep[1] = '\0';
+#endif
 
   return (string_list_internal (list, sep));
 }
@@ -1668,14 +1772,44 @@ string_list_dollar_at (list, quoted)
      WORD_LIST *list;
      int quoted;
 {
-  char *ifs, sep[2];
+  char *ifs;
+#if defined (HANDLE_MULTIBYTE)
+  char sep[MB_CUR_MAX + 1];
+#else
+  char sep[2];
+#endif
   WORD_LIST *tlist;
 
   /* XXX this could just be ifs = ifs_value; */
   ifs = ifs_var ? value_cell (ifs_var) : (char *)0;
 
+#if defined (HANDLE_MULTIBYTE)
+  if (ifs && *ifs)
+    {
+      size_t mblength;
+      mblength = MBLEN (ifs, strnlen (ifs, MB_CUR_MAX));
+      if (MB_INVALIDCH (mblength) || mblength == 1)
+       {
+         sep[0] = *ifs;
+         sep[1] = '\0';
+       }
+      else if (mblength == 0)
+       sep[0] = '\0';
+      else
+       {
+         memcpy (sep, ifs, mblength);
+         sep[mblength] = '\0';
+       }
+    }
+  else
+    {
+      sep[0] = ' ';
+      sep[1] = '\0';
+    }
+#else
   sep[0] = (ifs == 0 || *ifs == 0) ? ' ' : *ifs;
   sep[1] = '\0';
+#endif
 
   tlist = ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || (ifs && *ifs == 0))
                ? quote_list (list)
@@ -1724,6 +1858,7 @@ list_string (string, separators, quoted)
   WORD_DESC *t;
   char *current_word, *s;
   int sindex, sh_style_split, whitesep;
+  size_t slen;
 
   if (!string || !*string)
     return ((WORD_LIST *)NULL);
@@ -1733,6 +1868,7 @@ list_string (string, separators, quoted)
                                 separators[2] == '\n' &&
                                 separators[3] == '\0';
 
+  slen = 0;
   /* Remove sequences of whitespace at the beginning of STRING, as
      long as those characters appear in IFS.  Do not do this if
      STRING is quoted or if there are no separator characters. */
@@ -1797,7 +1933,12 @@ list_string (string, separators, quoted)
 
       /* Move past the current separator character. */
       if (string[sindex])
-       sindex++;
+       {
+         DECLARE_MBSTATE;
+         if (slen == 0)
+           slen = strlen (string);
+         ADVANCE_CHAR (string, slen, sindex);
+       }
 
       /* Now skip sequences of space, tab, or newline characters if they are
         in the list of separators. */
@@ -1828,6 +1969,7 @@ get_word_from_string (stringp, separators, endptr)
   register char *s;
   char *current_word;
   int sindex, sh_style_split, whitesep;
+  size_t slen;
 
   if (!stringp || !*stringp || !**stringp)
     return ((char *)NULL);
@@ -1839,6 +1981,8 @@ get_word_from_string (stringp, separators, endptr)
                                 separators[2] == '\n' &&
                                 separators[3] == '\0';
 
+  slen = 0;
+
   /* Remove sequences of whitespace at the beginning of STRING, as
      long as those characters appear in IFS. */
   if (sh_style_split || !separators || !*separators)
@@ -1873,7 +2017,12 @@ get_word_from_string (stringp, separators, endptr)
 
   /* Move past the current separator character. */
   if (s[sindex])
-    sindex++;
+    {
+      DECLARE_MBSTATE;
+      if (slen == 0)
+       slen = strlen (s);
+      ADVANCE_CHAR (s, slen, sindex);
+    }
 
   /* Now skip sequences of space, tab, or newline characters if they are
      in the list of separators. */
@@ -4683,6 +4832,26 @@ valid_length_expression (name)
          legal_identifier (name + 1));                         /* ${#PS1} */
 }
 
+#if defined (HANDLE_MULTIBYTE)
+size_t
+mbstrlen (s)
+     const char *s;
+{
+  size_t clen, nc;
+  mbstate_t mbs;
+
+  nc = 0;
+  memset (&mbs, 0, sizeof (mbs));
+  while ((clen = mbrlen(s, MB_CUR_MAX, &mbs)) != 0 && (MB_INVALIDCH(clen) == 0))
+    {
+      s += clen;
+      nc++;
+    }
+  return nc;
+}
+#endif
+      
+
 /* Handle the parameter brace expansion that requires us to return the
    length of a parameter. */
 static intmax_t
@@ -4738,14 +4907,14 @@ parameter_brace_expand_length (name)
       if (legal_number (name + 1, &arg_index))         /* ${#1} */
        {
          t = get_dollar_var_value (arg_index);
-         number = STRLEN (t);
+         number = MB_STRLEN (t);
          FREE (t);
        }
 #if defined (ARRAY_VARS)
-      else if ((var = find_variable (name + 1)) && array_p (var))
+      else if ((var = find_variable (name + 1)) && (invisible_p (var) == 0) && array_p (var))
        {
          t = array_reference (array_cell (var), 0);
-         number = STRLEN (t);
+         number = MB_STRLEN (t);
        }
 #endif
       else                             /* ${#PS1} */
@@ -4758,7 +4927,7 @@ parameter_brace_expand_length (name)
          if (list)
            dispose_words (list);
 
-         number = STRLEN (t);
+         number = MB_STRLEN (t);
          FREE (t);
        }
     }
@@ -4863,7 +5032,7 @@ verify_substring_values (value, substr, vtype, e1p, e2p)
     {
     case VT_VARIABLE:
     case VT_ARRAYMEMBER:
-      len = strlen (value);
+      len = MB_STRLEN (value);
       break;
     case VT_POSPARMS:
       len = number_of_args () + 1;
@@ -4871,8 +5040,9 @@ verify_substring_values (value, substr, vtype, e1p, e2p)
 #if defined (ARRAY_VARS)
     case VT_ARRAYVAR:
       a = (ARRAY *)value;
-      /* For arrays, the first value deals with array indices. */
-      len = array_max_index (a);       /* arrays index from 0 to n - 1 */
+      /* For arrays, the first value deals with array indices.  Negative
+        offsets count from one past the array's maximum index. */
+      len = array_max_index (a) + (*e1p < 0);  /* arrays index from 0 to n - 1 */
       break;
 #endif
     }
@@ -4883,7 +5053,7 @@ verify_substring_values (value, substr, vtype, e1p, e2p)
   if (*e1p < 0)                /* negative offsets count from end */
     *e1p += len;
 
-  if (*e1p >= len || *e1p < 0)
+  if (*e1p > len || *e1p < 0)
     return (-1);
 
 #if defined (ARRAY_VARS)
@@ -4974,7 +5144,7 @@ get_var_and_type (varname, value, quoted, varp, valp)
       else
        return -1;
     }
-  else if ((v = find_variable (varname)) && array_p (v))
+  else if ((v = find_variable (varname)) && (invisible_p (v) == 0) && array_p (v))
     {
       vtype = VT_ARRAYMEMBER;
       *varp = v;
@@ -6780,7 +6950,8 @@ setifs (v)
   ifs_var = v;
   ifs_value = v ? value_cell (v) : " \t\n";
 
-  /* Should really merge ifs_cmap with sh_syntaxtab. */
+  /* Should really merge ifs_cmap with sh_syntaxtab.  XXX - doesn't yet
+     handle multibyte chars in IFS */
   memset (ifs_cmap, '\0', sizeof (ifs_cmap));
   for (t = ifs_value ; t && *t; t++)
     {
@@ -6788,7 +6959,29 @@ setifs (v)
       ifs_cmap[uc] = 1;
     }
 
+#if defined (HANDLE_MULTIBYTE)
+  if (ifs_value == 0)
+    {
+      ifs_firstc[0] = '\0';
+      ifs_firstc_len = 1;
+    }
+  else
+    {
+      size_t ifs_len;
+      ifs_len = strnlen (ifs_value, MB_CUR_MAX);
+      ifs_firstc_len = MBLEN (ifs_value, ifs_len);
+      if (ifs_firstc_len == 1 || ifs_firstc_len == 0 || MB_INVALIDCH (ifs_firstc_len))
+       {
+         ifs_firstc[0] = ifs_value[0];
+         ifs_firstc[1] = '\0';
+         ifs_firstc_len = 1;
+       }
+      else
+       memcpy (ifs_firstc, ifs_value, ifs_firstc_len);
+    }
+#else
   ifs_firstc = ifs_value ? *ifs_value : 0;
+#endif
 }
 
 char *
@@ -6826,12 +7019,23 @@ static WORD_LIST *
 word_list_split (list)
      WORD_LIST *list;
 {
-  WORD_LIST *result, *t, *tresult;
+  WORD_LIST *result, *t, *tresult, *e;
 
   for (t = list, result = (WORD_LIST *)NULL; t; t = t->next)
     {
       tresult = word_split (t->word, ifs_value);
+#if 0
       result = (WORD_LIST *) list_append (result, tresult);
+#else
+      if (result == 0)
+        result = e = tresult;
+      else
+       {
+         e->next = tresult;
+         while (e->next)
+           e = e->next;
+       }
+#endif
     }
   return (result);
 }
@@ -7343,6 +7547,7 @@ expand_word_list_internal (list, eflags)
         that the variable and environment assignments affect the shell's
         environment. */
       assign_func = new_list ? assign_in_env : do_assignment;
+      tempenv_assign_error = 0;
 
       for (temp_list = subst_assign_varlist; temp_list; temp_list = temp_list->next)
        {
@@ -7350,13 +7555,18 @@ expand_word_list_internal (list, eflags)
          tint = (*assign_func) (temp_list->word->word);
          /* Variable assignment errors in non-interactive shells running
             in Posix.2 mode cause the shell to exit. */
-         if (tint == 0 && assign_func == do_assignment)
+         if (tint == 0)
            {
-             last_command_exit_value = EXECUTION_FAILURE;
-             if (interactive_shell == 0 && posixly_correct)
-               exp_jump_to_top_level (FORCE_EOF);
+             if (assign_func == do_assignment)
+               {
+                 last_command_exit_value = EXECUTION_FAILURE;
+                 if (interactive_shell == 0 && posixly_correct)
+                   exp_jump_to_top_level (FORCE_EOF);
+                 else
+                   exp_jump_to_top_level (DISCARD);
+               }
              else
-               exp_jump_to_top_level (DISCARD);
+               tempenv_assign_error++;
            }
        }
 
index d69a6684d979c880d791d26462b2f7ade903ca92..1262d2423ce00637f2a661c9b1e9a555c0097a4e 100644 (file)
@@ -124,7 +124,13 @@ pid_t current_command_subst_pid = NO_PID;
 SHELL_VAR *ifs_var;
 char *ifs_value;
 unsigned char ifs_cmap[UCHAR_MAX + 1];
+
+#if defined (HANDLE_MULTIBYTE)
+unsigned char ifs_firstc[MB_LEN_MAX];
+size_t ifs_firstc_len;
+#else
 unsigned char ifs_firstc;
+#endif
 
 /* Extern functions and variables from different files. */
 extern int last_command_exit_value, last_command_exit_signal;
@@ -785,7 +791,7 @@ skip_double_quoted (string, slen, sind)
        {
          si = i + 2;
          if (string[i + 1] == LPAREN)
-           ret = extract_delimited_string (string, &si, "$(", "(", ")", EX_NOALLOC);
+           ret = extract_delimited_string (string, &si, "$(", "(", ")", EX_NOALLOC); /* ) */
          else
            ret = extract_dollar_brace_string (string, &si, 0, EX_NOALLOC);
 
@@ -862,8 +868,14 @@ string_extract_verbatim (string, sindex, charlist)
      char *charlist;
 {
   register int i = *sindex;
+  size_t slen;
+#if defined (HANDLE_MULTIBYTE)
+  size_t clen;
+  wchar_t *wcharlist;
+#endif
   int c;
   char *temp;
+  DECLARE_MBSTATE;
 
   if (charlist[0] == '\'' && charlist[1] == '\0')
     {
@@ -872,18 +884,62 @@ string_extract_verbatim (string, sindex, charlist)
       return temp;
     }
 
-  for (i = *sindex; c = string[i]; i++)
+  slen = strlen (string + *sindex) + *sindex;
+  i = *sindex;
+#if defined (HANDLE_MULTIBYTE)
+  clen = strlen (charlist);
+  wcharlist = 0;
+#endif
+  while (c = string[i])
     {
+#if defined (HANDLE_MULTIBYTE)
+      size_t mblength;
+#endif
       if (c == CTLESC)
        {
-         i++;
+         i += 2;
          continue;
        }
 
+#if defined (HANDLE_MULTIBYTE)
+      mblength = MBLEN (string + i, slen - 1);
+      if (mblength > 1)
+       {
+         wchar_t wc;
+         mblength = mbtowc (&wc, string + i, slen - i);
+         if (MB_INVALIDCH (mblength))
+           {
+             if (MEMBER (c, charlist))
+               break;
+           }
+         else
+           {
+             if (wcharlist == 0)
+               {
+                 size_t len;
+                 len = mbstowcs (wcharlist, charlist, 0);
+                 if (len == -1)
+                   len = 0;
+                 wcharlist = xmalloc ((sizeof (wchar_t) * len) + 1);
+                 mbstowcs (wcharlist, charlist, len);
+               }
+
+             if (wcschr (wcharlist, wc))
+               break;
+           }
+       }
+      else             
+#endif
       if (MEMBER (c, charlist))
        break;
+
+      ADVANCE_CHAR (string, slen, i);
     }
 
+#if defined (HANDLE_MULTIBYTE)
+  FREE (wcharlist);
+#endif
+
   temp = substring (string, *sindex, i);
   *sindex = i;
 
@@ -892,13 +948,13 @@ string_extract_verbatim (string, sindex, charlist)
 
 /* Extract the $( construct in STRING, and return a new string.
    Start extracting at (SINDEX) as if we had just seen "$(".
-   Make (SINDEX) get the position of the matching ")". */
+   Make (SINDEX) get the position of the matching ")". */
 char *
 extract_command_subst (string, sindex)
      char *string;
      int *sindex;
 {
-  return (extract_delimited_string (string, sindex, "$(", "(", ")", 0));
+  return (extract_delimited_string (string, sindex, "$(", "(", ")", 0)); /*)*/
 }
 
 /* Extract the $[ construct in STRING, and return a new string. (])
@@ -1456,11 +1512,36 @@ split_at_delims (string, slen, delims, sentinel, nwp, cwp)
   d2 = 0;
   if (delims)
     {
-      d2 = (char *)xmalloc (strlen (delims) + 1);
-      for (i = ts = 0; delims[i]; i++)
+      size_t slength;
+#if defined (HANDLE_MULTIBYTE)
+      size_t mblength = 1;
+#endif
+      DECLARE_MBSTATE;
+
+      slength = strlen (delims);
+      d2 = (char *)xmalloc (slength + 1);
+      i = ts = 0;
+      while (delims[i])
        {
-         if (whitespace(delims[i]) == 0)
+#if defined (HANDLE_MULTIBYTE)
+         mbstate_t state_bak = state;
+         mblength = MBRLEN (delims + i, slength, &state);
+         if (MB_INVALIDCH (mblength))
+           state = state_bak;
+         else if (mblength > 1)
+           {
+             memcpy (d2 + ts, delims + i, mblength);
+             ts += mblength;
+             i += mblength;
+             slength -= mblength;
+             continue;
+           }
+#endif
+         if (whitespace (delims[i]) == 0)
            d2[ts++] = delims[i];
+
+         i++;
+         slength--;
        }
       d2[ts] = '\0';
     }
@@ -1654,10 +1735,25 @@ char *
 string_list_dollar_star (list)
      WORD_LIST *list;
 {
+#if defined (HANDLE_MULTIBYTE)
+  char sep[MB_CUR_MAX + 1];
+#else
   char sep[2];
+#endif
+
 
+#if defined (HANDLE_MULTIBYTE)
+  if (ifs_firstc_len == 1)
+    {
+      sep[0] = ifs_firstc[0];
+      sep[1] = '\0';
+    }
+  else
+    memcpy (sep, ifs_firstc, ifs_firstc_len);
+#else
   sep[0] = ifs_firstc;
   sep[1] = '\0';
+#endif
 
   return (string_list_internal (list, sep));
 }
@@ -1676,14 +1772,44 @@ string_list_dollar_at (list, quoted)
      WORD_LIST *list;
      int quoted;
 {
-  char *ifs, sep[2];
+  char *ifs;
+#if defined (HANDLE_MULTIBYTE)
+  char sep[MB_CUR_MAX + 1];
+#else
+  char sep[2];
+#endif
   WORD_LIST *tlist;
 
   /* XXX this could just be ifs = ifs_value; */
   ifs = ifs_var ? value_cell (ifs_var) : (char *)0;
 
+#if defined (HANDLE_MULTIBYTE)
+  if (ifs && *ifs)
+    {
+      size_t mblength;
+      mblength = MBLEN (ifs, strnlen (ifs, MB_CUR_MAX));
+      if (MB_INVALIDCH (mblength) || mblength == 1)
+       {
+         sep[0] = *ifs;
+         sep[1] = '\0';
+       }
+      else if (mblength == 0)
+       sep[0] = '\0';
+      else
+       {
+         memcpy (sep, ifs, mblength);
+         sep[mblength] = '\0';
+       }
+    }
+  else
+    {
+      sep[0] = ' ';
+      sep[1] = '\0';
+    }
+#else
   sep[0] = (ifs == 0 || *ifs == 0) ? ' ' : *ifs;
   sep[1] = '\0';
+#endif
 
   tlist = ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || (ifs && *ifs == 0))
                ? quote_list (list)
@@ -1732,6 +1858,7 @@ list_string (string, separators, quoted)
   WORD_DESC *t;
   char *current_word, *s;
   int sindex, sh_style_split, whitesep;
+  size_t slen;
 
   if (!string || !*string)
     return ((WORD_LIST *)NULL);
@@ -1741,6 +1868,7 @@ list_string (string, separators, quoted)
                                 separators[2] == '\n' &&
                                 separators[3] == '\0';
 
+  slen = 0;
   /* Remove sequences of whitespace at the beginning of STRING, as
      long as those characters appear in IFS.  Do not do this if
      STRING is quoted or if there are no separator characters. */
@@ -1805,7 +1933,12 @@ list_string (string, separators, quoted)
 
       /* Move past the current separator character. */
       if (string[sindex])
-       sindex++;
+       {
+         DECLARE_MBSTATE;
+         if (slen == 0)
+           slen = strlen (string);
+         ADVANCE_CHAR (string, slen, sindex);
+       }
 
       /* Now skip sequences of space, tab, or newline characters if they are
         in the list of separators. */
@@ -1836,6 +1969,7 @@ get_word_from_string (stringp, separators, endptr)
   register char *s;
   char *current_word;
   int sindex, sh_style_split, whitesep;
+  size_t slen;
 
   if (!stringp || !*stringp || !**stringp)
     return ((char *)NULL);
@@ -1847,6 +1981,8 @@ get_word_from_string (stringp, separators, endptr)
                                 separators[2] == '\n' &&
                                 separators[3] == '\0';
 
+  slen = 0;
+
   /* Remove sequences of whitespace at the beginning of STRING, as
      long as those characters appear in IFS. */
   if (sh_style_split || !separators || !*separators)
@@ -1881,7 +2017,12 @@ get_word_from_string (stringp, separators, endptr)
 
   /* Move past the current separator character. */
   if (s[sindex])
-    sindex++;
+    {
+      DECLARE_MBSTATE;
+      if (slen == 0)
+       slen = strlen (s);
+      ADVANCE_CHAR (s, slen, sindex);
+    }
 
   /* Now skip sequences of space, tab, or newline characters if they are
      in the list of separators. */
@@ -2024,10 +2165,10 @@ do_assignment_internal (string, expand)
       if (expand && temp[0])
        {
          temp = (xstrchr (temp, '~') && unquoted_member ('~', temp))
-                       ? bash_tilde_expand (temp, 1)
+                       ? bash_tilde_expand (temp, 2)
                        : savestring (temp);
 
-         value = expand_string_if_necessary (temp, 0, expand_string_unsplit);
+         value = expand_string_if_necessary (temp, 0, expand_string_assignment);
          free (temp);
        }
       else
@@ -2460,6 +2601,36 @@ expand_string_unsplit (string, quoted)
   return (value);
 }
 
+/* Expand the rhs of an assignment statement */
+WORD_LIST *
+expand_string_assignment (string, quoted)
+     char *string;
+     int quoted;
+{
+  WORD_DESC td;
+  WORD_LIST *value;
+
+  if (string == 0 || *string == '\0')
+    return ((WORD_LIST *)NULL);
+
+  expand_no_split_dollar_star = 1;
+
+  td.flags = W_ASSIGNRHS;
+  td.word = savestring (string);
+  value = call_expand_word_internal (&td, quoted, 0, (int *)NULL, (int *)NULL);
+  FREE (td.word);
+
+  expand_no_split_dollar_star = 0;
+
+  if (value)
+    {
+      if (value->word)
+       remove_quoted_nulls (value->word->word);
+      dequote_list (value);
+    }
+  return (value);
+}
+
 
 /* Expand one of the PS? prompt strings. This is a sort of combination of
    expand_string_unsplit and expand_string_internal, but returns the
@@ -6180,6 +6351,7 @@ expand_word_internal (word, quoted, isexp, contains_dollar_at, expanded_somethin
      string (e.g., "xx"ab), or is fully quoted (e.g., "xxab"). */
   int quoted_state;
 
+  /* State flags */
   int had_quoted_null;
   int has_dollar_at;
   int tflag;
@@ -6809,7 +6981,8 @@ setifs (v)
   ifs_var = v;
   ifs_value = v ? value_cell (v) : " \t\n";
 
-  /* Should really merge ifs_cmap with sh_syntaxtab. */
+  /* Should really merge ifs_cmap with sh_syntaxtab.  XXX - doesn't yet
+     handle multibyte chars in IFS */
   memset (ifs_cmap, '\0', sizeof (ifs_cmap));
   for (t = ifs_value ; t && *t; t++)
     {
@@ -6817,7 +6990,29 @@ setifs (v)
       ifs_cmap[uc] = 1;
     }
 
+#if defined (HANDLE_MULTIBYTE)
+  if (ifs_value == 0)
+    {
+      ifs_firstc[0] = '\0';
+      ifs_firstc_len = 1;
+    }
+  else
+    {
+      size_t ifs_len;
+      ifs_len = strnlen (ifs_value, MB_CUR_MAX);
+      ifs_firstc_len = MBLEN (ifs_value, ifs_len);
+      if (ifs_firstc_len == 1 || ifs_firstc_len == 0 || MB_INVALIDCH (ifs_firstc_len))
+       {
+         ifs_firstc[0] = ifs_value[0];
+         ifs_firstc[1] = '\0';
+         ifs_firstc_len = 1;
+       }
+      else
+       memcpy (ifs_firstc, ifs_value, ifs_firstc_len);
+    }
+#else
   ifs_firstc = ifs_value ? *ifs_value : 0;
+#endif
 }
 
 char *
diff --git a/subst.c.save2 b/subst.c.save2
new file mode 100644 (file)
index 0000000..b647dd1
--- /dev/null
@@ -0,0 +1,7700 @@
+/* subst.c -- The part of the shell that does parameter, command, and
+   globbing substitutions. */
+
+/* ``Have a little faith, there's magic in the night.  You ain't a
+     beauty, but, hey, you're alright.'' */
+
+/* Copyright (C) 1987-2004 Free Software Foundation, Inc.
+
+   This file is part of GNU Bash, the Bourne Again SHell.
+
+   Bash is free software; you can redistribute it and/or modify it under
+   the terms of the GNU General Public License as published by the Free
+   Software Foundation; either version 2, or (at your option) any later
+   version.
+
+   Bash is distributed in the hope that it will be useful, but WITHOUT ANY
+   WARRANTY; without even the implied warranty of MERCHANTABILITY or
+   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+   for more details.
+
+   You should have received a copy of the GNU General Public License along
+   with Bash; see the file COPYING.  If not, write to the Free Software
+   Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
+
+#include "config.h"
+
+#include "bashtypes.h"
+#include <stdio.h>
+#include "chartypes.h"
+#include <pwd.h>
+#include <signal.h>
+#include <errno.h>
+
+#if defined (HAVE_UNISTD_H)
+#  include <unistd.h>
+#endif
+
+#include "bashansi.h"
+#include "posixstat.h"
+#include "bashintl.h"
+
+#include "shell.h"
+#include "flags.h"
+#include "jobs.h"
+#include "execute_cmd.h"
+#include "filecntl.h"
+#include "trap.h"
+#include "pathexp.h"
+#include "mailcheck.h"
+
+#include "shmbutil.h"
+
+#include "builtins/getopt.h"
+#include "builtins/common.h"
+
+#include <tilde/tilde.h>
+#include <glob/strmatch.h>
+
+#if !defined (errno)
+extern int errno;
+#endif /* !errno */
+
+/* The size that strings change by. */
+#define DEFAULT_INITIAL_ARRAY_SIZE 112
+#define DEFAULT_ARRAY_SIZE 128
+
+/* Variable types. */
+#define VT_VARIABLE    0
+#define VT_POSPARMS    1
+#define VT_ARRAYVAR    2
+#define VT_ARRAYMEMBER 3
+
+#define VT_STARSUB     128     /* $* or ${array[*]} -- used to split */
+
+/* Flags for quoted_strchr */
+#define ST_BACKSL      0x01
+#define ST_CTLESC      0x02
+#define ST_SQUOTE      0x04    /* unused yet */
+#define ST_DQUOTE      0x08    /* unused yet */
+
+/* Flags for the string extraction functions. */
+#define EX_NOALLOC     0x01    /* just skip; don't return substring */
+#define EX_VARNAME     0x02    /* variable name; for string_extract () */
+
+/* Flags for the `pflags' argument to param_expand() */
+#define PF_NOCOMSUB    0x01    /* Do not perform command substitution */
+
+/* These defs make it easier to use the editor. */
+#define LBRACE         '{'
+#define RBRACE         '}'
+#define LPAREN         '('
+#define RPAREN         ')'
+
+/* Evaluates to 1 if C is one of the shell's special parameters whose length
+   can be taken, but is also one of the special expansion characters. */
+#define VALID_SPECIAL_LENGTH_PARAM(c) \
+  ((c) == '-' || (c) == '?' || (c) == '#')
+
+/* Evaluates to 1 if C is one of the shell's special parameters for which an
+   indirect variable reference may be made. */
+#define VALID_INDIR_PARAM(c) \
+  ((c) == '#' || (c) == '?' || (c) == '@' || (c) == '*')
+
+/* Evaluates to 1 if C is one of the OP characters that follows the parameter
+   in ${parameter[:]OPword}. */
+#define VALID_PARAM_EXPAND_CHAR(c) (sh_syntaxtab[(unsigned char)c] & CSUBSTOP)
+
+/* Evaluates to 1 if this is one of the shell's special variables. */
+#define SPECIAL_VAR(name, wi) \
+ ((DIGIT (*name) && all_digits (name)) || \
+      (name[1] == '\0' && (sh_syntaxtab[(unsigned char)*name] & CSPECVAR)) || \
+      (wi && name[2] == '\0' && VALID_INDIR_PARAM (name[1])))
+
+/* An expansion function that takes a string and a quoted flag and returns
+   a WORD_LIST *.  Used as the type of the third argument to
+   expand_string_if_necessary(). */
+typedef WORD_LIST *EXPFUNC __P((char *, int));
+
+/* Process ID of the last command executed within command substitution. */
+pid_t last_command_subst_pid = NO_PID;
+pid_t current_command_subst_pid = NO_PID;
+
+/* Variables used to keep track of the characters in IFS. */
+SHELL_VAR *ifs_var;
+char *ifs_value;
+unsigned char ifs_cmap[UCHAR_MAX + 1];
+
+#if defined (HANDLE_MULTIBYTE)
+unsigned char ifs_firstc[MB_LEN_MAX];
+size_t ifs_firstc_len;
+#else
+unsigned char ifs_firstc;
+#endif
+
+/* Extern functions and variables from different files. */
+extern int last_command_exit_value, last_command_exit_signal;
+extern int subshell_environment;
+extern int subshell_level;
+extern int eof_encountered;
+extern int return_catch_flag, return_catch_value;
+extern pid_t dollar_dollar_pid;
+extern int posixly_correct;
+extern char *this_command_name;
+extern struct fd_bitmap *current_fds_to_close;
+extern int wordexp_only;
+extern int expanding_redir;
+extern int tempenv_assign_error;
+
+/* Non-zero means to allow unmatched globbed filenames to expand to
+   a null file. */
+int allow_null_glob_expansion;
+
+/* Non-zero means to throw an error when globbing fails to match anything. */
+int fail_glob_expansion;
+
+#if 0
+/* Variables to keep track of which words in an expanded word list (the
+   output of expand_word_list_internal) are the result of globbing
+   expansions.  GLOB_ARGV_FLAGS is used by execute_cmd.c.
+   (CURRENTLY UNUSED). */
+char *glob_argv_flags;
+static int glob_argv_flags_size;
+#endif
+
+static WORD_LIST expand_word_error, expand_word_fatal;
+static char expand_param_error, expand_param_fatal;
+
+/* Tell the expansion functions to not longjmp back to top_level on fatal
+   errors.  Enabled when doing completion and prompt string expansion. */
+static int no_longjmp_on_fatal_error = 0;
+
+/* Set by expand_word_unsplit; used to inhibit splitting and re-joining
+   $* on $IFS, primarily when doing assignment statements. */
+static int expand_no_split_dollar_star = 0;
+
+/* Used to hold a list of variable assignments preceding a command.  Global
+   so the SIGCHLD handler in jobs.c can unwind-protect it when it runs a
+   SIGCHLD trap. */
+WORD_LIST *subst_assign_varlist = (WORD_LIST *)NULL;
+
+/* A WORD_LIST of words to be expanded by expand_word_list_internal,
+   without any leading variable assignments. */
+static WORD_LIST *garglist = (WORD_LIST *)NULL;
+
+static char *quoted_substring __P((char *, int, int));
+static int quoted_strlen __P((char *));
+static char *quoted_strchr __P((char *, int, int));
+
+static char *expand_string_if_necessary __P((char *, int, EXPFUNC *));
+static inline char *expand_string_to_string_internal __P((char *, int, EXPFUNC *));
+static WORD_LIST *call_expand_word_internal __P((WORD_DESC *, int, int, int *, int *));
+static WORD_LIST *expand_string_internal __P((char *, int));
+static WORD_LIST *expand_string_leave_quoted __P((char *, int));
+static WORD_LIST *expand_string_for_rhs __P((char *, int, int *, int *));
+
+static WORD_LIST *list_quote_escapes __P((WORD_LIST *));
+static char *dequote_escapes __P((char *));
+static char *make_quoted_char __P((int));
+static WORD_LIST *quote_list __P((WORD_LIST *));
+static WORD_LIST *dequote_list __P((WORD_LIST *));
+static char *remove_quoted_escapes __P((char *));
+static char *remove_quoted_nulls __P((char *));
+
+static int unquoted_substring __P((char *, char *));
+static int unquoted_member __P((int, char *));
+
+static int do_assignment_internal __P((const char *, int));
+
+static char *string_extract_verbatim __P((char *, int *, char *));
+static char *string_extract __P((char *, int *, char *, int));
+static char *string_extract_double_quoted __P((char *, int *, int));
+static inline char *string_extract_single_quoted __P((char *, int *));
+static inline int skip_single_quoted __P((char *, size_t, int));
+static int skip_double_quoted __P((char *, size_t, int));
+static char *extract_delimited_string __P((char *, int *, char *, char *, char *, int));
+static char *extract_dollar_brace_string __P((char *, int *, int, int));
+
+static char *pos_params __P((char *, int, int, int));
+
+static unsigned char *mb_getcharlens __P((char *, int));
+
+static char *remove_upattern __P((char *, char *, int));
+#if defined (HANDLE_MULTIBYTE)
+#  if !defined (HAVE_WCSDUP)
+static wchar_t *wcsdup __P((wchar_t *));
+#  endif
+static wchar_t *remove_wpattern __P((wchar_t *, size_t, wchar_t *, int));
+#endif
+static char *remove_pattern __P((char *, char *, int));
+
+static int match_pattern_char __P((char *, char *));
+static int match_upattern __P((char *, char *, int, char **, char **));
+#if defined (HANDLE_MULTIBYTE)
+static int match_pattern_wchar __P((wchar_t *, wchar_t *));
+static int match_wpattern __P((wchar_t *, char **, size_t, wchar_t *, int, char **, char **));
+#endif
+static int match_pattern __P((char *, char *, int, char **, char **));
+static int getpatspec __P((int, char *));
+static char *getpattern __P((char *, int, int));
+static char *variable_remove_pattern __P((char *, char *, int, int));
+static char *list_remove_pattern __P((WORD_LIST *, char *, int, int, int));
+static char *parameter_list_remove_pattern __P((int, char *, int, int));
+#ifdef ARRAY_VARS
+static char *array_remove_pattern __P((ARRAY *, char *, int, char *, int));
+#endif
+static char *parameter_brace_remove_pattern __P((char *, char *, char *, int, int));
+
+static char *process_substitute __P((char *, int));
+
+static char *read_comsub __P((int, int));
+
+#ifdef ARRAY_VARS
+static arrayind_t array_length_reference __P((char *));
+#endif
+
+static int valid_brace_expansion_word __P((char *, int));
+static int chk_atstar __P((char *, int, int *, int *));
+
+static char *parameter_brace_expand_word __P((char *, int, int));
+static char *parameter_brace_expand_indir __P((char *, int, int, int *, int *));
+static char *parameter_brace_expand_rhs __P((char *, char *, int, int, int *, int *));
+static void parameter_brace_expand_error __P((char *, char *));
+
+static int valid_length_expression __P((char *));
+static intmax_t parameter_brace_expand_length __P((char *));
+
+static char *skiparith __P((char *, int));
+static int verify_substring_values __P((char *, char *, int, intmax_t *, intmax_t *));
+static int get_var_and_type __P((char *, char *, int, SHELL_VAR **, char **));
+static char *mb_substring __P((char *, int, int));
+static char *parameter_brace_substring __P((char *, char *, char *, int));
+
+static char *pos_params_pat_subst __P((char *, char *, char *, int));
+
+static char *parameter_brace_patsub __P((char *, char *, char *, int));
+
+static char *parameter_brace_expand __P((char *, int *, int, int *, int *));
+static char *param_expand __P((char *, int *, int, int *, int *, int *, int *, int));
+
+static WORD_LIST *expand_word_internal __P((WORD_DESC *, int, int, int *, int *));
+
+static WORD_LIST *word_list_split __P((WORD_LIST *));
+
+static void exp_jump_to_top_level __P((int));
+
+static WORD_LIST *separate_out_assignments __P((WORD_LIST *));
+static WORD_LIST *glob_expand_word_list __P((WORD_LIST *, int));
+#ifdef BRACE_EXPANSION
+static WORD_LIST *brace_expand_word_list __P((WORD_LIST *, int));
+#endif
+static WORD_LIST *shell_expand_word_list __P((WORD_LIST *, int));
+static WORD_LIST *expand_word_list_internal __P((WORD_LIST *, int));
+
+/* **************************************************************** */
+/*                                                                 */
+/*                     Utility Functions                           */
+/*                                                                 */
+/* **************************************************************** */
+
+#ifdef INCLUDE_UNUSED
+static char *
+quoted_substring (string, start, end)
+     char *string;
+     int start, end;
+{
+  register int len, l;
+  register char *result, *s, *r;
+
+  len = end - start;
+
+  /* Move to string[start], skipping quoted characters. */
+  for (s = string, l = 0; *s && l < start; )
+    {
+      if (*s == CTLESC)
+       {
+         s++;
+         continue;
+       }
+      l++;
+      if (*s == 0)
+       break;
+    }
+
+  r = result = (char *)xmalloc (2*len + 1);      /* save room for quotes */
+
+  /* Copy LEN characters, including quote characters. */
+  s = string + l;
+  for (l = 0; l < len; s++)
+    {
+      if (*s == CTLESC)
+       *r++ = *s++;
+      *r++ = *s;
+      l++;
+      if (*s == 0)
+       break;
+    }
+  *r = '\0';
+  return result;
+}
+#endif
+
+#ifdef INCLUDE_UNUSED
+/* Return the length of S, skipping over quoted characters */
+static int
+quoted_strlen (s)
+     char *s;
+{
+  register char *p;
+  int i;
+
+  i = 0;
+  for (p = s; *p; p++)
+    {
+      if (*p == CTLESC)
+       {
+         p++;
+         if (*p == 0)
+           return (i + 1);
+       }
+      i++;
+    }
+
+  return i;
+}
+#endif
+
+/* Find the first occurrence of character C in string S, obeying shell
+   quoting rules.  If (FLAGS & ST_BACKSL) is non-zero, backslash-escaped
+   characters are skipped.  If (FLAGS & ST_CTLESC) is non-zero, characters
+   escaped with CTLESC are skipped. */
+static char *
+quoted_strchr (s, c, flags)
+     char *s;
+     int c, flags;
+{
+  register char *p;
+
+  for (p = s; *p; p++)
+    {
+      if (((flags & ST_BACKSL) && *p == '\\')
+           || ((flags & ST_CTLESC) && *p == CTLESC))
+       {
+         p++;
+         if (*p == '\0')
+           return ((char *)NULL);
+         continue;
+       }
+      else if (*p == c)
+       return p;
+    }
+  return ((char *)NULL);
+}
+
+/* Return 1 if CHARACTER appears in an unquoted portion of
+   STRING.  Return 0 otherwise.  CHARACTER must be a single-byte character. */
+static int
+unquoted_member (character, string)
+     int character;
+     char *string;
+{
+  size_t slen;
+  int sindex, c;
+  DECLARE_MBSTATE;
+
+  slen = strlen (string);
+  sindex = 0;
+  while (c = string[sindex])
+    {
+      if (c == character)
+       return (1);
+
+      switch (c)
+       {
+       default:
+         ADVANCE_CHAR (string, slen, sindex);
+         break;
+
+       case '\\':
+         sindex++;
+         if (string[sindex])
+           ADVANCE_CHAR (string, slen, sindex);
+         break;
+
+       case '\'':
+         sindex = skip_single_quoted (string, slen, ++sindex);
+         break;
+
+       case '"':
+         sindex = skip_double_quoted (string, slen, ++sindex);
+         break;
+       }
+    }
+  return (0);
+}
+
+/* Return 1 if SUBSTR appears in an unquoted portion of STRING. */
+static int
+unquoted_substring (substr, string)
+     char *substr, *string;
+{
+  size_t slen;
+  int sindex, c, sublen;
+  DECLARE_MBSTATE;
+
+  if (substr == 0 || *substr == '\0')
+    return (0);
+
+  slen = strlen (string);
+  sublen = strlen (substr);
+  for (sindex = 0; c = string[sindex]; )
+    {
+      if (STREQN (string + sindex, substr, sublen))
+       return (1);
+
+      switch (c)
+       {
+       case '\\':
+         sindex++;
+
+         if (string[sindex])
+           ADVANCE_CHAR (string, slen, sindex);
+         break;
+
+       case '\'':
+         sindex = skip_single_quoted (string, slen, ++sindex);
+         break;
+
+       case '"':
+         sindex = skip_double_quoted (string, slen, ++sindex);
+         break;
+
+       default:
+         ADVANCE_CHAR (string, slen, sindex);
+         break;
+       }
+    }
+  return (0);
+}
+
+/* Most of the substitutions must be done in parallel.  In order
+   to avoid using tons of unclear goto's, I have some functions
+   for manipulating malloc'ed strings.  They all take INDX, a
+   pointer to an integer which is the offset into the string
+   where manipulation is taking place.  They also take SIZE, a
+   pointer to an integer which is the current length of the
+   character array for this string. */
+
+/* Append SOURCE to TARGET at INDEX.  SIZE is the current amount
+   of space allocated to TARGET.  SOURCE can be NULL, in which
+   case nothing happens.  Gets rid of SOURCE by freeing it.
+   Returns TARGET in case the location has changed. */
+INLINE char *
+sub_append_string (source, target, indx, size)
+     char *source, *target;
+     int *indx, *size;
+{
+  if (source)
+    {
+      int srclen, n;
+
+      srclen = STRLEN (source);
+      if (srclen >= (int)(*size - *indx))
+       {
+         n = srclen + *indx;
+         n = (n + DEFAULT_ARRAY_SIZE) - (n % DEFAULT_ARRAY_SIZE);
+         target = (char *)xrealloc (target, (*size = n));
+       }
+
+      FASTCOPY (source, target + *indx, srclen);
+      *indx += srclen;
+      target[*indx] = '\0';
+
+      free (source);
+    }
+  return (target);
+}
+
+#if 0
+/* UNUSED */
+/* Append the textual representation of NUMBER to TARGET.
+   INDX and SIZE are as in SUB_APPEND_STRING. */
+char *
+sub_append_number (number, target, indx, size)
+     intmax_t number;
+     int *indx, *size;
+     char *target;
+{
+  char *temp;
+
+  temp = itos (number);
+  return (sub_append_string (temp, target, indx, size));
+}
+#endif
+
+/* Extract a substring from STRING, starting at SINDEX and ending with
+   one of the characters in CHARLIST.  Don't make the ending character
+   part of the string.  Leave SINDEX pointing at the ending character.
+   Understand about backslashes in the string.  If (flags & EX_VARNAME)
+   is non-zero, and array variables have been compiled into the shell,
+   everything between a `[' and a corresponding `]' is skipped over.
+   If (flags & EX_NOALLOC) is non-zero, don't return the substring, just
+   update SINDEX. */
+static char *
+string_extract (string, sindex, charlist, flags)
+     char *string;
+     int *sindex;
+     char *charlist;
+     int flags;
+{
+  register int c, i;
+  size_t slen;
+  char *temp;
+  DECLARE_MBSTATE;
+
+  slen = strlen (string + *sindex) + *sindex;
+  i = *sindex;
+  while (c = string[i])
+    {
+      if (c == '\\')
+       {
+         if (string[i + 1])
+           i++;
+         else
+           break;
+       }
+#if defined (ARRAY_VARS)
+      else if ((flags & EX_VARNAME) && c == '[')
+       {
+         int ni;
+         /* If this is an array subscript, skip over it and continue. */
+         ni = skipsubscript (string, i);
+         if (string[ni] == ']')
+           i = ni;
+       }
+#endif
+      else if (MEMBER (c, charlist))
+         break;
+
+      ADVANCE_CHAR (string, slen, i);
+    }
+
+  temp = (flags & EX_NOALLOC) ? (char *)NULL : substring (string, *sindex, i);
+  *sindex = i;
+  return (temp);
+}
+
+/* Extract the contents of STRING as if it is enclosed in double quotes.
+   SINDEX, when passed in, is the offset of the character immediately
+   following the opening double quote; on exit, SINDEX is left pointing after
+   the closing double quote.  If STRIPDQ is non-zero, unquoted double
+   quotes are stripped and the string is terminated by a null byte.
+   Backslashes between the embedded double quotes are processed.  If STRIPDQ
+   is zero, an unquoted `"' terminates the string. */
+static char *
+string_extract_double_quoted (string, sindex, stripdq)
+     char *string;
+     int *sindex, stripdq;
+{
+  size_t slen;
+  char *send;
+  int j, i, t;
+  unsigned char c;
+  char *temp, *ret;            /* The new string we return. */
+  int pass_next, backquote, si;        /* State variables for the machine. */
+  int dquote;
+  DECLARE_MBSTATE;
+
+  slen = strlen (string + *sindex) + *sindex;
+  send = string + slen;
+
+  pass_next = backquote = dquote = 0;
+  temp = (char *)xmalloc (1 + slen - *sindex);
+
+  j = 0;
+  i = *sindex;
+  while (c = string[i])
+    {
+      /* Process a character that was quoted by a backslash. */
+      if (pass_next)
+       {
+         /* Posix.2 sez:
+
+            ``The backslash shall retain its special meaning as an escape
+            character only when followed by one of the characters:
+               $       `       "       \       <newline>''.
+
+            If STRIPDQ is zero, we handle the double quotes here and let
+            expand_word_internal handle the rest.  If STRIPDQ is non-zero,
+            we have already been through one round of backslash stripping,
+            and want to strip these backslashes only if DQUOTE is non-zero,
+            indicating that we are inside an embedded double-quoted string. */
+
+            /* If we are in an embedded quoted string, then don't strip
+               backslashes before characters for which the backslash
+               retains its special meaning, but remove backslashes in
+               front of other characters.  If we are not in an
+               embedded quoted string, don't strip backslashes at all.
+               This mess is necessary because the string was already
+               surrounded by double quotes (and sh has some really weird
+               quoting rules).
+               The returned string will be run through expansion as if
+               it were double-quoted. */
+         if ((stripdq == 0 && c != '"') ||
+             (stripdq && ((dquote && (sh_syntaxtab[c] & CBSDQUOTE)) || dquote == 0)))
+           temp[j++] = '\\';
+         pass_next = 0;
+
+add_one_character:
+         COPY_CHAR_I (temp, j, string, send, i);
+         continue;
+       }
+
+      /* A backslash protects the next character.  The code just above
+        handles preserving the backslash in front of any character but
+        a double quote. */
+      if (c == '\\')
+       {
+         pass_next++;
+         i++;
+         continue;
+       }
+
+      /* Inside backquotes, ``the portion of the quoted string from the
+        initial backquote and the characters up to the next backquote
+        that is not preceded by a backslash, having escape characters
+        removed, defines that command''. */
+      if (backquote)
+       {
+         if (c == '`')
+           backquote = 0;
+         temp[j++] = c;
+         i++;
+         continue;
+       }
+
+      if (c == '`')
+       {
+         temp[j++] = c;
+         backquote++;
+         i++;
+         continue;
+       }
+
+      /* Pass everything between `$(' and the matching `)' or a quoted
+        ${ ... } pair through according to the Posix.2 specification. */
+      if (c == '$' && ((string[i + 1] == LPAREN) || (string[i + 1] == LBRACE)))
+       {
+         int free_ret = 1;
+
+         si = i + 2;
+         if (string[i + 1] == LPAREN)
+           ret = extract_delimited_string (string, &si, "$(", "(", ")", 0); /*)*/
+         else
+           ret = extract_dollar_brace_string (string, &si, 1, 0);
+
+         temp[j++] = '$';
+         temp[j++] = string[i + 1];
+
+         /* Just paranoia; ret will not be 0 unless no_longjmp_on_fatal_error
+            is set. */
+         if (ret == 0 && no_longjmp_on_fatal_error)
+           {
+             free_ret = 0;
+             ret = string + i + 2;
+           }
+
+         for (t = 0; ret[t]; t++, j++)
+           temp[j] = ret[t];
+         temp[j] = string[si];
+
+         if (string[si])
+           {
+             j++;
+             i = si + 1;
+           }
+         else
+           i = si;
+
+         if (free_ret)
+           free (ret);
+         continue;
+       }
+
+      /* Add any character but a double quote to the quoted string we're
+        accumulating. */
+      if (c != '"')
+       goto add_one_character;
+
+      /* c == '"' */
+      if (stripdq)
+       {
+         dquote ^= 1;
+         i++;
+         continue;
+       }
+
+      break;
+    }
+  temp[j] = '\0';
+
+  /* Point to after the closing quote. */
+  if (c)
+    i++;
+  *sindex = i;
+
+  return (temp);
+}
+
+/* This should really be another option to string_extract_double_quoted. */
+static int
+skip_double_quoted (string, slen, sind)
+     char *string;
+     size_t slen;
+     int sind;
+{
+  int c, i;
+  char *ret;
+  int pass_next, backquote, si;
+  DECLARE_MBSTATE;
+
+  pass_next = backquote = 0;
+  i = sind;
+  while (c = string[i])
+    {
+      if (pass_next)
+       {
+         pass_next = 0;
+         ADVANCE_CHAR (string, slen, i);
+         continue;
+       }
+      else if (c == '\\')
+       {
+         pass_next++;
+         i++;
+         continue;
+       }
+      else if (backquote)
+       {
+         if (c == '`')
+           backquote = 0;
+         ADVANCE_CHAR (string, slen, i);
+         continue;
+       }
+      else if (c == '`')
+       {
+         backquote++;
+         i++;
+         continue;
+       }
+      else if (c == '$' && ((string[i + 1] == LPAREN) || (string[i + 1] == LBRACE)))
+       {
+         si = i + 2;
+         if (string[i + 1] == LPAREN)
+           ret = extract_delimited_string (string, &si, "$(", "(", ")", EX_NOALLOC); /* ) */
+         else
+           ret = extract_dollar_brace_string (string, &si, 0, EX_NOALLOC);
+
+         i = si + 1;
+         continue;
+       }
+      else if (c != '"')
+       {
+         ADVANCE_CHAR (string, slen, i);
+         continue;
+       }
+      else
+       break;
+    }
+
+  if (c)
+    i++;
+
+  return (i);
+}
+
+/* Extract the contents of STRING as if it is enclosed in single quotes.
+   SINDEX, when passed in, is the offset of the character immediately
+   following the opening single quote; on exit, SINDEX is left pointing after
+   the closing single quote. */
+static inline char *
+string_extract_single_quoted (string, sindex)
+     char *string;
+     int *sindex;
+{
+  register int i;
+  size_t slen;
+  char *t;
+  DECLARE_MBSTATE;
+
+  slen = strlen (string + *sindex) + *sindex;
+  i = *sindex;
+  while (string[i] && string[i] != '\'')
+    ADVANCE_CHAR (string, slen, i);
+
+  t = substring (string, *sindex, i);
+
+  if (string[i])
+    i++;
+  *sindex = i;
+
+  return (t);
+}
+
+static inline int
+skip_single_quoted (string, slen, sind)
+     char *string;
+     size_t slen;
+     int sind;
+{
+  register int c;
+  DECLARE_MBSTATE;
+
+  c = sind;
+  while (string[c] && string[c] != '\'')
+    ADVANCE_CHAR (string, slen, c);
+
+  if (string[c])
+    c++;
+  return c;
+}
+
+/* Just like string_extract, but doesn't hack backslashes or any of
+   that other stuff.  Obeys CTLESC quoting.  Used to do splitting on $IFS. */
+static char *
+string_extract_verbatim (string, sindex, charlist)
+     char *string;
+     int *sindex;
+     char *charlist;
+{
+  register int i = *sindex;
+  size_t slen;
+#if defined (HANDLE_MULTIBYTE)
+  size_t clen;
+  wchar_t *wcharlist;
+#endif
+  int c;
+  char *temp;
+  DECLARE_MBSTATE;
+
+  if (charlist[0] == '\'' && charlist[1] == '\0')
+    {
+      temp = string_extract_single_quoted (string, sindex);
+      --*sindex;       /* leave *sindex at separator character */
+      return temp;
+    }
+
+  slen = strlen (string + *sindex) + *sindex;
+  i = *sindex;
+#if defined (HANDLE_MULTIBYTE)
+  clen = strlen (charlist);
+  wcharlist = 0;
+#endif
+  while (c = string[i])
+    {
+#if defined (HANDLE_MULTIBYTE)
+      size_t mblength;
+#endif
+      if (c == CTLESC)
+       {
+         i += 2;
+         continue;
+       }
+
+#if defined (HANDLE_MULTIBYTE)
+      mblength = MBLEN (string + i, slen - 1);
+      if (mblength > 1)
+       {
+         wchar_t wc;
+         mblength = mbtowc (&wc, string + i, slen - i);
+         if (MB_INVALIDCH (mblength))
+           {
+             if (MEMBER (c, charlist))
+               break;
+           }
+         else
+           {
+             if (wcharlist == 0)
+               {
+                 size_t len;
+                 len = mbstowcs (wcharlist, charlist, 0);
+                 if (len == -1)
+                   len = 0;
+                 wcharlist = xmalloc ((sizeof (wchar_t) * len) + 1);
+                 mbstowcs (wcharlist, charlist, len);
+               }
+
+             if (wcschr (wcharlist, wc))
+               break;
+           }
+       }
+      else             
+#endif
+      if (MEMBER (c, charlist))
+       break;
+
+      ADVANCE_CHAR (string, slen, i);
+    }
+
+#if defined (HANDLE_MULTIBYTE)
+  FREE (wcharlist);
+#endif
+
+  temp = substring (string, *sindex, i);
+  *sindex = i;
+
+  return (temp);
+}
+
+/* Extract the $( construct in STRING, and return a new string.
+   Start extracting at (SINDEX) as if we had just seen "$(".
+   Make (SINDEX) get the position of the matching ")". ) */
+char *
+extract_command_subst (string, sindex)
+     char *string;
+     int *sindex;
+{
+  return (extract_delimited_string (string, sindex, "$(", "(", ")", 0)); /*)*/
+}
+
+/* Extract the $[ construct in STRING, and return a new string. (])
+   Start extracting at (SINDEX) as if we had just seen "$[".
+   Make (SINDEX) get the position of the matching "]". */
+char *
+extract_arithmetic_subst (string, sindex)
+     char *string;
+     int *sindex;
+{
+  return (extract_delimited_string (string, sindex, "$[", "[", "]", 0)); /*]*/
+}
+
+#if defined (PROCESS_SUBSTITUTION)
+/* Extract the <( or >( construct in STRING, and return a new string.
+   Start extracting at (SINDEX) as if we had just seen "<(".
+   Make (SINDEX) get the position of the matching ")". */ /*))*/
+char *
+extract_process_subst (string, starter, sindex)
+     char *string;
+     char *starter;
+     int *sindex;
+{
+  return (extract_delimited_string (string, sindex, starter, "(", ")", 0));
+}
+#endif /* PROCESS_SUBSTITUTION */
+
+#if defined (ARRAY_VARS)
+char *
+extract_array_assignment_list (string, sindex)
+     char *string;
+     int *sindex;
+{
+  return (extract_delimited_string (string, sindex, "(", (char *)NULL, ")", 0));
+}
+#endif
+
+/* Extract and create a new string from the contents of STRING, a
+   character string delimited with OPENER and CLOSER.  SINDEX is
+   the address of an int describing the current offset in STRING;
+   it should point to just after the first OPENER found.  On exit,
+   SINDEX gets the position of the last character of the matching CLOSER.
+   If OPENER is more than a single character, ALT_OPENER, if non-null,
+   contains a character string that can also match CLOSER and thus
+   needs to be skipped. */
+static char *
+extract_delimited_string (string, sindex, opener, alt_opener, closer, flags)
+     char *string;
+     int *sindex;
+     char *opener, *alt_opener, *closer;
+     int flags;
+{
+  int i, c, si;
+  size_t slen;
+  char *t, *result;
+  int pass_character, nesting_level;
+  int len_closer, len_opener, len_alt_opener;
+  DECLARE_MBSTATE;
+
+  slen = strlen (string + *sindex) + *sindex;
+  len_opener = STRLEN (opener);
+  len_alt_opener = STRLEN (alt_opener);
+  len_closer = STRLEN (closer);
+
+  pass_character = 0;
+
+  nesting_level = 1;
+  i = *sindex;
+
+  while (nesting_level)
+    {
+      c = string[i];
+
+      if (c == 0)
+       break;
+
+      if (pass_character)      /* previous char was backslash */
+       {
+         pass_character = 0;
+         ADVANCE_CHAR (string, slen, i);
+         continue;
+       }
+
+      if (c == CTLESC || c == '\\')
+       {
+         pass_character++;
+         i++;
+         continue;
+       }
+
+      /* Process a nested OPENER. */
+      if (STREQN (string + i, opener, len_opener))
+       {
+         si = i + len_opener;
+         t = extract_delimited_string (string, &si, opener, alt_opener, closer, flags|EX_NOALLOC);
+         i = si + 1;
+         continue;
+       }
+
+      /* Process a nested ALT_OPENER */
+      if (len_alt_opener && STREQN (string + i, alt_opener, len_alt_opener))
+       {
+         si = i + len_alt_opener;
+         t = extract_delimited_string (string, &si, alt_opener, alt_opener, closer, flags|EX_NOALLOC);
+         i = si + 1;
+         continue;
+       }
+
+      /* If the current substring terminates the delimited string, decrement
+        the nesting level. */
+      if (STREQN (string + i, closer, len_closer))
+       {
+         i += len_closer - 1;  /* move to last byte of the closer */
+         nesting_level--;
+         if (nesting_level == 0)
+           break;
+       }
+
+      /* Pass old-style command substitution through verbatim. */
+      if (c == '`')
+       {
+         si = i + 1;
+         t = string_extract (string, &si, "`", flags|EX_NOALLOC);
+         i = si + 1;
+         continue;
+       }
+
+      /* Pass single-quoted and double-quoted strings through verbatim. */
+      if (c == '\'' || c == '"')
+       {
+         si = i + 1;
+         i = (c == '\'') ? skip_single_quoted (string, slen, si)
+                         : skip_double_quoted (string, slen, si);
+         continue;
+       }
+
+      /* move past this character, which was not special. */
+      ADVANCE_CHAR (string, slen, i);
+    }
+
+  if (c == 0 && nesting_level)
+    {
+      if (no_longjmp_on_fatal_error == 0)
+       {
+         report_error (_("bad substitution: no closing `%s' in %s"), closer, string);
+         last_command_exit_value = EXECUTION_FAILURE;
+         exp_jump_to_top_level (DISCARD);
+       }
+      else
+       {
+         *sindex = i;
+         return (char *)NULL;
+       }
+    }
+
+  si = i - *sindex - len_closer + 1;
+  if (flags & EX_NOALLOC)
+    result = (char *)NULL;
+  else    
+    {
+      result = (char *)xmalloc (1 + si);
+      strncpy (result, string + *sindex, si);
+      result[si] = '\0';
+    }
+  *sindex = i;
+
+  return (result);
+}
+
+/* Extract a parameter expansion expression within ${ and } from STRING.
+   Obey the Posix.2 rules for finding the ending `}': count braces while
+   skipping over enclosed quoted strings and command substitutions.
+   SINDEX is the address of an int describing the current offset in STRING;
+   it should point to just after the first `{' found.  On exit, SINDEX
+   gets the position of the matching `}'.  QUOTED is non-zero if this
+   occurs inside double quotes. */
+/* XXX -- this is very similar to extract_delimited_string -- XXX */
+static char *
+extract_dollar_brace_string (string, sindex, quoted, flags)
+     char *string;
+     int *sindex, quoted, flags;
+{
+  register int i, c;
+  size_t slen;
+  int pass_character, nesting_level, si;
+  char *result, *t;
+  DECLARE_MBSTATE;
+
+  pass_character = 0;
+  nesting_level = 1;
+  slen = strlen (string + *sindex) + *sindex;
+
+  i = *sindex;
+  while (c = string[i])
+    {
+      if (pass_character)
+       {
+         pass_character = 0;
+         ADVANCE_CHAR (string, slen, i);
+         continue;
+       }
+
+      /* CTLESCs and backslashes quote the next character. */
+      if (c == CTLESC || c == '\\')
+       {
+         pass_character++;
+         i++;
+         continue;
+       }
+
+      if (string[i] == '$' && string[i+1] == LBRACE)
+       {
+         nesting_level++;
+         i += 2;
+         continue;
+       }
+
+      if (c == RBRACE)
+       {
+         nesting_level--;
+         if (nesting_level == 0)
+           break;
+         i++;
+         continue;
+       }
+
+      /* Pass the contents of old-style command substitutions through
+        verbatim. */
+      if (c == '`')
+       {
+         si = i + 1;
+         t = string_extract (string, &si, "`", flags|EX_NOALLOC);
+         i = si + 1;
+         continue;
+       }
+
+      /* Pass the contents of new-style command substitutions and
+        arithmetic substitutions through verbatim. */
+      if (string[i] == '$' && string[i+1] == LPAREN)
+       {
+         si = i + 2;
+         t = extract_delimited_string (string, &si, "$(", "(", ")", flags|EX_NOALLOC); /*)*/
+         i = si + 1;
+         continue;
+       }
+
+      /* Pass the contents of single-quoted and double-quoted strings
+        through verbatim. */
+      if (c == '\'' || c == '"')
+       {
+         si = i + 1;
+         i = (c == '\'') ? skip_single_quoted (string, slen, si)
+                         : skip_double_quoted (string, slen, si);
+         /* skip_XXX_quoted leaves index one past close quote */
+         continue;
+       }
+
+      /* move past this character, which was not special. */
+      ADVANCE_CHAR (string, slen, i);
+    }
+
+  if (c == 0 && nesting_level)
+    {
+      if (no_longjmp_on_fatal_error == 0)
+       {                       /* { */
+         report_error ("bad substitution: no closing `%s' in %s", "}", string);
+         last_command_exit_value = EXECUTION_FAILURE;
+         exp_jump_to_top_level (DISCARD);
+       }
+      else
+       {
+         *sindex = i;
+         return ((char *)NULL);
+       }
+    }
+
+  result = (flags & EX_NOALLOC) ? (char *)NULL : substring (string, *sindex, i);
+  *sindex = i;
+
+  return (result);
+}
+
+/* Remove backslashes which are quoting backquotes from STRING.  Modifies
+   STRING, and returns a pointer to it. */
+char *
+de_backslash (string)
+     char *string;
+{
+  register size_t slen;
+  register int i, j, prev_i;
+  DECLARE_MBSTATE;
+
+  slen = strlen (string);
+  i = j = 0;
+
+  /* Loop copying string[i] to string[j], i >= j. */
+  while (i < slen)
+    {
+      if (string[i] == '\\' && (string[i + 1] == '`' || string[i + 1] == '\\' ||
+                             string[i + 1] == '$'))
+       i++;
+      prev_i = i;
+      ADVANCE_CHAR (string, slen, i);
+      if (j < prev_i)
+       do string[j++] = string[prev_i++]; while (prev_i < i);
+      else
+       j = i;
+    }
+  string[j] = '\0';
+
+  return (string);
+}
+
+#if 0
+/*UNUSED*/
+/* Replace instances of \! in a string with !. */
+void
+unquote_bang (string)
+     char *string;
+{
+  register int i, j;
+  register char *temp;
+
+  temp = (char *)xmalloc (1 + strlen (string));
+
+  for (i = 0, j = 0; (temp[j] = string[i]); i++, j++)
+    {
+      if (string[i] == '\\' && string[i + 1] == '!')
+       {
+         temp[j] = '!';
+         i++;
+       }
+    }
+  strcpy (string, temp);
+  free (temp);
+}
+#endif
+
+#if defined (READLINE)
+/* Return 1 if the portion of STRING ending at EINDEX is quoted (there is
+   an unclosed quoted string), or if the character at EINDEX is quoted
+   by a backslash. NO_LONGJMP_ON_FATAL_ERROR is used to flag that the various
+   single and double-quoted string parsing functions should not return an
+   error if there are unclosed quotes or braces.  The characters that this
+   recognizes need to be the same as the contents of
+   rl_completer_quote_characters. */
+
+#define CQ_RETURN(x) do { no_longjmp_on_fatal_error = 0; return (x); } while (0)
+
+int
+char_is_quoted (string, eindex)
+     char *string;
+     int eindex;
+{
+  int i, pass_next, c;
+  size_t slen;
+  DECLARE_MBSTATE;
+
+  slen = strlen (string);
+  no_longjmp_on_fatal_error = 1;
+  i = pass_next = 0;
+  while (i <= eindex)
+    {
+      c = string[i];
+
+      if (pass_next)
+       {
+         pass_next = 0;
+         if (i >= eindex)      /* XXX was if (i >= eindex - 1) */
+           CQ_RETURN(1);
+         ADVANCE_CHAR (string, slen, i);
+         continue;
+       }
+      else if (c == '\\')
+       {
+         pass_next = 1;
+         i++;
+         continue;
+       }
+      else if (c == '\'' || c == '"')
+       {
+         i = (c == '\'') ? skip_single_quoted (string, slen, ++i)
+                         : skip_double_quoted (string, slen, ++i);
+         if (i > eindex)
+           CQ_RETURN(1);
+         /* no increment, the skip_xxx functions go one past end */
+       }
+      else
+       ADVANCE_CHAR (string, slen, i);
+    }
+
+  CQ_RETURN(0);
+}
+
+int
+unclosed_pair (string, eindex, openstr)
+     char *string;
+     int eindex;
+     char *openstr;
+{
+  int i, pass_next, openc, olen;
+  size_t slen;
+  DECLARE_MBSTATE;
+
+  slen = strlen (string);
+  olen = strlen (openstr);
+  i = pass_next = openc = 0;
+  while (i <= eindex)
+    {
+      if (pass_next)
+       {
+         pass_next = 0;
+         if (i >= eindex)      /* XXX was if (i >= eindex - 1) */
+           return 0;
+         ADVANCE_CHAR (string, slen, i);
+         continue;
+       }
+      else if (string[i] == '\\')
+       {
+         pass_next = 1;
+         i++;
+         continue;
+       }
+      else if (STREQN (string + i, openstr, olen))
+       {
+         openc = 1 - openc;
+         i += olen;
+       }
+      else if (string[i] == '\'' || string[i] == '"')
+       {
+         i = (string[i] == '\'') ? skip_single_quoted (string, slen, i)
+                                 : skip_double_quoted (string, slen, i);
+         if (i > eindex)
+           return 0;
+       }
+      else
+       ADVANCE_CHAR (string, slen, i);
+    }
+  return (openc);
+}
+
+/* Skip characters in STRING until we find a character in DELIMS, and return
+   the index of that character.  START is the index into string at which we
+   begin.  This is similar in spirit to strpbrk, but it returns an index into
+   STRING and takes a starting index.  This little piece of code knows quite
+   a lot of shell syntax.  It's very similar to skip_double_quoted and other
+   functions of that ilk. */
+int
+skip_to_delim (string, start, delims)
+     char *string;
+     int start;
+     char *delims;
+{
+  int i, pass_next, backq, si, c;
+  size_t slen;
+  char *temp;
+  DECLARE_MBSTATE;
+
+  slen = strlen (string + start) + start;
+  no_longjmp_on_fatal_error = 1;
+  i = start;
+  pass_next = backq = 0;
+  while (c = string[i])
+    {
+      if (pass_next)
+       {
+         pass_next = 0;
+         if (c == 0)
+           CQ_RETURN(i);
+         ADVANCE_CHAR (string, slen, i);
+         continue;
+       }
+      else if (c == '\\')
+       {
+         pass_next = 1;
+         i++;
+         continue;
+       }
+      else if (backq)
+       {
+         if (c == '`')
+           backq = 0;
+         ADVANCE_CHAR (string, slen, i);
+         continue;
+       }
+      else if (c == '`')
+       {
+         backq = 1;
+         i++;
+         continue;
+       }
+      else if (c == '\'' || c == '"')
+       {
+         i = (c == '\'') ? skip_single_quoted (string, slen, ++i)
+                         : skip_double_quoted (string, slen, ++i);
+         /* no increment, the skip functions increment past the closing quote. */
+       }
+      else if (c == '$' && (string[i+1] == LPAREN || string[i+1] == LBRACE))
+       {
+         si = i + 2;
+         if (string[si] == '\0')
+           CQ_RETURN(si);
+
+         if (string[i+1] == LPAREN)
+           temp = extract_delimited_string (string, &si, "$(", "(", ")", EX_NOALLOC); /* ) */
+         else
+           temp = extract_dollar_brace_string (string, &si, 0, EX_NOALLOC);
+         i = si;
+         if (string[i] == '\0')        /* don't increment i past EOS in loop */
+           break;
+         i++;
+         continue;
+       }
+      else if (member (c, delims))
+       break;
+      else
+       ADVANCE_CHAR (string, slen, i);
+    }
+
+  CQ_RETURN(i);
+}
+
+/* Split STRING (length SLEN) at DELIMS, and return a WORD_LIST with the
+   individual words.  If DELIMS is NULL, the current value of $IFS is used
+   to split the string, and the function follows the shell field splitting
+   rules.  SENTINEL is an index to look for.  NWP, if non-NULL,
+   gets the number of words in the returned list.  CWP, if non-NULL, gets
+   the index of the word containing SENTINEL.  Non-whitespace chars in
+   DELIMS delimit separate fields. */
+WORD_LIST *
+split_at_delims (string, slen, delims, sentinel, nwp, cwp)
+     char *string;
+     int slen;
+     char *delims;
+     int sentinel;
+     int *nwp, *cwp;
+{
+  int ts, te, i, nw, cw, ifs_split;
+  char *token, *d, *d2;
+  WORD_LIST *ret, *tl;
+
+  if (string == 0 || *string == '\0')
+    {
+      if (nwp)
+       *nwp = 0;
+      if (cwp)
+       *cwp = 0;       
+      return ((WORD_LIST *)NULL);
+    }
+
+  d = (delims == 0) ? ifs_value : delims;
+  ifs_split = delims == 0;
+
+  /* Make d2 the non-whitespace characters in delims */
+  d2 = 0;
+  if (delims)
+    {
+      size_t slength;
+#if defined (HANDLE_MULTIBYTE)
+      size_t mblength = 1;
+#endif
+      DECLARE_MBSTATE;
+
+      slength = strlen (delims);
+      d2 = (char *)xmalloc (slength + 1);
+      i = ts = 0;
+      while (delims[i])
+       {
+#if defined (HANDLE_MULTIBYTE)
+         mbstate_t state_bak = state;
+         mblength = MBRLEN (delims + i, slength, &state);
+         if (MB_INVALIDCH (mblength))
+           state = state_bak;
+         else if (mblength > 1)
+           {
+             memcpy (d2 + ts, delims + i, mblength);
+             ts += mblength;
+             i += mblength;
+             slength -= mblength;
+             continue;
+           }
+#endif
+         if (whitespace (delims[i]) == 0)
+           d2[ts++] = delims[i];
+
+         i++;
+         slength--;
+       }
+      d2[ts] = '\0';
+    }
+
+  ret = (WORD_LIST *)NULL;
+
+  /* Remove sequences of whitspace characters at the start of the string, as
+     long as those characters are delimiters. */
+  for (i = 0; member (string[i], d) && spctabnl (string[i]); i++)
+    ;
+  if (string[i] == '\0')
+    return (ret);
+
+  ts = i;
+  nw = 0;
+  cw = -1;
+  while (1)
+    {
+      te = skip_to_delim (string, ts, d);
+
+      /* If we have a non-whitespace delimiter character, use it to make a
+        separate field.  This is just about what $IFS splitting does and
+        is closer to the behavior of the shell parser. */
+      if (ts == te && d2 && member (string[ts], d2))
+       {
+         te = ts + 1;
+         /* If we're using IFS splitting, the non-whitespace delimiter char
+            and any additional IFS whitespace delimits a field. */
+         if (ifs_split)
+           while (member (string[te], d) && spctabnl (string[te]))
+             te++;
+         else
+           while (member (string[te], d2))
+             te++;
+       }
+
+      token = substring (string, ts, te);
+
+      ret = add_string_to_list (token, ret);
+      free (token);
+      nw++;
+
+      if (sentinel >= ts && sentinel <= te)
+       cw = nw;
+
+      /* If the cursor is at whitespace just before word start, set the
+        sentinel word to the current word. */
+      if (cwp && cw == -1 && sentinel == ts-1)
+       cw = nw;
+
+      /* If the cursor is at whitespace between two words, make a new, empty
+        word, add it before (well, after, since the list is in reverse order)
+        the word we just added, and set the current word to that one. */
+      if (cwp && cw == -1 && sentinel < ts)
+       {
+         tl = make_word_list (make_word (""), ret->next);
+         ret->next = tl;
+         cw = nw;
+         nw++;
+       }
+
+      if (string[te] == 0)
+       break;
+
+      i = te;
+      while (member (string[i], d) && (ifs_split || spctabnl(string[i])))
+       i++;
+
+      if (string[i])
+       ts = i;
+      else
+       break;
+    }
+
+  /* Special case for SENTINEL at the end of STRING.  If we haven't found
+     the word containing SENTINEL yet, and the index we're looking for is at
+     the end of STRING, add an additional null argument and set the current
+     word pointer to that. */
+  if (cwp && cw == -1 && sentinel >= slen)
+    {
+      if (whitespace (string[sentinel - 1]))
+       {
+         token = "";
+         ret = add_string_to_list (token, ret);
+         nw++;
+       }
+      cw = nw;
+    }
+
+  if (nwp)
+    *nwp = nw;
+  if (cwp)
+    *cwp = cw;
+
+  return (REVERSE_LIST (ret, WORD_LIST *));
+}
+#endif /* READLINE */
+
+#if 0
+/* UNUSED */
+/* Extract the name of the variable to bind to from the assignment string. */
+char *
+assignment_name (string)
+     char *string;
+{
+  int offset;
+  char *temp;
+
+  offset = assignment (string, 0);
+  if (offset == 0)
+    return (char *)NULL;
+  temp = substring (string, 0, offset);
+  return (temp);
+}
+#endif
+
+/* **************************************************************** */
+/*                                                                 */
+/*     Functions to convert strings to WORD_LISTs and vice versa    */
+/*                                                                 */
+/* **************************************************************** */
+
+/* Return a single string of all the words in LIST.  SEP is the separator
+   to put between individual elements of LIST in the output string. */
+char *
+string_list_internal (list, sep)
+     WORD_LIST *list;
+     char *sep;
+{
+  register WORD_LIST *t;
+  char *result, *r;
+  int word_len, sep_len, result_size;
+
+  if (list == 0)
+    return ((char *)NULL);
+
+  /* Short-circuit quickly if we don't need to separate anything. */
+  if (list->next == 0)
+    return (savestring (list->word->word));
+
+  /* This is nearly always called with either sep[0] == 0 or sep[1] == 0. */
+  sep_len = STRLEN (sep);
+  result_size = 0;
+
+  for (t = list; t; t = t->next)
+    {
+      if (t != list)
+       result_size += sep_len;
+      result_size += strlen (t->word->word);
+    }
+
+  r = result = (char *)xmalloc (result_size + 1);
+
+  for (t = list; t; t = t->next)
+    {
+      if (t != list && sep_len)
+       {
+         if (sep_len > 1)
+           {
+             FASTCOPY (sep, r, sep_len);
+             r += sep_len;
+           }
+         else
+           *r++ = sep[0];
+       }
+
+      word_len = strlen (t->word->word);
+      FASTCOPY (t->word->word, r, word_len);
+      r += word_len;
+    }
+
+  *r = '\0';
+  return (result);
+}
+
+/* Return a single string of all the words present in LIST, separating
+   each word with a space. */
+char *
+string_list (list)
+     WORD_LIST *list;
+{
+  return (string_list_internal (list, " "));
+}
+
+/* Return a single string of all the words present in LIST, obeying the
+   quoting rules for "$*", to wit: (P1003.2, draft 11, 3.5.2) "If the
+   expansion [of $*] appears within a double quoted string, it expands
+   to a single field with the value of each parameter separated by the
+   first character of the IFS variable, or by a <space> if IFS is unset." */
+char *
+string_list_dollar_star (list)
+     WORD_LIST *list;
+{
+#if defined (HANDLE_MULTIBYTE)
+  char sep[MB_CUR_MAX + 1];
+#else
+  char sep[2];
+#endif
+
+
+#if defined (HANDLE_MULTIBYTE)
+  if (ifs_firstc_len == 1)
+    {
+      sep[0] = ifs_firstc[0];
+      sep[1] = '\0';
+    }
+  else
+    memcpy (sep, ifs_firstc, ifs_firstc_len);
+#else
+  sep[0] = ifs_firstc;
+  sep[1] = '\0';
+#endif
+
+  return (string_list_internal (list, sep));
+}
+
+/* Turn $@ into a string.  If (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))
+   is non-zero, the $@ appears within double quotes, and we should quote
+   the list before converting it into a string.  If IFS is unset, and the
+   word is not quoted, we just need to quote CTLESC and CTLNUL characters
+   in the words in the list, because the default value of $IFS is
+   <space><tab><newline>, IFS characters in the words in the list should
+   also be split.  If IFS is null, and the word is not quoted, we need
+   to quote the words in the list to preserve the positional parameters
+   exactly. */
+char *
+string_list_dollar_at (list, quoted)
+     WORD_LIST *list;
+     int quoted;
+{
+  char *ifs;
+#if defined (HANDLE_MULTIBYTE)
+  char sep[MB_CUR_MAX + 1];
+#else
+  char sep[2];
+#endif
+  WORD_LIST *tlist;
+
+  /* XXX this could just be ifs = ifs_value; */
+  ifs = ifs_var ? value_cell (ifs_var) : (char *)0;
+
+#if defined (HANDLE_MULTIBYTE)
+  if (ifs && *ifs)
+    {
+      size_t mblength;
+      mblength = MBLEN (ifs, strnlen (ifs, MB_CUR_MAX));
+      if (MB_INVALIDCH (mblength) || mblength == 1)
+       {
+         sep[0] = *ifs;
+         sep[1] = '\0';
+       }
+      else if (mblength == 0)
+       sep[0] = '\0';
+      else
+       {
+         memcpy (sep, ifs, mblength);
+         sep[mblength] = '\0';
+       }
+    }
+  else
+    {
+      sep[0] = ' ';
+      sep[1] = '\0';
+    }
+#else
+  sep[0] = (ifs == 0 || *ifs == 0) ? ' ' : *ifs;
+  sep[1] = '\0';
+#endif
+
+  tlist = ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || (ifs && *ifs == 0))
+               ? quote_list (list)
+               : list_quote_escapes (list);
+  return (string_list_internal (tlist, sep));
+}
+
+/* Return the list of words present in STRING.  Separate the string into
+   words at any of the characters found in SEPARATORS.  If QUOTED is
+   non-zero then word in the list will have its quoted flag set, otherwise
+   the quoted flag is left as make_word () deemed fit.
+
+   This obeys the P1003.2 word splitting semantics.  If `separators' is
+   exactly <space><tab><newline>, then the splitting algorithm is that of
+   the Bourne shell, which treats any sequence of characters from `separators'
+   as a delimiter.  If IFS is unset, which results in `separators' being set
+   to "", no splitting occurs.  If separators has some other value, the
+   following rules are applied (`IFS white space' means zero or more
+   occurrences of <space>, <tab>, or <newline>, as long as those characters
+   are in `separators'):
+
+       1) IFS white space is ignored at the start and the end of the
+          string.
+       2) Each occurrence of a character in `separators' that is not
+          IFS white space, along with any adjacent occurrences of
+          IFS white space delimits a field.
+       3) Any nonzero-length sequence of IFS white space delimits a field.
+   */
+
+/* BEWARE!  list_string strips null arguments.  Don't call it twice and
+   expect to have "" preserved! */
+
+/* This performs word splitting and quoted null character removal on
+   STRING. */
+#define issep(c) \
+       (((separators)[0]) ? ((separators)[1] ? isifs(c) \
+                                             : (c) == (separators)[0]) \
+                          : 0)
+
+WORD_LIST *
+list_string (string, separators, quoted)
+     register char *string, *separators;
+     int quoted;
+{
+  WORD_LIST *result;
+  WORD_DESC *t;
+  char *current_word, *s;
+  int sindex, sh_style_split, whitesep;
+  size_t slen;
+
+  if (!string || !*string)
+    return ((WORD_LIST *)NULL);
+
+  sh_style_split = separators && separators[0] == ' ' &&
+                                separators[1] == '\t' &&
+                                separators[2] == '\n' &&
+                                separators[3] == '\0';
+
+  slen = 0;
+  /* Remove sequences of whitespace at the beginning of STRING, as
+     long as those characters appear in IFS.  Do not do this if
+     STRING is quoted or if there are no separator characters. */
+  if (!quoted || !separators || !*separators)
+    {
+      for (s = string; *s && spctabnl (*s) && issep (*s); s++);
+
+      if (!*s)
+       return ((WORD_LIST *)NULL);
+
+      string = s;
+    }
+
+  /* OK, now STRING points to a word that does not begin with white space.
+     The splitting algorithm is:
+       extract a word, stopping at a separator
+       skip sequences of spc, tab, or nl as long as they are separators
+     This obeys the field splitting rules in Posix.2. */
+  for (result = (WORD_LIST *)NULL, sindex = 0; string[sindex]; )
+    {
+      current_word = string_extract_verbatim (string, &sindex, separators);
+      if (current_word == 0)
+       break;
+
+      /* If we have a quoted empty string, add a quoted null argument.  We
+        want to preserve the quoted null character iff this is a quoted
+        empty string; otherwise the quoted null characters are removed
+        below. */
+      if (QUOTED_NULL (current_word))
+       {
+         t = make_bare_word ("");
+         t->flags |= W_QUOTED;
+         free (t->word);
+         t->word = make_quoted_char ('\0');
+         result = make_word_list (t, result);
+       }
+      else if (current_word[0] != '\0')
+       {
+         /* If we have something, then add it regardless.  However,
+            perform quoted null character removal on the current word. */
+         remove_quoted_nulls (current_word);
+         result = add_string_to_list (current_word, result);
+         if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))
+           result->word->flags |= W_QUOTED;
+       }
+
+      /* If we're not doing sequences of separators in the traditional
+        Bourne shell style, then add a quoted null argument. */
+      else if (!sh_style_split && !spctabnl (string[sindex]))
+       {
+         t = make_bare_word ("");
+         t->flags |= W_QUOTED;
+         free (t->word);
+         t->word = make_quoted_char ('\0');
+         result = make_word_list (t, result);
+       }
+
+      free (current_word);
+
+      /* Note whether or not the separator is IFS whitespace, used later. */
+      whitesep = string[sindex] && spctabnl (string[sindex]);
+
+      /* Move past the current separator character. */
+      if (string[sindex])
+       {
+         DECLARE_MBSTATE;
+         if (slen == 0)
+           slen = strlen (string);
+         ADVANCE_CHAR (string, slen, sindex);
+       }
+
+      /* Now skip sequences of space, tab, or newline characters if they are
+        in the list of separators. */
+      while (string[sindex] && spctabnl (string[sindex]) && issep (string[sindex]))
+       sindex++;
+
+      /* If the first separator was IFS whitespace and the current character
+        is a non-whitespace IFS character, it should be part of the current
+        field delimiter, not a separate delimiter that would result in an
+        empty field.  Look at POSIX.2, 3.6.5, (3)(b). */
+      if (string[sindex] && whitesep && issep (string[sindex]) && !spctabnl (string[sindex]))
+       sindex++;
+    }
+  return (REVERSE_LIST (result, WORD_LIST *));
+}
+
+/* Parse a single word from STRING, using SEPARATORS to separate fields.
+   ENDPTR is set to the first character after the word.  This is used by
+   the `read' builtin.  This is never called with SEPARATORS != $IFS;
+   it should be simplified.
+
+   XXX - this function is very similar to list_string; they should be
+        combined - XXX */
+char *
+get_word_from_string (stringp, separators, endptr)
+     char **stringp, *separators, **endptr;
+{
+  register char *s;
+  char *current_word;
+  int sindex, sh_style_split, whitesep;
+  size_t slen;
+
+  if (!stringp || !*stringp || !**stringp)
+    return ((char *)NULL);
+
+  s = *stringp;
+
+  sh_style_split = separators && separators[0] == ' ' &&
+                                separators[1] == '\t' &&
+                                separators[2] == '\n' &&
+                                separators[3] == '\0';
+
+  slen = 0;
+
+  /* Remove sequences of whitespace at the beginning of STRING, as
+     long as those characters appear in IFS. */
+  if (sh_style_split || !separators || !*separators)
+    {
+      for (; *s && spctabnl (*s) && isifs (*s); s++);
+
+      /* If the string is nothing but whitespace, update it and return. */
+      if (!*s)
+       {
+         *stringp = s;
+         if (endptr)
+           *endptr = s;
+         return ((char *)NULL);
+       }
+    }
+
+  /* OK, S points to a word that does not begin with white space.
+     Now extract a word, stopping at a separator, save a pointer to
+     the first character after the word, then skip sequences of spc,
+     tab, or nl as long as they are separators.
+
+     This obeys the field splitting rules in Posix.2. */
+  sindex = 0;
+  current_word = string_extract_verbatim (s, &sindex, separators);
+
+  /* Set ENDPTR to the first character after the end of the word. */
+  if (endptr)
+    *endptr = s + sindex;
+
+  /* Note whether or not the separator is IFS whitespace, used later. */
+  whitesep = s[sindex] && spctabnl (s[sindex]);
+
+  /* Move past the current separator character. */
+  if (s[sindex])
+    {
+      DECLARE_MBSTATE;
+      if (slen == 0)
+       slen = strlen (s);
+      ADVANCE_CHAR (s, slen, sindex);
+    }
+
+  /* Now skip sequences of space, tab, or newline characters if they are
+     in the list of separators. */
+  while (s[sindex] && spctabnl (s[sindex]) && isifs (s[sindex]))
+    sindex++;
+
+  /* If the first separator was IFS whitespace and the current character is
+     a non-whitespace IFS character, it should be part of the current field
+     delimiter, not a separate delimiter that would result in an empty field.
+     Look at POSIX.2, 3.6.5, (3)(b). */
+  if (s[sindex] && whitesep && isifs (s[sindex]) && !spctabnl (s[sindex]))
+    sindex++;
+
+  /* Update STRING to point to the next field. */
+  *stringp = s + sindex;
+  return (current_word);
+}
+
+/* Remove IFS white space at the end of STRING.  Start at the end
+   of the string and walk backwards until the beginning of the string
+   or we find a character that's not IFS white space and not CTLESC.
+   Only let CTLESC escape a white space character if SAW_ESCAPE is
+   non-zero.  */
+char *
+strip_trailing_ifs_whitespace (string, separators, saw_escape)
+     char *string, *separators;
+     int saw_escape;
+{
+  char *s;
+
+  s = string + STRLEN (string) - 1;
+  while (s > string && ((spctabnl (*s) && isifs (*s)) ||
+                       (saw_escape && *s == CTLESC && spctabnl (s[1]))))
+    s--;
+  *++s = '\0';
+  return string;
+}
+
+#if 0
+/* UNUSED */
+/* Split STRING into words at whitespace.  Obeys shell-style quoting with
+   backslashes, single and double quotes. */
+WORD_LIST *
+list_string_with_quotes (string)
+     char *string;
+{
+  WORD_LIST *list;
+  char *token, *s;
+  size_t s_len;
+  int c, i, tokstart, len;
+
+  for (s = string; s && *s && spctabnl (*s); s++)
+    ;
+  if (s == 0 || *s == 0)
+    return ((WORD_LIST *)NULL);
+
+  s_len = strlen (s);
+  tokstart = i = 0;
+  list = (WORD_LIST *)NULL;
+  while (1)
+    {
+      c = s[i];
+      if (c == '\\')
+       {
+         i++;
+         if (s[i])
+           i++;
+       }
+      else if (c == '\'')
+       i = skip_single_quoted (s, s_len, ++i);
+      else if (c == '"')
+       i = skip_double_quoted (s, s_len, ++i);
+      else if (c == 0 || spctabnl (c))
+       {
+         /* We have found the end of a token.  Make a word out of it and
+            add it to the word list. */
+         token = substring (s, tokstart, i);
+         list = add_string_to_list (token, list);
+         free (token);
+         while (spctabnl (s[i]))
+           i++;
+         if (s[i])
+           tokstart = i;
+         else
+           break;
+       }
+      else
+       i++;    /* normal character */
+    }
+  return (REVERSE_LIST (list, WORD_LIST *));
+}
+#endif
+
+/********************************************************/
+/*                                                     */
+/*     Functions to perform assignment statements      */
+/*                                                     */
+/********************************************************/
+
+/* Given STRING, an assignment string, get the value of the right side
+   of the `=', and bind it to the left side.  If EXPAND is true, then
+   perform parameter expansion, command substitution, and arithmetic
+   expansion on the right-hand side.  Perform tilde expansion in any
+   case.  Do not perform word splitting on the result of expansion. */
+static int
+do_assignment_internal (string, expand)
+     const char *string;
+     int expand;
+{
+  int offset;
+  char *name, *value;
+  SHELL_VAR *entry;
+#if defined (ARRAY_VARS)
+  char *t;
+  int ni;
+#endif
+  int assign_list = 0;
+
+  offset = assignment (string, 0);
+  name = savestring (string);
+  value = (char *)NULL;
+
+  if (name[offset] == '=')
+    {
+      char *temp;
+
+      name[offset] = 0;
+      temp = name + offset + 1;
+
+#if defined (ARRAY_VARS)
+      if (expand && temp[0] == LPAREN && xstrchr (temp, RPAREN))
+       {
+         assign_list = ni = 1;
+         value = extract_delimited_string (temp, &ni, "(", (char *)NULL, ")", 0);
+       }
+      else
+#endif
+
+      /* Perform tilde expansion. */
+      if (expand && temp[0])
+       {
+#if 0
+         temp = (xstrchr (temp, '~') && unquoted_member ('~', temp))
+                       ? bash_tilde_expand (temp, 2)
+                       : savestring (temp);
+#endif
+
+         value = expand_string_if_necessary (temp, 0, expand_string_assignment);
+#if 0
+         free (temp);
+#endif
+       }
+      else
+       value = savestring (temp);
+    }
+
+  if (value == 0)
+    {
+      value = (char *)xmalloc (1);
+      value[0] = '\0';
+    }
+
+  if (echo_command_at_execute)
+     xtrace_print_assignment (name, value, assign_list, 1);
+
+#define ASSIGN_RETURN(r)       do { FREE (value); free (name); return (r); } while (0)
+
+#if defined (ARRAY_VARS)
+  if (t = xstrchr (name, '[')) /*]*/
+    {
+      if (assign_list)
+       {
+         report_error (_("%s: cannot assign list to array member"), name);
+         ASSIGN_RETURN (0);
+       }
+      entry = assign_array_element (name, value);
+      if (entry == 0)
+       ASSIGN_RETURN (0);
+    }
+  else if (assign_list)
+    entry = assign_array_from_string (name, value);
+  else
+#endif /* ARRAY_VARS */
+  entry = bind_variable (name, value);
+
+  stupidly_hack_special_variables (name);
+
+  if (entry)
+    VUNSETATTR (entry, att_invisible);
+
+  /* Return 1 if the assignment seems to have been performed correctly. */
+  ASSIGN_RETURN (entry ? ((readonly_p (entry) == 0) && noassign_p (entry) == 0) : 0);
+}
+
+/* Perform the assignment statement in STRING, and expand the
+   right side by doing command and parameter expansion. */
+int
+do_assignment (string)
+     const char *string;
+{
+  return do_assignment_internal (string, 1);
+}
+
+/* Given STRING, an assignment string, get the value of the right side
+   of the `=', and bind it to the left side.  Do not do command and
+   parameter substitution on the right hand side. */
+int
+do_assignment_no_expand (string)
+     const char *string;
+{
+  return do_assignment_internal (string, 0);
+}
+
+/***************************************************
+ *                                                *
+ *  Functions to manage the positional parameters  *
+ *                                                *
+ ***************************************************/
+
+/* Return the word list that corresponds to `$*'. */
+WORD_LIST *
+list_rest_of_args ()
+{
+  register WORD_LIST *list, *args;
+  int i;
+
+  /* Break out of the loop as soon as one of the dollar variables is null. */
+  for (i = 1, list = (WORD_LIST *)NULL; i < 10 && dollar_vars[i]; i++)
+    list = make_word_list (make_bare_word (dollar_vars[i]), list);
+
+  for (args = rest_of_args; args; args = args->next)
+    list = make_word_list (make_bare_word (args->word->word), list);
+
+  return (REVERSE_LIST (list, WORD_LIST *));
+}
+
+int
+number_of_args ()
+{
+  register WORD_LIST *list;
+  int n;
+
+  for (n = 0; n < 9 && dollar_vars[n+1]; n++)
+    ;
+  for (list = rest_of_args; list; list = list->next)
+    n++;
+  return n;
+}
+
+/* Return the value of a positional parameter.  This handles values > 10. */
+char *
+get_dollar_var_value (ind)
+     intmax_t ind;
+{
+  char *temp;
+  WORD_LIST *p;
+
+  if (ind < 10)
+    temp = dollar_vars[ind] ? savestring (dollar_vars[ind]) : (char *)NULL;
+  else /* We want something like ${11} */
+    {
+      ind -= 10;
+      for (p = rest_of_args; p && ind--; p = p->next)
+       ;
+      temp = p ? savestring (p->word->word) : (char *)NULL;
+    }
+  return (temp);
+}
+
+/* Make a single large string out of the dollar digit variables,
+   and the rest_of_args.  If DOLLAR_STAR is 1, then obey the special
+   case of "$*" with respect to IFS. */
+char *
+string_rest_of_args (dollar_star)
+     int dollar_star;
+{
+  register WORD_LIST *list;
+  char *string;
+
+  list = list_rest_of_args ();
+  string = dollar_star ? string_list_dollar_star (list) : string_list (list);
+  dispose_words (list);
+  return (string);
+}
+
+/* Return a string containing the positional parameters from START to
+   END, inclusive.  If STRING[0] == '*', we obey the rules for $*,
+   which only makes a difference if QUOTED is non-zero.  If QUOTED includes
+   Q_HERE_DOCUMENT or Q_DOUBLE_QUOTES, this returns a quoted list, otherwise
+   no quoting chars are added. */
+static char *
+pos_params (string, start, end, quoted)
+     char *string;
+     int start, end, quoted;
+{
+  WORD_LIST *save, *params, *h, *t;
+  char *ret;
+  int i;
+
+  /* see if we can short-circuit.  if start == end, we want 0 parameters. */
+  if (start == end)
+    return ((char *)NULL);
+
+  save = params = list_rest_of_args ();
+  if (save == 0)
+    return ((char *)NULL);
+
+  for (i = 1; params && i < start; i++)
+    params = params->next;
+  if (params == 0)
+    return ((char *)NULL);
+  for (h = t = params; params && i < end; i++)
+    {
+      t = params;
+      params = params->next;
+    }
+
+  t->next = (WORD_LIST *)NULL;
+  if (string[0] == '*')
+#if 0
+    ret = (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ? string_list_dollar_star (quote_list (h)) : string_list (h);
+#else
+    {
+      if (quoted & Q_DOUBLE_QUOTES)
+       ret = string_list_dollar_star (quote_list (h));
+      else if (quoted & Q_HERE_DOCUMENT)
+       ret = string_list (quote_list (h));
+      else
+       ret = string_list (h);
+    }
+#endif
+  else
+    ret = string_list ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ? quote_list (h) : h);
+  if (t != params)
+    t->next = params;
+
+  dispose_words (save);
+  return (ret);
+}
+
+/******************************************************************/
+/*                                                               */
+/*     Functions to expand strings to strings or WORD_LISTs      */
+/*                                                               */
+/******************************************************************/
+
+#if defined (PROCESS_SUBSTITUTION)
+#define EXP_CHAR(s) (s == '$' || s == '`' || s == '<' || s == '>' || s == CTLESC || s == '~')
+#else
+#define EXP_CHAR(s) (s == '$' || s == '`' || s == CTLESC || s == '~')
+#endif
+
+/* If there are any characters in STRING that require full expansion,
+   then call FUNC to expand STRING; otherwise just perform quote
+   removal if necessary.  This returns a new string. */
+static char *
+expand_string_if_necessary (string, quoted, func)
+     char *string;
+     int quoted;
+     EXPFUNC *func;
+{
+  WORD_LIST *list;
+  size_t slen;
+  int i, saw_quote;
+  char *ret;
+  DECLARE_MBSTATE;
+
+  slen = strlen (string);
+  i = saw_quote = 0;
+  while (string[i])
+    {
+      if (EXP_CHAR (string[i]))
+       break;
+      else if (string[i] == '\'' || string[i] == '\\' || string[i] == '"')
+       saw_quote = 1;
+      ADVANCE_CHAR (string, slen, i);
+    }
+
+  if (string[i])
+    {
+      list = (*func) (string, quoted);
+      if (list)
+       {
+         ret = string_list (list);
+         dispose_words (list);
+       }
+      else
+       ret = (char *)NULL;
+    }
+  else if (saw_quote && ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) == 0))
+    ret = string_quote_removal (string, quoted);
+  else
+    ret = savestring (string);
+
+  return ret;
+}
+
+static inline char *
+expand_string_to_string_internal (string, quoted, func)
+     char *string;
+     int quoted;
+     EXPFUNC *func;
+{
+  WORD_LIST *list;
+  char *ret;
+
+  if (string == 0 || *string == '\0')
+    return ((char *)NULL);
+
+  list = (*func) (string, quoted);
+  if (list)
+    {
+      ret = string_list (list);
+      dispose_words (list);
+    }
+  else
+    ret = (char *)NULL;
+
+  return (ret);
+}
+
+char *
+expand_string_to_string (string, quoted)
+     char *string;
+     int quoted;
+{
+  return (expand_string_to_string_internal (string, quoted, expand_string));
+}
+
+char *
+expand_string_unsplit_to_string (string, quoted)
+     char *string;
+     int quoted;
+{
+  return (expand_string_to_string_internal (string, quoted, expand_string_unsplit));
+}
+
+#if defined (COND_COMMAND)
+/* Just remove backslashes in STRING.  Returns a new string. */
+char *
+remove_backslashes (string)
+     char *string;
+{
+  char *r, *ret, *s;
+
+  r = ret = (char *)xmalloc (strlen (string) + 1);
+  for (s = string; s && *s; )
+    {
+      if (*s == '\\')
+       s++;
+      if (*s == 0)
+       break;
+      *r++ = *s++;
+    }
+  *r = '\0';
+  return ret;
+}
+
+/* This needs better error handling. */
+/* Expand W for use as an argument to a unary or binary operator in a
+   [[...]] expression.  If SPECIAL is nonzero, this is the rhs argument
+   to the != or == operator, and should be treated as a pattern.  In
+   this case, we quote the string specially for the globbing code.  The
+   caller is responsible for removing the backslashes if the unquoted
+   words is needed later. */   
+char *
+cond_expand_word (w, special)
+     WORD_DESC *w;
+     int special;
+{
+  char *r, *p;
+  WORD_LIST *l;
+
+  if (w->word == 0 || w->word[0] == '\0')
+    return ((char *)NULL);
+
+#if 0
+  if (xstrchr (w->word, '~') && unquoted_member ('~', w->word))
+    {
+      p = bash_tilde_expand (w->word, 0);
+      free (w->word);
+      w->word = p;
+    }
+#endif
+
+  l = call_expand_word_internal (w, 0, 0, (int *)0, (int *)0);
+  if (l)
+    {
+      if (special == 0)
+       {
+         dequote_list (l);
+         r = string_list (l);
+       }
+      else
+       {
+         p = string_list (l);
+         r = quote_string_for_globbing (p, QGLOB_CVTNULL);
+         free (p);
+       }
+      dispose_words (l);
+    }
+  else
+    r = (char *)NULL;
+
+  return r;
+}
+#endif
+
+/* Call expand_word_internal to expand W and handle error returns.
+   A convenience function for functions that don't want to handle
+   any errors or free any memory before aborting. */
+static WORD_LIST *
+call_expand_word_internal (w, q, i, c, e)
+     WORD_DESC *w;
+     int q, i, *c, *e;
+{
+  WORD_LIST *result;
+
+  result = expand_word_internal (w, q, i, c, e);
+  if (result == &expand_word_error || result == &expand_word_fatal)
+    {
+      /* By convention, each time this error is returned, w->word has
+        already been freed (it sometimes may not be in the fatal case,
+        but that doesn't result in a memory leak because we're going
+        to exit in most cases). */
+      w->word = (char *)NULL;
+      last_command_exit_value = EXECUTION_FAILURE;
+      exp_jump_to_top_level ((result == &expand_word_error) ? DISCARD : FORCE_EOF);
+      /* NOTREACHED */
+    }
+  else
+    return (result);
+}
+
+/* Perform parameter expansion, command substitution, and arithmetic
+   expansion on STRING, as if it were a word.  Leave the result quoted. */
+static WORD_LIST *
+expand_string_internal (string, quoted)
+     char *string;
+     int quoted;
+{
+  WORD_DESC td;
+  WORD_LIST *tresult;
+
+  if (string == 0 || *string == 0)
+    return ((WORD_LIST *)NULL);
+
+  td.flags = 0;
+  td.word = savestring (string);
+
+  tresult = call_expand_word_internal (&td, quoted, 0, (int *)NULL, (int *)NULL);
+
+  FREE (td.word);
+  return (tresult);
+}
+
+/* Expand STRING by performing parameter expansion, command substitution,
+   and arithmetic expansion.  Dequote the resulting WORD_LIST before
+   returning it, but do not perform word splitting.  The call to
+   remove_quoted_nulls () is in here because word splitting normally
+   takes care of quote removal. */
+WORD_LIST *
+expand_string_unsplit (string, quoted)
+     char *string;
+     int quoted;
+{
+  WORD_LIST *value;
+
+  if (string == 0 || *string == '\0')
+    return ((WORD_LIST *)NULL);
+
+  expand_no_split_dollar_star = 1;
+  value = expand_string_internal (string, quoted);
+  expand_no_split_dollar_star = 0;
+
+  if (value)
+    {
+      if (value->word)
+       remove_quoted_nulls (value->word->word);
+      dequote_list (value);
+    }
+  return (value);
+}
+
+/* Expand the rhs of an assignment statement */
+WORD_LIST *
+expand_string_assignment (string, quoted)
+     char *string;
+     int quoted;
+{
+  WORD_DESC td;
+  WORD_LIST *value;
+
+  if (string == 0 || *string == '\0')
+    return ((WORD_LIST *)NULL);
+
+  expand_no_split_dollar_star = 1;
+
+  td.flags = W_ASSIGNRHS;
+  td.word = savestring (string);
+  value = call_expand_word_internal (&td, quoted, 0, (int *)NULL, (int *)NULL);
+  FREE (td.word);
+
+  expand_no_split_dollar_star = 0;
+
+  if (value)
+    {
+      if (value->word)
+       remove_quoted_nulls (value->word->word);
+      dequote_list (value);
+    }
+  return (value);
+}
+
+
+/* Expand one of the PS? prompt strings. This is a sort of combination of
+   expand_string_unsplit and expand_string_internal, but returns the
+   passed string when an error occurs.  Might want to trap other calls
+   to jump_to_top_level here so we don't endlessly loop. */
+WORD_LIST *
+expand_prompt_string (string, quoted)
+     char *string;
+     int quoted;
+{
+  WORD_LIST *value;
+  WORD_DESC td;
+
+  if (string == 0 || *string == 0)
+    return ((WORD_LIST *)NULL);
+
+  td.flags = 0;
+  td.word = savestring (string);
+
+  no_longjmp_on_fatal_error = 1;
+  value = expand_word_internal (&td, quoted, 0, (int *)NULL, (int *)NULL);
+  no_longjmp_on_fatal_error = 0;
+
+  if (value == &expand_word_error || value == &expand_word_fatal)
+    {
+      value = make_word_list (make_bare_word (string), (WORD_LIST *)NULL);
+      return value;
+    }
+  FREE (td.word);
+  if (value)
+    {
+      if (value->word)
+       remove_quoted_nulls (value->word->word);
+      dequote_list (value);
+    }
+  return (value);
+}
+
+/* Expand STRING just as if you were expanding a word, but do not dequote
+   the resultant WORD_LIST.  This is called only from within this file,
+   and is used to correctly preserve quoted characters when expanding
+   things like ${1+"$@"}.  This does parameter expansion, command
+   substitution, arithmetic expansion, and word splitting. */
+static WORD_LIST *
+expand_string_leave_quoted (string, quoted)
+     char *string;
+     int quoted;
+{
+  WORD_LIST *tlist;
+  WORD_LIST *tresult;
+
+  if (string == 0 || *string == '\0')
+    return ((WORD_LIST *)NULL);
+
+  tlist = expand_string_internal (string, quoted);
+
+  if (tlist)
+    {
+      tresult = word_list_split (tlist);
+      dispose_words (tlist);
+      return (tresult);
+    }
+  return ((WORD_LIST *)NULL);
+}
+
+/* This does not perform word splitting or dequote the WORD_LIST
+   it returns. */
+static WORD_LIST *
+expand_string_for_rhs (string, quoted, dollar_at_p, has_dollar_at)
+     char *string;
+     int quoted, *dollar_at_p, *has_dollar_at;
+{
+  WORD_DESC td;
+  WORD_LIST *tresult;
+
+  if (string == 0 || *string == '\0')
+    return (WORD_LIST *)NULL;
+
+  td.flags = 0;
+  td.word = string;
+  tresult = call_expand_word_internal (&td, quoted, 1, dollar_at_p, has_dollar_at);
+  return (tresult);
+}
+
+/* Expand STRING just as if you were expanding a word.  This also returns
+   a list of words.  Note that filename globbing is *NOT* done for word
+   or string expansion, just when the shell is expanding a command.  This
+   does parameter expansion, command substitution, arithmetic expansion,
+   and word splitting.  Dequote the resultant WORD_LIST before returning. */
+WORD_LIST *
+expand_string (string, quoted)
+     char *string;
+     int quoted;
+{
+  WORD_LIST *result;
+
+  if (string == 0 || *string == '\0')
+    return ((WORD_LIST *)NULL);
+
+  result = expand_string_leave_quoted (string, quoted);
+  return (result ? dequote_list (result) : result);
+}
+
+/***************************************************
+ *                                                *
+ *     Functions to handle quoting chars          *
+ *                                                *
+ ***************************************************/
+
+/* Conventions:
+
+     A string with s[0] == CTLNUL && s[1] == 0 is a quoted null string.
+     The parser passes CTLNUL as CTLESC CTLNUL. */
+
+/* Quote escape characters in string s, but no other characters.  This is
+   used to protect CTLESC and CTLNUL in variable values from the rest of
+   the word expansion process after the variable is expanded. */
+char *
+quote_escapes (string)
+     char *string;
+{
+  register char *s, *t;
+  size_t slen;
+  char *result, *send;
+  DECLARE_MBSTATE; 
+
+  slen = strlen (string);
+  send = string + slen;
+
+  t = result = (char *)xmalloc ((slen * 2) + 1);
+  s = string;
+
+  while (*s)
+    {
+      if (*s == CTLESC || *s == CTLNUL)
+       *t++ = CTLESC;
+      COPY_CHAR_P (t, s, send);
+    }
+  *t = '\0';
+  return (result);
+}
+
+static WORD_LIST *
+list_quote_escapes (list)
+     WORD_LIST *list;
+{
+  register WORD_LIST *w;
+  char *t;
+
+  for (w = list; w; w = w->next)
+    {
+      t = w->word->word;
+      w->word->word = quote_escapes (t);
+      free (t);
+    }
+  return list;
+}
+
+/* Inverse of quote_escapes; remove CTLESC protecting CTLESC or CTLNUL.
+
+   The parser passes us CTLESC as CTLESC CTLESC and CTLNUL as CTLESC CTLNUL.
+   This is necessary to make unquoted CTLESC and CTLNUL characters in the
+   data stream pass through properly.
+
+   We need to remove doubled CTLESC characters inside quoted strings before
+   quoting the entire string, so we do not double the number of CTLESC
+   characters.
+
+   Also used by parts of the pattern substitution code. */
+static char *
+dequote_escapes (string)
+     char *string;
+{
+  register char *s, *t;
+  size_t slen;
+  char *result, *send;
+  DECLARE_MBSTATE;
+
+  if (string == 0)
+    return string;
+
+  slen = strlen (string);
+  send = string + slen;
+
+  t = result = (char *)xmalloc (slen + 1);
+  s = string;
+
+  if (strchr (string, CTLESC) == 0)
+    return (strcpy (result, s));
+
+  while (*s)
+    {
+      if (*s == CTLESC && (s[1] == CTLESC || s[1] == CTLNUL))
+       {
+         s++;
+         if (*s == '\0')
+           break;
+       }
+      COPY_CHAR_P (t, s, send);
+    }
+  *t = '\0';
+  return result;
+}
+
+/* Return a new string with the quoted representation of character C. */
+static char *
+make_quoted_char (c)
+     int c;
+{
+  char *temp;
+
+  temp = (char *)xmalloc (3);
+  if (c == 0)
+    {
+      temp[0] = CTLNUL;
+      temp[1] = '\0';
+    }
+  else
+    {
+      temp[0] = CTLESC;
+      temp[1] = c;
+      temp[2] = '\0';
+    }
+  return (temp);
+}
+
+/* Quote STRING.  Return a new string. */
+char *
+quote_string (string)
+     char *string;
+{
+  register char *t;
+  size_t slen;
+  char *result, *send;
+
+  if (*string == 0)
+    {
+      result = (char *)xmalloc (2);
+      result[0] = CTLNUL;
+      result[1] = '\0';
+    }
+  else
+    {
+      DECLARE_MBSTATE;
+
+      slen = strlen (string);
+      send = string + slen;
+
+      result = (char *)xmalloc ((slen * 2) + 1);
+
+      for (t = result; string < send; )
+       {
+         *t++ = CTLESC;
+         COPY_CHAR_P (t, string, send);
+       }
+      *t = '\0';
+    }
+  return (result);
+}
+
+/* De-quoted quoted characters in STRING. */
+char *
+dequote_string (string)
+     char *string;
+{
+  register char *s, *t;
+  size_t slen;
+  char *result, *send;
+  DECLARE_MBSTATE;
+
+  slen = strlen (string);
+
+  t = result = (char *)xmalloc (slen + 1);
+
+  if (QUOTED_NULL (string))
+    {
+      result[0] = '\0';
+      return (result);
+    }
+
+  /* If no character in the string can be quoted, don't bother examining
+     each character.  Just return a copy of the string passed to us. */
+  if (strchr (string, CTLESC) == NULL)
+    return (strcpy (result, string));
+
+  send = string + slen;
+  s = string;
+  while (*s)
+    {
+      if (*s == CTLESC)
+       {
+         s++;
+         if (*s == '\0')
+           break;
+       }
+      COPY_CHAR_P (t, s, send);
+    }
+
+  *t = '\0';
+  return (result);
+}
+
+/* Quote the entire WORD_LIST list. */
+static WORD_LIST *
+quote_list (list)
+     WORD_LIST *list;
+{
+  register WORD_LIST *w;
+  char *t;
+
+  for (w = list; w; w = w->next)
+    {
+      t = w->word->word;
+      w->word->word = quote_string (t);
+      free (t);
+      w->word->flags |= W_QUOTED;
+    }
+  return list;
+}
+
+static WORD_LIST *
+dequote_list (list)
+     WORD_LIST *list;
+{
+  register char *s;
+  register WORD_LIST *tlist;
+
+  for (tlist = list; tlist; tlist = tlist->next)
+    {
+      s = dequote_string (tlist->word->word);
+      free (tlist->word->word);
+      tlist->word->word = s;
+    }
+  return list;
+}
+
+/* Remove CTLESC protecting a CTLESC or CTLNUL in place.  Return the passed
+   string. */
+static char *
+remove_quoted_escapes (string)
+     char *string;
+{
+  char *t;
+
+  if (string)
+    {
+      t = dequote_escapes (string);
+      strcpy (string, t);
+      free (t);
+    }
+
+  return (string);
+}
+
+/* Perform quoted null character removal on STRING.  We don't allow any
+   quoted null characters in the middle or at the ends of strings because
+   of how expand_word_internal works.  remove_quoted_nulls () turns
+   STRING into an empty string iff it only consists of a quoted null,
+   and removes all unquoted CTLNUL characters. */
+static char *
+remove_quoted_nulls (string)
+     char *string;
+{
+  register size_t slen;
+  register int i, j, prev_i;
+  DECLARE_MBSTATE;
+
+  if (strchr (string, CTLNUL) == 0)            /* XXX */
+    return string;                             /* XXX */
+
+  slen = strlen (string);
+  i = j = 0;
+
+  while (i < slen)
+    {
+      if (string[i] == CTLESC)
+       {
+         /* Old code had j++, but we cannot assume that i == j at this
+            point -- what if a CTLNUL has already been removed from the
+            string?  We don't want to drop the CTLESC or recopy characters
+            that we've already copied down. */
+         i++; string[j++] = CTLESC;
+         if (i == slen)
+           break;
+       }
+      else if (string[i] == CTLNUL)
+       i++;
+
+      prev_i = i;
+      ADVANCE_CHAR (string, slen, i);
+      if (j < prev_i)
+       {
+         do string[j++] = string[prev_i++]; while (prev_i < i);
+       }
+      else
+       j = i;
+    }
+  string[j] = '\0';
+
+  return (string);
+}
+
+/* Perform quoted null character removal on each element of LIST.
+   This modifies LIST. */
+void
+word_list_remove_quoted_nulls (list)
+     WORD_LIST *list;
+{
+  register WORD_LIST *t;
+
+  for (t = list; t; t = t->next)
+    remove_quoted_nulls (t->word->word);
+}
+
+/* **************************************************************** */
+/*                                                                 */
+/*        Functions for Matching and Removing Patterns             */
+/*                                                                 */
+/* **************************************************************** */
+
+#if defined (HANDLE_MULTIBYTE)
+#if 0 /* Currently unused */
+static unsigned char *
+mb_getcharlens (string, len)
+     char *string;
+     int len;
+{
+  int i, offset, last;
+  unsigned char *ret;
+  char *p;
+  DECLARE_MBSTATE;
+
+  i = offset = 0;
+  last = 0;
+  ret = (unsigned char *)xmalloc (len);
+  memset (ret, 0, len);
+  while (string[last])
+    {
+      ADVANCE_CHAR (string, len, offset);
+      ret[last] = offset - last;
+      last = offset;
+    }
+  return ret;
+}
+#endif
+#endif
+
+/* Remove the portion of PARAM matched by PATTERN according to OP, where OP
+   can have one of 4 values:
+       RP_LONG_LEFT    remove longest matching portion at start of PARAM
+       RP_SHORT_LEFT   remove shortest matching portion at start of PARAM
+       RP_LONG_RIGHT   remove longest matching portion at end of PARAM
+       RP_SHORT_RIGHT  remove shortest matching portion at end of PARAM
+*/
+
+#define RP_LONG_LEFT   1
+#define RP_SHORT_LEFT  2
+#define RP_LONG_RIGHT  3
+#define RP_SHORT_RIGHT 4
+
+static char *
+remove_upattern (param, pattern, op)
+     char *param, *pattern;
+     int op;
+{
+  register int len;
+  register char *end;
+  register char *p, *ret, c;
+
+  len = STRLEN (param);
+  end = param + len;
+
+  switch (op)
+    {
+      case RP_LONG_LEFT:       /* remove longest match at start */
+       for (p = end; p >= param; p--)
+         {
+           c = *p; *p = '\0';
+           if (strmatch (pattern, param, FNMATCH_EXTFLAG) != FNM_NOMATCH)
+             {
+               *p = c;
+               return (savestring (p));
+             }
+           *p = c;
+
+         }
+       break;
+
+      case RP_SHORT_LEFT:      /* remove shortest match at start */
+       for (p = param; p <= end; p++)
+         {
+           c = *p; *p = '\0';
+           if (strmatch (pattern, param, FNMATCH_EXTFLAG) != FNM_NOMATCH)
+             {
+               *p = c;
+               return (savestring (p));
+             }
+           *p = c;
+         }
+       break;
+
+      case RP_LONG_RIGHT:      /* remove longest match at end */
+       for (p = param; p <= end; p++)
+         {
+           if (strmatch (pattern, p, FNMATCH_EXTFLAG) != FNM_NOMATCH)
+             {
+               c = *p; *p = '\0';
+               ret = savestring (param);
+               *p = c;
+               return (ret);
+             }
+         }
+       break;
+
+      case RP_SHORT_RIGHT:     /* remove shortest match at end */
+       for (p = end; p >= param; p--)
+         {
+           if (strmatch (pattern, p, FNMATCH_EXTFLAG) != FNM_NOMATCH)
+             {
+               c = *p; *p = '\0';
+               ret = savestring (param);
+               *p = c;
+               return (ret);
+             }
+         }
+       break;
+    }
+
+  return (savestring (param)); /* no match, return original string */
+}
+
+#if defined (HANDLE_MULTIBYTE)
+
+#if !defined (HAVE_WCSDUP)
+static wchar_t *
+wcsdup (ws)
+     wchar_t *ws;
+{
+  wchar_t *ret;
+  size_t len;
+
+  len = wcslen (ws);
+  ret = xmalloc ((len + 1) * sizeof (wchar_t));
+  if (ret == 0)
+    return ret;
+  return (wcscpy (ret, ws));
+}
+#endif /* !HAVE_WCSDUP */
+
+static wchar_t *
+remove_wpattern (wparam, wstrlen, wpattern, op)
+     wchar_t *wparam;
+     size_t wstrlen;
+     wchar_t *wpattern;
+     int op;
+{
+  wchar_t wc;
+  int n, n1;
+  wchar_t *ret;
+
+  switch (op)
+    {
+      case RP_LONG_LEFT:       /* remove longest match at start */
+        for (n = wstrlen; n >= 0; n--)
+         {
+           wc = wparam[n]; wparam[n] = L'\0';
+           if (wcsmatch (wpattern, wparam, FNMATCH_EXTFLAG) != FNM_NOMATCH)
+             {
+               wparam[n] = wc;
+               return (wcsdup (wparam + n));
+             }
+           wparam[n] = wc;
+         }
+       break;
+
+      case RP_SHORT_LEFT:      /* remove shortest match at start */
+       for (n = 0; n <= wstrlen; n++)
+         {
+           wc = wparam[n]; wparam[n] = L'\0';
+           if (wcsmatch (wpattern, wparam, FNMATCH_EXTFLAG) != FNM_NOMATCH)
+             {
+               wparam[n] = wc;
+               return (wcsdup (wparam + n));
+             }
+           wparam[n] = wc;
+         }
+       break;
+
+      case RP_LONG_RIGHT:      /* remove longest match at end */
+        for (n = 0; n <= wstrlen; n++)
+         {
+           if (wcsmatch (wpattern, wparam + n, FNMATCH_EXTFLAG) != FNM_NOMATCH)
+             {
+               wc = wparam[n]; wparam[n] = L'\0';
+               ret = wcsdup (wparam);
+               wparam[n] = wc;
+               return (ret);
+             }
+         }
+       break;
+
+      case RP_SHORT_RIGHT:     /* remove shortest match at end */
+       for (n = wstrlen; n >= 0; n--)
+         {
+           if (wcsmatch (wpattern, wparam + n, FNMATCH_EXTFLAG) != FNM_NOMATCH)
+             {
+               wc = wparam[n]; wparam[n] = L'\0';
+               ret = wcsdup (wparam);
+               wparam[n] = wc;
+               return (ret);
+             }
+         }
+       break;
+    }
+
+  return (wcsdup (wparam));    /* no match, return original string */
+}
+#endif /* HANDLE_MULTIBYTE */
+
+static char *
+remove_pattern (param, pattern, op)
+     char *param, *pattern;
+     int op;
+{
+  if (param == NULL)
+    return (param);
+  if (*param == '\0' || pattern == NULL || *pattern == '\0')   /* minor optimization */
+    return (savestring (param));
+
+#if defined (HANDLE_MULTIBYTE)
+  if (MB_CUR_MAX > 1)
+    {
+      wchar_t *ret, *oret;
+      size_t n;
+      wchar_t *wparam, *wpattern;
+      mbstate_t ps;
+      char *xret;
+
+      n = xdupmbstowcs (&wpattern, NULL, pattern);
+      if (n == (size_t)-1)
+       return (remove_upattern (param, pattern, op));
+      n = xdupmbstowcs (&wparam, NULL, param);
+      if (n == (size_t)-1)
+       {
+         free (wpattern);
+         return (remove_upattern (param, pattern, op));
+       }
+      oret = ret = remove_wpattern (wparam, n, wpattern, op);
+
+      free (wparam);
+      free (wpattern);
+
+      n = strlen (param);
+      xret = xmalloc (n + 1);
+      memset (&ps, '\0', sizeof (mbstate_t));
+      n = wcsrtombs (xret, (const wchar_t **)&ret, n, &ps);
+      xret[n] = '\0';          /* just to make sure */
+      free (oret);
+      return xret;      
+    }
+  else
+#endif
+    return (remove_upattern (param, pattern, op));
+}
+
+/* Return 1 of the first character of STRING could match the first
+   character of pattern PAT.  Used to avoid n2 calls to strmatch(). */
+static int
+match_pattern_char (pat, string)
+     char *pat, *string;
+{
+  char c;
+
+  if (*string == 0)
+    return (0);
+
+  switch (c = *pat++)
+    {
+    default:
+      return (*string == c);
+    case '\\':
+      return (*string == *pat);
+    case '?':
+      return (*pat == LPAREN ? 1 : (*string != '\0'));
+    case '*':
+      return (1);
+    case '+':
+    case '!':
+    case '@':
+      return (*pat == LPAREN ? 1 : (*string == c));
+    case '[':
+      return (*string != '\0');
+    }
+}
+
+/* Match PAT anywhere in STRING and return the match boundaries.
+   This returns 1 in case of a successful match, 0 otherwise.  SP
+   and EP are pointers into the string where the match begins and
+   ends, respectively.  MTYPE controls what kind of match is attempted.
+   MATCH_BEG and MATCH_END anchor the match at the beginning and end
+   of the string, respectively.  The longest match is returned. */
+static int
+match_upattern (string, pat, mtype, sp, ep)
+     char *string, *pat;
+     int mtype;
+     char **sp, **ep;
+{
+  int c, len;
+  register char *p, *p1;
+  char *end;
+
+  len = STRLEN (string);
+  end = string + len;
+
+  switch (mtype)
+    {
+    case MATCH_ANY:
+      for (p = string; p <= end; p++)
+       {
+         if (match_pattern_char (pat, p))
+           {
+             for (p1 = end; p1 >= p; p1--)
+               {
+                 c = *p1; *p1 = '\0';
+                 if (strmatch (pat, p, FNMATCH_EXTFLAG) == 0)
+                   {
+                     *p1 = c;
+                     *sp = p;
+                     *ep = p1;
+                     return 1;
+                   }
+                 *p1 = c;
+               }
+           }
+       }
+
+      return (0);
+
+    case MATCH_BEG:
+      if (match_pattern_char (pat, string) == 0)
+       return (0);
+
+      for (p = end; p >= string; p--)
+       {
+         c = *p; *p = '\0';
+         if (strmatch (pat, string, FNMATCH_EXTFLAG) == 0)
+           {
+             *p = c;
+             *sp = string;
+             *ep = p;
+             return 1;
+           }
+         *p = c;
+       }
+
+      return (0);
+
+    case MATCH_END:
+      for (p = string; p <= end; p++)
+       {
+         if (strmatch (pat, p, FNMATCH_EXTFLAG) == 0)
+           {
+             *sp = p;
+             *ep = end;
+             return 1;
+           }
+
+       }
+
+      return (0);
+    }
+
+  return (0);
+}
+
+#if defined (HANDLE_MULTIBYTE)
+/* Return 1 of the first character of WSTRING could match the first
+   character of pattern WPAT.  Wide character version. */
+static int
+match_pattern_wchar (wpat, wstring)
+     wchar_t *wpat, *wstring;
+{
+  wchar_t wc;
+
+  if (*wstring == 0)
+    return (0);
+
+  switch (wc = *wpat++)
+    {
+    default:
+      return (*wstring == wc);
+    case L'\\':
+      return (*wstring == *wpat);
+    case L'?':
+      return (*wpat == LPAREN ? 1 : (*wstring != L'\0'));
+    case L'*':
+      return (1);
+    case L'+':
+    case L'!':
+    case L'@':
+      return (*wpat == LPAREN ? 1 : (*wstring == wc));
+    case L'[':
+      return (*wstring != L'\0');
+    }
+}
+
+/* Match WPAT anywhere in WSTRING and return the match boundaries.
+   This returns 1 in case of a successful match, 0 otherwise.  Wide
+   character version. */
+static int
+match_wpattern (wstring, indices, wstrlen, wpat, mtype, sp, ep)
+     wchar_t *wstring;
+     char **indices;
+     size_t wstrlen;
+     wchar_t *wpat;
+     int mtype;
+     char **sp, **ep;
+{
+  wchar_t wc;
+  int len;
+#if 0
+  size_t n, n1;        /* Apple's gcc seems to miscompile this badly */
+#else
+  int n, n1;
+#endif
+
+  switch (mtype)
+    {
+    case MATCH_ANY:
+      for (n = 0; n <= wstrlen; n++)
+       {
+         if (match_pattern_wchar (wpat, wstring + n))
+           {
+             for (n1 = wstrlen; n1 >= n; n1--)
+               {
+                 wc = wstring[n1]; wstring[n1] = L'\0';
+                 if (wcsmatch (wpat, wstring + n, FNMATCH_EXTFLAG) == 0)
+                   {
+                     wstring[n1] = wc;
+                     *sp = indices[n];
+                     *ep = indices[n1];
+                     return 1;
+                   }
+                 wstring[n1] = wc;
+               }
+           }
+       }
+
+      return (0);
+
+    case MATCH_BEG:
+      if (match_pattern_wchar (wpat, wstring) == 0)
+       return (0);
+
+      for (n = wstrlen; n >= 0; n--)
+       {
+         wc = wstring[n]; wstring[n] = L'\0';
+         if (wcsmatch (wpat, wstring, FNMATCH_EXTFLAG) == 0)
+           {
+             wstring[n] = wc;
+             *sp = indices[0];
+             *ep = indices[n];
+             return 1;
+           }
+         wstring[n] = wc;
+       }
+
+      return (0);
+
+    case MATCH_END:
+      for (n = 0; n <= wstrlen; n++)
+       {
+         if (wcsmatch (wpat, wstring + n, FNMATCH_EXTFLAG) == 0)
+           {
+             *sp = indices[n];
+             *ep = indices[wstrlen];
+             return 1;
+           }
+       }
+
+      return (0);
+    }
+
+  return (0);
+}
+#endif /* HANDLE_MULTIBYTE */
+
+static int
+match_pattern (string, pat, mtype, sp, ep)
+     char *string, *pat;
+     int mtype;
+     char **sp, **ep;
+{
+#if defined (HANDLE_MULTIBYTE)
+  int ret;
+  size_t n;
+  wchar_t *wstring, *wpat;
+  char **indices;
+#endif
+
+  if (string == 0 || *string == 0 || pat == 0 || *pat == 0)
+    return (0);
+
+#if defined (HANDLE_MULTIBYTE)
+  if (MB_CUR_MAX > 1)
+    {
+      n = xdupmbstowcs (&wpat, NULL, pat);
+      if (n == (size_t)-1)
+       return (match_upattern (string, pat, mtype, sp, ep));
+      n = xdupmbstowcs (&wstring, &indices, string);
+      if (n == (size_t)-1)
+       {
+         free (wpat);
+         return (match_upattern (string, pat, mtype, sp, ep));
+       }
+      ret = match_wpattern (wstring, indices, n, wpat, mtype, sp, ep);
+
+      free (wpat);
+      free (wstring);
+      free (indices);
+
+      return (ret);
+    }
+  else
+#endif
+    return (match_upattern (string, pat, mtype, sp, ep));
+}
+
+static int
+getpatspec (c, value)
+     int c;
+     char *value;
+{
+  if (c == '#')
+    return ((*value == '#') ? RP_LONG_LEFT : RP_SHORT_LEFT);
+  else /* c == '%' */
+    return ((*value == '%') ? RP_LONG_RIGHT : RP_SHORT_RIGHT);
+}
+
+/* Posix.2 says that the WORD should be run through tilde expansion,
+   parameter expansion, command substitution and arithmetic expansion.
+   This leaves the result quoted, so quote_string_for_globbing () has
+   to be called to fix it up for strmatch ().  If QUOTED is non-zero,
+   it means that the entire expression was enclosed in double quotes.
+   This means that quoting characters in the pattern do not make any
+   special pattern characters quoted.  For example, the `*' in the
+   following retains its special meaning: "${foo#'*'}". */
+static char *
+getpattern (value, quoted, expandpat)
+     char *value;
+     int quoted, expandpat;
+{
+  char *pat, *tword;
+  WORD_LIST *l;
+  int i;
+
+#if 0
+  tword = xstrchr (value, '~') ? bash_tilde_expand (value, 0) : savestring (value);
+#else
+  tword = savestring (value);
+#endif
+  /* There is a problem here:  how to handle single or double quotes in the
+     pattern string when the whole expression is between double quotes?
+     POSIX.2 says that enclosing double quotes do not cause the pattern to
+     be quoted, but does that leave us a problem with @ and array[@] and their
+     expansions inside a pattern? */
+#if 0
+  if (expandpat && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && *tword)
+    {
+      i = 0;
+      pat = string_extract_double_quoted (tword, &i, 1);
+      free (tword);
+      tword = pat;
+    }
+#endif
+
+  /* expand_string_for_rhs () leaves WORD quoted and does not perform
+     word splitting. */
+  l = *tword ? expand_string_for_rhs (tword,
+                                     (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ? Q_PATQUOTE : quoted,
+                                     (int *)NULL, (int *)NULL)
+            : (WORD_LIST *)0;
+  free (tword);
+  pat = string_list (l);
+  dispose_words (l);
+  if (pat)
+    {
+      tword = quote_string_for_globbing (pat, QGLOB_CVTNULL);
+      free (pat);
+      pat = tword;
+    }
+  return (pat);
+}
+
+#if 0
+/* Handle removing a pattern from a string as a result of ${name%[%]value}
+   or ${name#[#]value}. */
+static char *
+variable_remove_pattern (value, pattern, patspec, quoted)
+     char *value, *pattern;
+     int patspec, quoted;
+{
+  char *tword;
+
+  tword = remove_pattern (value, pattern, patspec);
+
+  return (tword);
+}
+#endif
+
+static char *
+list_remove_pattern (list, pattern, patspec, itype, quoted)
+     WORD_LIST *list;
+     char *pattern;
+     int patspec, itype, quoted;
+{
+  WORD_LIST *new, *l;
+  WORD_DESC *w;
+  char *tword;
+
+  for (new = (WORD_LIST *)NULL, l = list; l; l = l->next)
+    {
+      tword = remove_pattern (l->word->word, pattern, patspec);
+      w = make_bare_word (tword);
+      FREE (tword);
+      new = make_word_list (w, new);
+    }
+
+  l = REVERSE_LIST (new, WORD_LIST *);
+  if (itype == '*')
+#if 0
+    tword = (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ? string_list_dollar_star (l) : string_list (l);
+#else
+    tword = (quoted & Q_DOUBLE_QUOTES) ? string_list_dollar_star (l) : string_list (l);
+#endif
+  else
+    tword = string_list ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ? quote_list (l) : l);
+
+  dispose_words (l);
+  return (tword);
+}
+
+static char *
+parameter_list_remove_pattern (itype, pattern, patspec, quoted)
+     int itype;
+     char *pattern;
+     int patspec, quoted;
+{
+  char *ret;
+  WORD_LIST *list;
+
+  list = list_rest_of_args ();
+  if (list == 0)
+    return ((char *)NULL);
+  ret = list_remove_pattern (list, pattern, patspec, itype, quoted);
+  dispose_words (list);
+  return (ret);
+}
+
+#if defined (ARRAY_VARS)
+static char *
+array_remove_pattern (a, pattern, patspec, varname, quoted)
+     ARRAY *a;
+     char *pattern;
+     int patspec;
+     char *varname;    /* so we can figure out how it's indexed */
+     int quoted;
+{
+  int itype;
+  char *ret;
+  WORD_LIST *list;
+  SHELL_VAR *v;
+
+  /* compute itype from varname here */
+  v = array_variable_part (varname, &ret, 0);
+  itype = ret[0];
+
+  list = array_to_word_list (a);
+  if (list == 0)
+   return ((char *)NULL);
+  ret = list_remove_pattern (list, pattern, patspec, itype, quoted);
+  dispose_words (list);
+
+  return ret;
+}
+#endif /* ARRAY_VARS */
+
+static char *
+parameter_brace_remove_pattern (varname, value, patstr, rtype, quoted)
+     char *varname, *value, *patstr;
+     int rtype, quoted;
+{
+  int vtype, patspec, starsub;
+  char *temp1, *val, *pattern;
+  SHELL_VAR *v;
+
+  if (value == 0)
+    return ((char *)NULL);
+
+  this_command_name = varname;
+
+  vtype = get_var_and_type (varname, value, quoted, &v, &val);
+  if (vtype == -1)
+    return ((char *)NULL);
+
+  starsub = vtype & VT_STARSUB;
+  vtype &= ~VT_STARSUB;
+
+  patspec = getpatspec (rtype, patstr);
+  if (patspec == RP_LONG_LEFT || patspec == RP_LONG_RIGHT)
+    patstr++;
+
+  pattern = getpattern (patstr, quoted, 1);
+
+  temp1 = (char *)NULL;                /* shut up gcc */
+  switch (vtype)
+    {
+    case VT_VARIABLE:
+    case VT_ARRAYMEMBER:
+      temp1 = remove_pattern (val, pattern, patspec);
+      if (vtype == VT_VARIABLE)
+       FREE (val);
+      if (temp1)
+       {
+         val = quote_escapes (temp1);
+         free (temp1);
+         temp1 = val;
+       }
+      break;
+#if defined (ARRAY_VARS)
+    case VT_ARRAYVAR:
+      temp1 = array_remove_pattern (array_cell (v), pattern, patspec, varname, quoted);
+      if (temp1 && ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) == 0))
+       {
+         val = quote_escapes (temp1);
+         free (temp1);
+         temp1 = val;
+       }
+      break;
+#endif
+    case VT_POSPARMS:
+      temp1 = parameter_list_remove_pattern (varname[0], pattern, patspec, quoted);
+      if (temp1 && ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) == 0))
+       {
+         val = quote_escapes (temp1);
+         free (temp1);
+         temp1 = val;
+       }
+      break;
+    }
+
+  FREE (pattern);
+  return temp1;
+}    
+
+/*******************************************
+ *                                        *
+ *     Functions to expand WORD_DESCs     *
+ *                                        *
+ *******************************************/
+
+/* Expand WORD, performing word splitting on the result.  This does
+   parameter expansion, command substitution, arithmetic expansion,
+   word splitting, and quote removal. */
+
+WORD_LIST *
+expand_word (word, quoted)
+     WORD_DESC *word;
+     int quoted;
+{
+  WORD_LIST *result, *tresult;
+
+  tresult = call_expand_word_internal (word, quoted, 0, (int *)NULL, (int *)NULL);
+  result = word_list_split (tresult);
+  dispose_words (tresult);
+  return (result ? dequote_list (result) : result);
+}
+
+/* Expand WORD, but do not perform word splitting on the result.  This
+   does parameter expansion, command substitution, arithmetic expansion,
+   and quote removal. */
+WORD_LIST *
+expand_word_unsplit (word, quoted)
+     WORD_DESC *word;
+     int quoted;
+{
+  WORD_LIST *result;
+
+  expand_no_split_dollar_star = 1;
+  result = call_expand_word_internal (word, quoted, 0, (int *)NULL, (int *)NULL);
+  expand_no_split_dollar_star = 0;
+
+  return (result ? dequote_list (result) : result);
+}
+
+/* Perform shell expansions on WORD, but do not perform word splitting or
+   quote removal on the result. */
+WORD_LIST *
+expand_word_leave_quoted (word, quoted)
+     WORD_DESC *word;
+     int quoted;
+{
+  return (call_expand_word_internal (word, quoted, 0, (int *)NULL, (int *)NULL));
+}
+
+#if defined (PROCESS_SUBSTITUTION)
+
+/*****************************************************************/
+/*                                                              */
+/*                 Hacking Process Substitution                 */
+/*                                                              */
+/*****************************************************************/
+
+#if !defined (HAVE_DEV_FD)
+/* Named pipes must be removed explicitly with `unlink'.  This keeps a list
+   of FIFOs the shell has open.  unlink_fifo_list will walk the list and
+   unlink all of them. add_fifo_list adds the name of an open FIFO to the
+   list.  NFIFO is a count of the number of FIFOs in the list. */
+#define FIFO_INCR 20
+
+struct temp_fifo {
+  char *file;
+  pid_t proc;
+};
+
+static struct temp_fifo *fifo_list = (struct temp_fifo *)NULL;
+static int nfifo;
+static int fifo_list_size;
+
+static void
+add_fifo_list (pathname)
+     char *pathname;
+{
+  if (nfifo >= fifo_list_size - 1)
+    {
+      fifo_list_size += FIFO_INCR;
+      fifo_list = (struct temp_fifo *)xrealloc (fifo_list,
+                               fifo_list_size * sizeof (struct temp_fifo));
+    }
+
+  fifo_list[nfifo].file = savestring (pathname);
+  nfifo++;
+}
+
+void
+unlink_fifo_list ()
+{
+  int saved, i, j;
+
+  if (nfifo == 0)
+    return;
+
+  for (i = saved = 0; i < nfifo; i++)
+    {
+      if ((fifo_list[i].proc == -1) || (kill(fifo_list[i].proc, 0) == -1))
+       {
+         unlink (fifo_list[i].file);
+         free (fifo_list[i].file);
+         fifo_list[i].file = (char *)NULL;
+         fifo_list[i].proc = -1;
+       }
+      else
+       saved++;
+    }
+
+  /* If we didn't remove some of the FIFOs, compact the list. */
+  if (saved)
+    {
+      for (i = j = 0; i < nfifo; i++)
+       if (fifo_list[i].file)
+         {
+           fifo_list[j].file = fifo_list[i].file;
+           fifo_list[j].proc = fifo_list[i].proc;
+           j++;
+         }
+      nfifo = j;
+    }
+  else
+    nfifo = 0;
+}
+
+static char *
+make_named_pipe ()
+{
+  char *tname;
+
+  tname = sh_mktmpname ("sh-np", MT_USERANDOM);
+  if (mkfifo (tname, 0600) < 0)
+    {
+      free (tname);
+      return ((char *)NULL);
+    }
+
+  add_fifo_list (tname);
+  return (tname);
+}
+
+#else /* HAVE_DEV_FD */
+
+/* DEV_FD_LIST is a bitmap of file descriptors attached to pipes the shell
+   has open to children.  NFDS is a count of the number of bits currently
+   set in DEV_FD_LIST.  TOTFDS is a count of the highest possible number
+   of open files. */
+static char *dev_fd_list = (char *)NULL;
+static int nfds;
+static int totfds;     /* The highest possible number of open files. */
+
+static void
+add_fifo_list (fd)
+     int fd;
+{
+  if (!dev_fd_list || fd >= totfds)
+    {
+      int ofds;
+
+      ofds = totfds;
+      totfds = getdtablesize ();
+      if (totfds < 0 || totfds > 256)
+       totfds = 256;
+      if (fd > totfds)
+       totfds = fd + 2;
+
+      dev_fd_list = (char *)xrealloc (dev_fd_list, totfds);
+      memset (dev_fd_list + ofds, '\0', totfds - ofds);
+    }
+
+  dev_fd_list[fd] = 1;
+  nfds++;
+}
+
+void
+unlink_fifo_list ()
+{
+  register int i;
+
+  if (nfds == 0)
+    return;
+
+  for (i = 0; nfds && i < totfds; i++)
+    if (dev_fd_list[i])
+      {
+       close (i);
+       dev_fd_list[i] = 0;
+       nfds--;
+      }
+
+  nfds = 0;
+}
+
+#if defined (NOTDEF)
+print_dev_fd_list ()
+{
+  register int i;
+
+  fprintf (stderr, "pid %ld: dev_fd_list:", (long)getpid ());
+  fflush (stderr);
+
+  for (i = 0; i < totfds; i++)
+    {
+      if (dev_fd_list[i])
+       fprintf (stderr, " %d", i);
+    }
+  fprintf (stderr, "\n");
+}
+#endif /* NOTDEF */
+
+static char *
+make_dev_fd_filename (fd)
+     int fd;
+{
+  char *ret, intbuf[INT_STRLEN_BOUND (int) + 1], *p;
+
+  ret = (char *)xmalloc (sizeof (DEV_FD_PREFIX) + 4);
+
+  strcpy (ret, DEV_FD_PREFIX);
+  p = inttostr (fd, intbuf, sizeof (intbuf));
+  strcpy (ret + sizeof (DEV_FD_PREFIX) - 1, p);
+
+  add_fifo_list (fd);
+  return (ret);
+}
+
+#endif /* HAVE_DEV_FD */
+
+/* Return a filename that will open a connection to the process defined by
+   executing STRING.  HAVE_DEV_FD, if defined, means open a pipe and return
+   a filename in /dev/fd corresponding to a descriptor that is one of the
+   ends of the pipe.  If not defined, we use named pipes on systems that have
+   them.  Systems without /dev/fd and named pipes are out of luck.
+
+   OPEN_FOR_READ_IN_CHILD, if 1, means open the named pipe for reading or
+   use the read end of the pipe and dup that file descriptor to fd 0 in
+   the child.  If OPEN_FOR_READ_IN_CHILD is 0, we open the named pipe for
+   writing or use the write end of the pipe in the child, and dup that
+   file descriptor to fd 1 in the child.  The parent does the opposite. */
+
+static char *
+process_substitute (string, open_for_read_in_child)
+     char *string;
+     int open_for_read_in_child;
+{
+  char *pathname;
+  int fd, result;
+  pid_t old_pid, pid;
+#if defined (HAVE_DEV_FD)
+  int parent_pipe_fd, child_pipe_fd;
+  int fildes[2];
+#endif /* HAVE_DEV_FD */
+#if defined (JOB_CONTROL)
+  pid_t old_pipeline_pgrp;
+#endif
+
+  if (!string || !*string || wordexp_only)
+    return ((char *)NULL);
+
+#if !defined (HAVE_DEV_FD)
+  pathname = make_named_pipe ();
+#else /* HAVE_DEV_FD */
+  if (pipe (fildes) < 0)
+    {
+      sys_error (_("cannot make pipe for process substitution"));
+      return ((char *)NULL);
+    }
+  /* If OPEN_FOR_READ_IN_CHILD == 1, we want to use the write end of
+     the pipe in the parent, otherwise the read end. */
+  parent_pipe_fd = fildes[open_for_read_in_child];
+  child_pipe_fd = fildes[1 - open_for_read_in_child];
+  /* Move the parent end of the pipe to some high file descriptor, to
+     avoid clashes with FDs used by the script. */
+  parent_pipe_fd = move_to_high_fd (parent_pipe_fd, 1, 64);
+
+  pathname = make_dev_fd_filename (parent_pipe_fd);
+#endif /* HAVE_DEV_FD */
+
+  if (!pathname)
+    {
+      sys_error (_("cannot make pipe for process substitution"));
+      return ((char *)NULL);
+    }
+
+  old_pid = last_made_pid;
+
+#if defined (JOB_CONTROL)
+  old_pipeline_pgrp = pipeline_pgrp;
+  pipeline_pgrp = shell_pgrp;
+  save_pipeline (1);
+#endif /* JOB_CONTROL */
+
+  pid = make_child ((char *)NULL, 1);
+  if (pid == 0)
+    {
+      reset_terminating_signals ();    /* XXX */
+      free_pushed_string_input ();
+      /* Cancel traps, in trap.c. */
+      restore_original_signals ();
+      setup_async_signals ();
+      subshell_environment |= SUBSHELL_COMSUB;
+    }
+
+#if defined (JOB_CONTROL)
+  set_sigchld_handler ();
+  stop_making_children ();
+  pipeline_pgrp = old_pipeline_pgrp;
+#endif /* JOB_CONTROL */
+
+  if (pid < 0)
+    {
+      sys_error (_("cannot make child for process substitution"));
+      free (pathname);
+#if defined (HAVE_DEV_FD)
+      close (parent_pipe_fd);
+      close (child_pipe_fd);
+#endif /* HAVE_DEV_FD */
+      return ((char *)NULL);
+    }
+
+  if (pid > 0)
+    {
+#if defined (JOB_CONTROL)
+      restore_pipeline (1);
+#endif
+
+#if !defined (HAVE_DEV_FD)
+      fifo_list[nfifo-1].proc = pid;
+#endif
+
+      last_made_pid = old_pid;
+
+#if defined (JOB_CONTROL) && defined (PGRP_PIPE)
+      close_pgrp_pipe ();
+#endif /* JOB_CONTROL && PGRP_PIPE */
+
+#if defined (HAVE_DEV_FD)
+      close (child_pipe_fd);
+#endif /* HAVE_DEV_FD */
+
+      return (pathname);
+    }
+
+  set_sigint_handler ();
+
+#if defined (JOB_CONTROL)
+  set_job_control (0);
+#endif /* JOB_CONTROL */
+
+#if !defined (HAVE_DEV_FD)
+  /* Open the named pipe in the child. */
+  fd = open (pathname, open_for_read_in_child ? O_RDONLY|O_NONBLOCK : O_WRONLY);
+  if (fd < 0)
+    {
+      /* Two separate strings for ease of translation. */
+      if (open_for_read_in_child)
+       sys_error (_("cannot open named pipe %s for reading"), pathname);
+      else
+       sys_error (_("cannot open named pipe %s for writing"), pathname);
+
+      exit (127);
+    }
+  if (open_for_read_in_child)
+    {
+      if (sh_unset_nodelay_mode (fd) < 0)
+       {
+         sys_error (_("cannout reset nodelay mode for fd %d"), fd);
+         exit (127);
+       }
+    }
+#else /* HAVE_DEV_FD */
+  fd = child_pipe_fd;
+#endif /* HAVE_DEV_FD */
+
+  if (dup2 (fd, open_for_read_in_child ? 0 : 1) < 0)
+    {
+      sys_error (_("cannot duplicate named pipe %s as fd %d"), pathname,
+       open_for_read_in_child ? 0 : 1);
+      exit (127);
+    }
+
+  if (fd != (open_for_read_in_child ? 0 : 1))
+    close (fd);
+
+  /* Need to close any files that this process has open to pipes inherited
+     from its parent. */
+  if (current_fds_to_close)
+    {
+      close_fd_bitmap (current_fds_to_close);
+      current_fds_to_close = (struct fd_bitmap *)NULL;
+    }
+
+#if defined (HAVE_DEV_FD)
+  /* Make sure we close the parent's end of the pipe and clear the slot
+     in the fd list so it is not closed later, if reallocated by, for
+     instance, pipe(2). */
+  close (parent_pipe_fd);
+  dev_fd_list[parent_pipe_fd] = 0;
+#endif /* HAVE_DEV_FD */
+
+  result = parse_and_execute (string, "process substitution", (SEVAL_NONINT|SEVAL_NOHIST));
+
+#if !defined (HAVE_DEV_FD)
+  /* Make sure we close the named pipe in the child before we exit. */
+  close (open_for_read_in_child ? 0 : 1);
+#endif /* !HAVE_DEV_FD */
+
+  exit (result);
+  /*NOTREACHED*/
+}
+#endif /* PROCESS_SUBSTITUTION */
+
+/***********************************/
+/*                                */
+/*     Command Substitution       */
+/*                                */
+/***********************************/
+
+static char *
+read_comsub (fd, quoted)
+     int fd, quoted;
+{
+  char *istring, buf[128], *bufp;
+  int istring_index, istring_size, c;
+  ssize_t bufn;
+
+  istring = (char *)NULL;
+  istring_index = istring_size = bufn = 0;
+
+#ifdef __CYGWIN__
+  setmode (fd, O_TEXT);                /* we don't want CR/LF, we want Unix-style */
+#endif
+
+  /* Read the output of the command through the pipe. */
+  while (1)
+    {
+      if (fd < 0)
+       break;
+      if (--bufn <= 0)
+       {
+         bufn = zread (fd, buf, sizeof (buf));
+         if (bufn <= 0) 
+           break;
+         bufp = buf;
+       }
+      c = *bufp++;
+
+      if (c == 0)
+       {
+#if 0
+         internal_warning ("read_comsub: ignored null byte in input");
+#endif
+         continue;
+       }
+
+      /* Add the character to ISTRING, possibly after resizing it. */
+      RESIZE_MALLOCED_BUFFER (istring, istring_index, 2, istring_size, DEFAULT_ARRAY_SIZE);
+
+      if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || c == CTLESC || c == CTLNUL)
+       istring[istring_index++] = CTLESC;
+
+      istring[istring_index++] = c;
+
+#if 0
+#if defined (__CYGWIN__)
+      if (c == '\n' && istring_index > 1 && istring[istring_index - 2] == '\r')
+       {
+         istring_index--;
+         istring[istring_index - 1] = '\n';
+       }
+#endif
+#endif
+    }
+
+  if (istring)
+    istring[istring_index] = '\0';
+
+  /* If we read no output, just return now and save ourselves some
+     trouble. */
+  if (istring_index == 0)
+    {
+      FREE (istring);
+      return (char *)NULL;
+    }
+
+  /* Strip trailing newlines from the output of the command. */
+  if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))
+    {
+      while (istring_index > 0)
+       {
+         if (istring[istring_index - 1] == '\n')
+           {
+             --istring_index;
+
+             /* If the newline was quoted, remove the quoting char. */
+             if (istring[istring_index - 1] == CTLESC)
+               --istring_index;
+           }
+         else
+           break;
+       }
+      istring[istring_index] = '\0';
+    }
+  else
+    strip_trailing (istring, istring_index - 1, 1);
+
+  return istring;
+}
+
+/* Perform command substitution on STRING.  This returns a string,
+   possibly quoted. */
+char *
+command_substitute (string, quoted)
+     char *string;
+     int quoted;
+{
+  pid_t pid, old_pid, old_pipeline_pgrp;
+  char *istring;
+  int result, fildes[2], function_value, pflags, rc;
+
+  istring = (char *)NULL;
+
+  /* Don't fork () if there is no need to.  In the case of no command to
+     run, just return NULL. */
+  if (!string || !*string || (string[0] == '\n' && !string[1]))
+    return ((char *)NULL);
+
+  if (wordexp_only && read_but_dont_execute)
+    {
+      last_command_exit_value = 125;
+      jump_to_top_level (EXITPROG);
+    }
+
+  /* We're making the assumption here that the command substitution will
+     eventually run a command from the file system.  Since we'll run
+     maybe_make_export_env in this subshell before executing that command,
+     the parent shell and any other shells it starts will have to remake
+     the environment.  If we make it before we fork, other shells won't
+     have to.  Don't bother if we have any temporary variable assignments,
+     though, because the export environment will be remade after this
+     command completes anyway, but do it if all the words to be expanded
+     are variable assignments. */
+  if (subst_assign_varlist == 0 || garglist == 0)
+    maybe_make_export_env ();  /* XXX */
+
+  /* Flags to pass to parse_and_execute() */
+  pflags = interactive ? SEVAL_RESETLINE : 0;
+
+  /* Pipe the output of executing STRING into the current shell. */
+  if (pipe (fildes) < 0)
+    {
+      sys_error (_("cannot make pipe for command substitution"));
+      goto error_exit;
+    }
+
+  old_pid = last_made_pid;
+#if defined (JOB_CONTROL)
+  old_pipeline_pgrp = pipeline_pgrp;
+  /* Don't reset the pipeline pgrp if we're already a subshell in a pipeline. */
+  if ((subshell_environment & SUBSHELL_PIPE) == 0)
+    pipeline_pgrp = shell_pgrp;
+  cleanup_the_pipeline ();
+#endif
+
+  pid = make_child ((char *)NULL, 0);
+  if (pid == 0)
+    /* Reset the signal handlers in the child, but don't free the
+       trap strings. */
+    reset_signal_handlers ();
+
+#if defined (JOB_CONTROL)
+  set_sigchld_handler ();
+  stop_making_children ();
+  pipeline_pgrp = old_pipeline_pgrp;
+#else
+  stop_making_children ();
+#endif /* JOB_CONTROL */
+
+  if (pid < 0)
+    {
+      sys_error (_("cannot make child for command substitution"));
+    error_exit:
+
+      FREE (istring);
+      close (fildes[0]);
+      close (fildes[1]);
+      return ((char *)NULL);
+    }
+
+  if (pid == 0)
+    {
+      set_sigint_handler ();   /* XXX */
+
+      free_pushed_string_input ();
+
+      if (dup2 (fildes[1], 1) < 0)
+       {
+         sys_error (_("command_substitute: cannot duplicate pipe as fd 1"));
+         exit (EXECUTION_FAILURE);
+       }
+
+      /* If standard output is closed in the parent shell
+        (such as after `exec >&-'), file descriptor 1 will be
+        the lowest available file descriptor, and end up in
+        fildes[0].  This can happen for stdin and stderr as well,
+        but stdout is more important -- it will cause no output
+        to be generated from this command. */
+      if ((fildes[1] != fileno (stdin)) &&
+         (fildes[1] != fileno (stdout)) &&
+         (fildes[1] != fileno (stderr)))
+       close (fildes[1]);
+
+      if ((fildes[0] != fileno (stdin)) &&
+         (fildes[0] != fileno (stdout)) &&
+         (fildes[0] != fileno (stderr)))
+       close (fildes[0]);
+
+      /* The currently executing shell is not interactive. */
+      interactive = 0;
+
+      /* This is a subshell environment. */
+      subshell_environment |= SUBSHELL_COMSUB;
+
+      /* When not in POSIX mode, command substitution does not inherit
+        the -e flag. */
+      if (posixly_correct == 0)
+       exit_immediately_on_error = 0;
+
+      remove_quoted_escapes (string);
+
+      startup_state = 2;       /* see if we can avoid a fork */
+      /* Give command substitution a place to jump back to on failure,
+        so we don't go back up to main (). */
+      result = setjmp (top_level);
+
+      /* If we're running a command substitution inside a shell function,
+        trap `return' so we don't return from the function in the subshell
+        and go off to never-never land. */
+      if (result == 0 && return_catch_flag)
+       function_value = setjmp (return_catch);
+      else
+       function_value = 0;
+
+      if (result == ERREXIT)
+       rc = last_command_exit_value;
+      else if (result == EXITPROG)
+       rc = last_command_exit_value;
+      else if (result)
+       rc = EXECUTION_FAILURE;
+      else if (function_value)
+       rc = return_catch_value;
+      else
+       {
+         subshell_level++;
+         rc = parse_and_execute (string, "command substitution", pflags|SEVAL_NOHIST);
+         subshell_level--;
+       }
+
+      last_command_exit_value = rc;
+      rc = run_exit_trap ();
+      exit (rc);
+    }
+  else
+    {
+#if defined (JOB_CONTROL) && defined (PGRP_PIPE)
+      close_pgrp_pipe ();
+#endif /* JOB_CONTROL && PGRP_PIPE */
+
+      close (fildes[1]);
+
+      istring = read_comsub (fildes[0], quoted);
+
+      close (fildes[0]);
+
+      current_command_subst_pid = pid;
+      last_command_exit_value = wait_for (pid);
+      last_command_subst_pid = pid;
+      last_made_pid = old_pid;
+
+#if defined (JOB_CONTROL)
+      /* If last_command_exit_value > 128, then the substituted command
+        was terminated by a signal.  If that signal was SIGINT, then send
+        SIGINT to ourselves.  This will break out of loops, for instance. */
+      if (last_command_exit_value == (128 + SIGINT) && last_command_exit_signal == SIGINT)
+       kill (getpid (), SIGINT);
+
+      /* wait_for gives the terminal back to shell_pgrp.  If some other
+        process group should have it, give it away to that group here.
+        pipeline_pgrp is non-zero only while we are constructing a
+        pipline, so what we are concerned about is whether or not that
+        pipeline was started in the background.  A pipeline started in
+        the background should never get the tty back here. */
+#if 0
+      if (interactive && pipeline_pgrp != (pid_t)0 && pipeline_pgrp != last_asynchronous_pid)
+#else
+      if (interactive && pipeline_pgrp != (pid_t)0 && (subshell_environment & SUBSHELL_ASYNC) == 0)
+#endif
+       give_terminal_to (pipeline_pgrp, 0);
+#endif /* JOB_CONTROL */
+
+      return (istring);
+    }
+}
+
+/********************************************************
+ *                                                     *
+ *     Utility functions for parameter expansion       *
+ *                                                     *
+ ********************************************************/
+
+#if defined (ARRAY_VARS)
+
+static arrayind_t
+array_length_reference (s)
+     char *s;
+{
+  int len;
+  arrayind_t ind;
+  char *t, c;
+  ARRAY *array;
+  SHELL_VAR *var;
+
+  var = array_variable_part (s, &t, &len);
+
+  /* If unbound variables should generate an error, report one and return
+     failure. */
+  if ((var == 0 || array_p (var) == 0) && unbound_vars_is_error)
+    {
+      c = *--t;
+      *t = '\0';
+      err_unboundvar (s);
+      *t = c;
+      return (-1);
+    }
+  else if (var == 0)
+    return 0;
+
+  /* We support a couple of expansions for variables that are not arrays.
+     We'll return the length of the value for v[0], and 1 for v[@] or
+     v[*].  Return 0 for everything else. */
+
+  array = array_p (var) ? array_cell (var) : (ARRAY *)NULL;
+
+  if (ALL_ELEMENT_SUB (t[0]) && t[1] == ']')
+    return (array_p (var) ? array_num_elements (array) : 1);
+
+  ind = array_expand_index (t, len);
+  if (ind < 0)
+    {
+      err_badarraysub (t);
+      return (-1);
+    }
+
+  if (array_p (var))
+    t = array_reference (array, ind);
+  else
+    t = (ind == 0) ? value_cell (var) : (char *)NULL;
+
+  len = STRLEN (t);
+  return (len);
+}
+#endif /* ARRAY_VARS */
+
+static int
+valid_brace_expansion_word (name, var_is_special)
+     char *name;
+     int var_is_special;
+{
+  if (DIGIT (*name) && all_digits (name))
+    return 1;
+  else if (var_is_special)
+    return 1;
+#if defined (ARRAY_VARS)
+  else if (valid_array_reference (name))
+    return 1;
+#endif /* ARRAY_VARS */
+  else if (legal_identifier (name))
+    return 1;
+  else
+    return 0;
+}
+
+static int
+chk_atstar (name, quoted, quoted_dollar_atp, contains_dollar_at)
+     char *name;
+     int quoted;
+     int *quoted_dollar_atp, *contains_dollar_at;
+{
+  char *temp1;
+
+  if (name == 0)
+    {
+      if (quoted_dollar_atp)
+       *quoted_dollar_atp = 0;
+      if (contains_dollar_at)
+       *contains_dollar_at = 0;
+      return 0;
+    }
+
+  /* check for $@ and $* */
+  if (name[0] == '@' && name[1] == 0)
+    {
+      if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && quoted_dollar_atp)
+       *quoted_dollar_atp = 1;
+      if (contains_dollar_at)
+       *contains_dollar_at = 1;
+      return 1;
+    }
+  else if (name[0] == '*' && name[1] == '\0' && quoted == 0)
+    {
+      if (contains_dollar_at)
+       *contains_dollar_at = 1;
+      return 1;
+    }
+
+  /* Now check for ${array[@]} and ${array[*]} */
+#if defined (ARRAY_VARS)
+  else if (valid_array_reference (name))
+    {
+      temp1 = xstrchr (name, '[');
+      if (temp1 && temp1[1] == '@' && temp1[2] == ']')
+       {
+         if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && quoted_dollar_atp)
+           *quoted_dollar_atp = 1;
+         if (contains_dollar_at)
+           *contains_dollar_at = 1;
+         return 1;
+       }       /* [ */
+      /* ${array[*]}, when unquoted, should be treated like ${array[@]},
+        which should result in separate words even when IFS is unset. */
+      if (temp1 && temp1[1] == '*' && temp1[2] == ']' && quoted == 0)
+       {
+         if (contains_dollar_at)
+           *contains_dollar_at = 1;
+         return 1;
+       }
+    }
+#endif
+  return 0;
+}
+
+/* Parameter expand NAME, and return a new string which is the expansion,
+   or NULL if there was no expansion.
+   VAR_IS_SPECIAL is non-zero if NAME is one of the special variables in
+   the shell, e.g., "@", "$", "*", etc.  QUOTED, if non-zero, means that
+   NAME was found inside of a double-quoted expression. */
+static char *
+parameter_brace_expand_word (name, var_is_special, quoted)
+     char *name;
+     int var_is_special, quoted;
+{
+  char *temp, *tt;
+  intmax_t arg_index;
+  SHELL_VAR *var;
+  int atype;
+
+  /* Handle multiple digit arguments, as in ${11}. */
+  
+  if (legal_number (name, &arg_index))
+    {
+      tt = get_dollar_var_value (arg_index);
+      if (tt)
+       temp = (*tt && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)))
+                 ? quote_string (tt)
+                 : quote_escapes (tt);
+      else
+        temp = (char *)NULL;
+      FREE (tt);
+    }
+  else if (var_is_special)      /* ${@} */
+    {
+      int sindex;
+      tt = (char *)xmalloc (2 + strlen (name));
+      tt[sindex = 0] = '$';
+      strcpy (tt + 1, name);
+
+      temp = param_expand (tt, &sindex, quoted, (int *)NULL, (int *)NULL,
+                          (int *)NULL, (int *)NULL, 0);
+      free (tt);
+    }
+#if defined (ARRAY_VARS)
+  else if (valid_array_reference (name))
+    {
+      temp = array_value (name, quoted, &atype);
+      if (atype == 0 && temp)
+       temp = (*temp && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)))
+                 ? quote_string (temp)
+                 : quote_escapes (temp);
+    }
+#endif
+  else if (var = find_variable (name))
+    {
+      if (var_isset (var) && invisible_p (var) == 0)
+       {
+#if defined (ARRAY_VARS)
+         temp = array_p (var) ? array_reference (array_cell (var), 0) : value_cell (var);
+#else
+         temp = value_cell (var);
+#endif
+
+         if (temp)
+           temp = (*temp && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)))
+                     ? quote_string (temp)
+                     : quote_escapes (temp);
+       }
+      else
+       temp = (char *)NULL;
+    }
+  else
+    temp = (char *)NULL;
+
+  return (temp);
+}
+
+/* Expand an indirect reference to a variable: ${!NAME} expands to the
+   value of the variable whose name is the value of NAME. */
+static char *
+parameter_brace_expand_indir (name, var_is_special, quoted, quoted_dollar_atp, contains_dollar_at)
+     char *name;
+     int var_is_special, quoted;
+     int *quoted_dollar_atp, *contains_dollar_at;
+{
+  char *temp, *t;
+
+  t = parameter_brace_expand_word (name, var_is_special, quoted);
+  /* Have to dequote here if necessary */
+  if (t)
+    {
+      temp = (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))
+               ? dequote_string (t)
+               : dequote_escapes (t);
+      free (t);
+      t = temp;
+    }
+  chk_atstar (t, quoted, quoted_dollar_atp, contains_dollar_at);
+  if (t == 0)
+    return (t);
+  temp = parameter_brace_expand_word (t, SPECIAL_VAR(t, 0), quoted);
+  free (t);
+  return temp;
+}
+
+/* Expand the right side of a parameter expansion of the form ${NAMEcVALUE},
+   depending on the value of C, the separating character.  C can be one of
+   "-", "+", or "=".  QUOTED is true if the entire brace expression occurs
+   between double quotes. */
+static char *
+parameter_brace_expand_rhs (name, value, c, quoted, qdollaratp, hasdollarat)
+     char *name, *value;
+     int c, quoted, *qdollaratp, *hasdollarat;
+{
+  WORD_LIST *l;
+  char *t, *t1, *temp;
+  int hasdol;
+
+#if 0
+  /* XXX - Should we tilde expand in an assignment context if C is `='? */
+  if (*value == '~')
+    temp = bash_tilde_expand (value, 0);
+  else if (xstrchr (value, '~')  && unquoted_substring ("=~", value))
+    temp = bash_tilde_expand (value, 1);
+  else
+#endif
+    temp = savestring (value);
+
+  /* If the entire expression is between double quotes, we want to treat
+     the value as a double-quoted string, with the exception that we strip
+     embedded unescaped double quotes. */
+  if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && *temp)
+    {
+      hasdol = 0;
+      t = string_extract_double_quoted (temp, &hasdol, 1);
+      free (temp);
+      temp = t;
+    }
+
+  hasdol = 0;
+  /* XXX was 0 not quoted */
+  l = *temp ? expand_string_for_rhs (temp, quoted, &hasdol, (int *)NULL)
+           : (WORD_LIST *)0;
+  if (hasdollarat)
+    *hasdollarat = hasdol || (l && l->next);
+  free (temp);
+  if (l)
+    {
+      /* The expansion of TEMP returned something.  We need to treat things
+         slightly differently if HASDOL is non-zero.  If we have "$@", the
+         individual words have already been quoted.  We need to turn them
+         into a string with the words separated by the first character of
+         $IFS without any additional quoting, so string_list_dollar_at won't
+         do the right thing.  We use string_list_dollar_star instead. */
+      temp = (hasdol || l->next) ? string_list_dollar_star (l) : string_list (l);
+
+      /* If l->next is not null, we know that TEMP contained "$@", since that
+        is the only expansion that creates more than one word. */
+      if (qdollaratp && ((hasdol && quoted) || l->next))
+       *qdollaratp = 1;
+      dispose_words (l);
+    }
+  else if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && hasdol)
+    {
+      /* The brace expansion occurred between double quotes and there was
+        a $@ in TEMP.  It does not matter if the $@ is quoted, as long as
+        it does not expand to anything.  In this case, we want to return
+        a quoted empty string. */
+      temp = (char *)xmalloc (2);
+      temp[0] = CTLNUL;
+      temp[1] = '\0';
+    }
+  else
+    temp = (char *)NULL;
+
+  if (c == '-' || c == '+')
+    return (temp);
+
+  /* c == '=' */
+  t = temp ? savestring (temp) : savestring ("");
+  t1 = dequote_string (t);
+  free (t);
+#if defined (ARRAY_VARS)
+  if (valid_array_reference (name))
+    assign_array_element (name, t1);
+  else
+#endif /* ARRAY_VARS */
+  bind_variable (name, t1);
+  free (t1);
+  return (temp);
+}
+
+/* Deal with the right hand side of a ${name:?value} expansion in the case
+   that NAME is null or not set.  If VALUE is non-null it is expanded and
+   used as the error message to print, otherwise a standard message is
+   printed. */
+static void
+parameter_brace_expand_error (name, value)
+     char *name, *value;
+{
+  WORD_LIST *l;
+  char *temp;
+
+  if (value && *value)
+    {
+#if 0
+      if (*value == '~')
+       temp = bash_tilde_expand (value, 0);
+      else if (xstrchr (value, '~')  && unquoted_substring ("=~", value))
+       temp = bash_tilde_expand (value, 1);
+      else
+#endif
+       temp = savestring (value);
+
+      l = expand_string (temp, 0);
+      FREE (temp);
+      temp =  string_list (l);
+      report_error ("%s: %s", name, temp ? temp : ""); /* XXX was value not "" */
+      FREE (temp);
+      dispose_words (l);
+    }
+  else
+    report_error (_("%s: parameter null or not set"), name);
+
+  /* Free the data we have allocated during this expansion, since we
+     are about to longjmp out. */
+  free (name);
+  FREE (value);
+}
+
+/* Return 1 if NAME is something for which parameter_brace_expand_length is
+   OK to do. */
+static int
+valid_length_expression (name)
+     char *name;
+{
+  return (name[1] == '\0' ||                                   /* ${#} */
+         ((sh_syntaxtab[(unsigned char) name[1]] & CSPECVAR) && name[2] == '\0') ||  /* special param */
+         (DIGIT (name[1]) && all_digits (name + 1)) || /* ${#11} */
+#if defined (ARRAY_VARS)
+         valid_array_reference (name + 1) ||                   /* ${#a[7]} */
+#endif
+         legal_identifier (name + 1));                         /* ${#PS1} */
+}
+
+#if defined (HANDLE_MULTIBYTE)
+size_t
+mbstrlen (s)
+     const char *s;
+{
+  size_t clen, nc;
+  mbstate_t mbs;
+
+  nc = 0;
+  memset (&mbs, 0, sizeof (mbs));
+  while ((clen = mbrlen(s, MB_CUR_MAX, &mbs)) != 0 && (MB_INVALIDCH(clen) == 0))
+    {
+      s += clen;
+      nc++;
+    }
+  return nc;
+}
+#endif
+      
+
+/* Handle the parameter brace expansion that requires us to return the
+   length of a parameter. */
+static intmax_t
+parameter_brace_expand_length (name)
+     char *name;
+{
+  char *t, *newname;
+  intmax_t number, arg_index;
+  WORD_LIST *list;
+#if defined (ARRAY_VARS)
+  SHELL_VAR *var;
+#endif
+
+  if (name[1] == '\0')                 /* ${#} */
+    number = number_of_args ();
+  else if ((name[1] == '@' || name[1] == '*') && name[2] == '\0')      /* ${#@}, ${#*} */
+    number = number_of_args ();
+  else if ((sh_syntaxtab[(unsigned char) name[1]] & CSPECVAR) && name[2] == '\0')
+    {
+      /* Take the lengths of some of the shell's special parameters. */
+      switch (name[1])
+       {
+       case '-':
+         t = which_set_flags ();
+         break;
+       case '?':
+         t = itos (last_command_exit_value);
+         break;
+       case '$':
+         t = itos (dollar_dollar_pid);
+         break;
+       case '!':
+         if (last_asynchronous_pid == NO_PID)
+           t = (char *)NULL;
+         else
+           t = itos (last_asynchronous_pid);
+         break;
+       case '#':
+         t = itos (number_of_args ());
+         break;
+       }
+      number = STRLEN (t);
+      FREE (t);
+    }
+#if defined (ARRAY_VARS)
+  else if (valid_array_reference (name + 1))
+    number = array_length_reference (name + 1);
+#endif /* ARRAY_VARS */
+  else
+    {
+      number = 0;
+
+      if (legal_number (name + 1, &arg_index))         /* ${#1} */
+       {
+         t = get_dollar_var_value (arg_index);
+         number = MB_STRLEN (t);
+         FREE (t);
+       }
+#if defined (ARRAY_VARS)
+      else if ((var = find_variable (name + 1)) && (invisible_p (var) == 0) && array_p (var))
+       {
+         t = array_reference (array_cell (var), 0);
+         number = MB_STRLEN (t);
+       }
+#endif
+      else                             /* ${#PS1} */
+       {
+         newname = savestring (name);
+         newname[0] = '$';
+         list = expand_string (newname, Q_DOUBLE_QUOTES);
+         t = list ? string_list (list) : (char *)NULL;
+         free (newname);
+         if (list)
+           dispose_words (list);
+
+         number = MB_STRLEN (t);
+         FREE (t);
+       }
+    }
+
+  return (number);
+}
+
+/* Skip characters in SUBSTR until DELIM.  SUBSTR is an arithmetic expression,
+   so we do some ad-hoc parsing of an arithmetic expression to find
+   the first DELIM, instead of using strchr(3).  Two rules:
+       1.  If the substring contains a `(', read until closing `)'.
+       2.  If the substring contains a `?', read past one `:' for each `?'.
+*/
+
+static char *
+skiparith (substr, delim)
+     char *substr;
+     int delim;
+{
+  size_t sublen;
+  int skipcol, pcount, i;
+  DECLARE_MBSTATE;
+
+  sublen = strlen (substr);
+  i = skipcol = pcount = 0;
+  while (substr[i])
+    {
+      /* Balance parens */
+      if (substr[i] == LPAREN)
+       {
+         pcount++;
+         i++;
+         continue;
+       }
+      if (substr[i] == RPAREN && pcount)
+       {
+         pcount--;
+         i++;
+         continue;
+       }
+      if (pcount)
+       {
+         ADVANCE_CHAR (substr, sublen, i);
+         continue;
+       }
+
+      /* Skip one `:' for each `?' */
+      if (substr[i] == ':' && skipcol)
+       {
+         skipcol--;
+         i++;
+         continue;
+       }
+      if (substr[i] == delim)
+       break;
+      if (substr[i] == '?')
+       {
+         skipcol++;
+         i++;
+         continue;
+       }
+      ADVANCE_CHAR (substr, sublen, i);
+    }
+
+  return (substr + i);
+}
+
+/* Verify and limit the start and end of the desired substring.  If
+   VTYPE == 0, a regular shell variable is being used; if it is 1,
+   then the positional parameters are being used; if it is 2, then
+   VALUE is really a pointer to an array variable that should be used.
+   Return value is 1 if both values were OK, 0 if there was a problem
+   with an invalid expression, or -1 if the values were out of range. */
+static int
+verify_substring_values (value, substr, vtype, e1p, e2p)
+     char *value, *substr;
+     int vtype;
+     intmax_t *e1p, *e2p;
+{
+  char *t, *temp1, *temp2;
+  arrayind_t len;
+  int expok;
+#if defined (ARRAY_VARS)
+ ARRAY *a;
+#endif
+
+  /* duplicate behavior of strchr(3) */
+  t = skiparith (substr, ':');
+  if (*t && *t == ':')
+    *t = '\0';
+  else
+    t = (char *)0;
+
+  temp1 = expand_string_if_necessary (substr, Q_DOUBLE_QUOTES, expand_string);
+  *e1p = evalexp (temp1, &expok);
+  free (temp1);
+  if (expok == 0)
+    return (0);
+
+  len = -1;    /* paranoia */
+  switch (vtype)
+    {
+    case VT_VARIABLE:
+    case VT_ARRAYMEMBER:
+      len = MB_STRLEN (value);
+      break;
+    case VT_POSPARMS:
+      len = number_of_args () + 1;
+      break;
+#if defined (ARRAY_VARS)
+    case VT_ARRAYVAR:
+      a = (ARRAY *)value;
+      /* For arrays, the first value deals with array indices.  Negative
+        offsets count from one past the array's maximum index. */
+      len = array_max_index (a) + (*e1p < 0);  /* arrays index from 0 to n - 1 */
+      break;
+#endif
+    }
+
+  if (len == -1)       /* paranoia */
+    return -1;
+
+  if (*e1p < 0)                /* negative offsets count from end */
+    *e1p += len;
+
+  if (*e1p > len || *e1p < 0)
+    return (-1);
+
+#if defined (ARRAY_VARS)
+  /* For arrays, the second offset deals with the number of elements. */
+  if (vtype == VT_ARRAYVAR)
+    len = array_num_elements (a);
+#endif
+
+  if (t)
+    {
+      t++;
+      temp2 = savestring (t);
+      temp1 = expand_string_if_necessary (temp2, Q_DOUBLE_QUOTES, expand_string);
+      free (temp2);
+      t[-1] = ':';
+      *e2p = evalexp (temp1, &expok);
+      free (temp1);
+      if (expok == 0)
+       return (0);
+      if (*e2p < 0)
+       {
+         internal_error (_("%s: substring expression < 0"), t);
+         return (0);
+       }
+#if defined (ARRAY_VARS)
+      /* In order to deal with sparse arrays, push the intelligence about how
+        to deal with the number of elements desired down to the array-
+        specific functions.  */
+      if (vtype != VT_ARRAYVAR)
+#endif
+       {
+         *e2p += *e1p;         /* want E2 chars starting at E1 */
+         if (*e2p > len)
+           *e2p = len;
+       }
+    }
+  else
+    *e2p = len;
+
+  return (1);
+}
+
+/* Return the type of variable specified by VARNAME (simple variable,
+   positional param, or array variable).  Also return the value specified
+   by VARNAME (value of a variable or a reference to an array element).
+   If this returns VT_VARIABLE, the caller assumes that CTLESC and CTLNUL
+   characters in the value are quoted with CTLESC and takes appropriate
+   steps.  For convenience, *VALP is set to the dequoted VALUE. */
+static int
+get_var_and_type (varname, value, quoted, varp, valp)
+     char *varname, *value;
+     int quoted;
+     SHELL_VAR **varp;
+     char **valp;
+{
+  int vtype;
+  char *temp;
+#if defined (ARRAY_VARS)
+  SHELL_VAR *v;
+#endif
+
+  /* This sets vtype to VT_VARIABLE or VT_POSPARMS */
+  vtype = (varname[0] == '@' || varname[0] == '*') && varname[1] == '\0';
+  if (vtype == VT_POSPARMS && varname[0] == '*')
+    vtype |= VT_STARSUB;
+  *varp = (SHELL_VAR *)NULL;
+
+#if defined (ARRAY_VARS)
+  if (valid_array_reference (varname))
+    {
+      v = array_variable_part (varname, &temp, (int *)0);
+      if (v && array_p (v))
+       { /* [ */
+         if (ALL_ELEMENT_SUB (temp[0]) && temp[1] == ']')
+           {
+             vtype = VT_ARRAYVAR;
+             if (temp[0] == '*')
+               vtype |= VT_STARSUB;
+             *valp = (char *)array_cell (v);
+           }
+         else
+           {
+             vtype = VT_ARRAYMEMBER;
+             *valp = array_value (varname, 1, (int *)NULL);
+           }
+         *varp = v;
+       }
+      else
+       return -1;
+    }
+  else if ((v = find_variable (varname)) && (invisible_p (v) == 0) && array_p (v))
+    {
+      vtype = VT_ARRAYMEMBER;
+      *varp = v;
+      *valp = array_reference (array_cell (v), 0);
+    }
+  else
+#endif
+#if 1
+    {
+      if (value && vtype == VT_VARIABLE)
+       {
+         if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))
+           *valp = dequote_string (value);
+         else
+           *valp = dequote_escapes (value);
+       }
+      else
+       *valp = value;
+    }
+#else
+  *valp = (value && vtype == VT_VARIABLE) ? dequote_escapes (value) : value;
+#endif
+
+  return vtype;
+}
+
+/******************************************************/
+/*                                                   */
+/* Functions to extract substrings of variable values */
+/*                                                   */
+/******************************************************/
+
+#if defined (HANDLE_MULTIBYTE)
+/* Character-oriented rather than strictly byte-oriented substrings.  S and
+   E, rather being strict indices into STRING, indicate character (possibly
+   multibyte character) positions that require calculation.
+   Used by the ${param:offset[:length]} expansion. */
+static char *
+mb_substring (string, s, e)
+     char *string;
+     int s, e;
+{
+  char *tt;
+  int start, stop, i, slen;
+  DECLARE_MBSTATE;
+
+  start = 0;
+  slen = STRLEN (string);
+
+  i = s;
+  while (string[start] && i--)
+    ADVANCE_CHAR (string, slen, start);
+  stop = start;
+  i = e - s;
+  while (string[stop] && i--)
+    ADVANCE_CHAR (string, slen, stop);
+  tt = substring (string, start, stop);
+  return tt;
+}
+#endif
+  
+/* Process a variable substring expansion: ${name:e1[:e2]}.  If VARNAME
+   is `@', use the positional parameters; otherwise, use the value of
+   VARNAME.  If VARNAME is an array variable, use the array elements. */
+
+static char *
+parameter_brace_substring (varname, value, substr, quoted)
+     char *varname, *value, *substr;
+     int quoted;
+{
+  intmax_t e1, e2;
+  int vtype, r, starsub;
+  char *temp, *val, *tt;
+  SHELL_VAR *v;
+
+  if (value == 0)
+    return ((char *)NULL);
+
+  this_command_name = varname;
+
+  vtype = get_var_and_type (varname, value, quoted, &v, &val);
+  if (vtype == -1)
+    return ((char *)NULL);
+
+  starsub = vtype & VT_STARSUB;
+  vtype &= ~VT_STARSUB;
+
+  r = verify_substring_values (val, substr, vtype, &e1, &e2);
+  if (r <= 0)
+    return ((r == 0) ? &expand_param_error : (char *)NULL);
+
+  switch (vtype)
+    {
+    case VT_VARIABLE:
+    case VT_ARRAYMEMBER:
+#if defined (HANDLE_MULTIBYTE)
+      if (MB_CUR_MAX > 1)
+       tt = mb_substring (val, e1, e2);
+      else
+#endif
+      tt = substring (val, e1, e2);
+
+      if (vtype == VT_VARIABLE)
+       FREE (val);
+      if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))
+       temp = quote_string (tt);
+      else
+       temp = tt ? quote_escapes (tt) : (char *)NULL;
+      FREE (tt);
+      break;
+    case VT_POSPARMS:
+      tt = pos_params (varname, e1, e2, quoted);
+      if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) == 0)
+       {
+         temp = tt ? quote_escapes (tt) : (char *)NULL;
+         FREE (tt);
+       }
+      else
+       temp = tt;
+      break;
+#if defined (ARRAY_VARS)
+    case VT_ARRAYVAR:
+      /* We want E2 to be the number of elements desired (arrays can be sparse,
+        so verify_substring_values just returns the numbers specified and we
+        rely on array_subrange to understand how to deal with them). */
+      tt = array_subrange (array_cell (v), e1, e2, starsub, quoted);
+      if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) == 0)
+       {
+         temp = tt ? quote_escapes (tt) : (char *)NULL;
+         FREE (tt);
+       }
+      else
+       temp = tt;
+      break;
+#endif
+    default:
+      temp = (char *)NULL;
+    }
+
+  return temp;
+}
+
+/****************************************************************/
+/*                                                             */
+/* Functions to perform pattern substitution on variable values */
+/*                                                             */
+/****************************************************************/
+
+char *
+pat_subst (string, pat, rep, mflags)
+     char *string, *pat, *rep;
+     int mflags;
+{
+  char *ret, *s, *e, *str;
+  int rsize, rptr, l, replen, mtype;
+
+  mtype = mflags & MATCH_TYPEMASK;
+
+  /* Special cases:
+   *   1.  A null pattern with mtype == MATCH_BEG means to prefix STRING
+   *       with REP and return the result.
+   *   2.  A null pattern with mtype == MATCH_END means to append REP to
+   *       STRING and return the result.
+   */
+  if ((pat == 0 || *pat == 0) && (mtype == MATCH_BEG || mtype == MATCH_END))
+    {
+      replen = STRLEN (rep);
+      l = strlen (string);
+      ret = (char *)xmalloc (replen + l + 2);
+      if (replen == 0)
+       strcpy (ret, string);
+      else if (mtype == MATCH_BEG)
+       {
+         strcpy (ret, rep);
+         strcpy (ret + replen, string);
+       }
+      else
+       {
+         strcpy (ret, string);
+         strcpy (ret + l, rep);
+       }
+      return (ret);
+    }
+
+  ret = (char *)xmalloc (rsize = 64);
+  ret[0] = '\0';
+
+  for (replen = STRLEN (rep), rptr = 0, str = string;;)
+    {
+      if (match_pattern (str, pat, mtype, &s, &e) == 0)
+       break;
+      l = s - str;
+      RESIZE_MALLOCED_BUFFER (ret, rptr, (l + replen), rsize, 64);
+
+      /* OK, now copy the leading unmatched portion of the string (from
+        str to s) to ret starting at rptr (the current offset).  Then copy
+        the replacement string at ret + rptr + (s - str).  Increment
+        rptr (if necessary) and str and go on. */
+      if (l)
+       {
+         strncpy (ret + rptr, str, l);
+         rptr += l;
+       }
+      if (replen)
+       {
+         strncpy (ret + rptr, rep, replen);
+         rptr += replen;
+       }
+      str = e;         /* e == end of match */
+
+      if (((mflags & MATCH_GLOBREP) == 0) || mtype != MATCH_ANY)
+       break;
+
+      if (s == e)
+       e++, str++;             /* avoid infinite recursion on zero-length match */
+    }
+
+  /* Now copy the unmatched portion of the input string */
+  if (*str)
+    {
+      RESIZE_MALLOCED_BUFFER (ret, rptr, STRLEN(str) + 1, rsize, 64);
+      strcpy (ret + rptr, str);
+    }
+  else
+    ret[rptr] = '\0';
+
+  return ret;
+}
+
+/* Do pattern match and replacement on the positional parameters. */
+static char *
+pos_params_pat_subst (string, pat, rep, mflags)
+     char *string, *pat, *rep;
+     int mflags;
+{
+  WORD_LIST *save, *params;
+  WORD_DESC *w;
+  char *ret, *tt;
+
+  save = params = list_rest_of_args ();
+  if (save == 0)
+    return ((char *)NULL);
+
+  for ( ; params; params = params->next)
+    {
+      ret = pat_subst (params->word->word, pat, rep, mflags);
+      w = make_bare_word (ret);
+      dispose_word (params->word);
+      params->word = w;
+      FREE (ret);
+    }
+
+  if ((mflags & (MATCH_QUOTED|MATCH_STARSUB)) == (MATCH_QUOTED|MATCH_STARSUB))
+    ret = string_list_dollar_star (quote_list (save));
+  else
+    ret = string_list ((mflags & MATCH_QUOTED) ? quote_list (save) : save);
+  dispose_words (save);
+
+  return (ret);
+}
+
+/* Perform pattern substitution on VALUE, which is the expansion of
+   VARNAME.  PATSUB is an expression supplying the pattern to match
+   and the string to substitute.  QUOTED is a flags word containing
+   the type of quoting currently in effect. */
+static char *
+parameter_brace_patsub (varname, value, patsub, quoted)
+     char *varname, *value, *patsub;
+     int quoted;
+{
+  int vtype, mflags, starsub;
+  char *val, *temp, *pat, *rep, *p, *lpatsub, *tt;
+  SHELL_VAR *v;
+
+  if (value == 0)
+    return ((char *)NULL);
+
+  this_command_name = varname;
+
+  vtype = get_var_and_type (varname, value, quoted, &v, &val);
+  if (vtype == -1)
+    return ((char *)NULL);
+
+  starsub = vtype & VT_STARSUB;
+  vtype &= ~VT_STARSUB;
+
+  mflags = 0;
+  if (*patsub == '/')
+    {
+      mflags |= MATCH_GLOBREP;
+      patsub++;
+    }
+
+  /* Malloc this because expand_string_if_necessary or one of the expansion
+     functions in its call chain may free it on a substitution error. */
+  lpatsub = savestring (patsub);
+
+  if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))
+    mflags |= MATCH_QUOTED;
+
+  if (starsub)
+    mflags |= MATCH_STARSUB;
+
+  if (rep = quoted_strchr (lpatsub, '/', ST_BACKSL))
+    *rep++ = '\0';
+  else
+    rep = (char *)NULL;
+
+  if (rep && *rep == '\0')
+    rep = (char *)NULL;
+
+#if 0
+  /* Expand PAT and REP for command, variable and parameter, arithmetic,
+     and process substitution.  Also perform quote removal.  Do not
+     perform word splitting or filename generation. */
+  pat = expand_string_if_necessary (lpatsub, (quoted & ~Q_DOUBLE_QUOTES), expand_string_unsplit);
+#else
+  /* Perform the same expansions on the pattern as performed by the
+     pattern removal expansions. */
+  pat = getpattern (lpatsub, quoted, 1);
+#endif
+
+  if (rep)
+    {
+      if ((mflags & MATCH_QUOTED) == 0)
+       rep = expand_string_if_necessary (rep, quoted, expand_string_unsplit);
+      else
+       rep = expand_string_to_string_internal (rep, quoted, expand_string_unsplit);
+    }
+
+  p = pat;
+  if (pat && pat[0] == '#')
+    {
+      mflags |= MATCH_BEG;
+      p++;
+    }
+  else if (pat && pat[0] == '%')
+    {
+      mflags |= MATCH_END;
+      p++;
+    }
+  else
+    mflags |= MATCH_ANY;
+
+  /* OK, we now want to substitute REP for PAT in VAL.  If
+     flags & MATCH_GLOBREP is non-zero, the substitution is done
+     everywhere, otherwise only the first occurrence of PAT is
+     replaced.  The pattern matching code doesn't understand
+     CTLESC quoting CTLESC and CTLNUL so we use the dequoted variable
+     values passed in (VT_VARIABLE) so the pattern substitution
+     code works right.  We need to requote special chars after
+     we're done for VT_VARIABLE and VT_ARRAYMEMBER, and for the
+     other cases if QUOTED == 0, since the posparams and arrays
+     indexed by * or @ do special things when QUOTED != 0. */
+
+  switch (vtype)
+    {
+    case VT_VARIABLE:
+    case VT_ARRAYMEMBER:
+      temp = pat_subst (val, p, rep, mflags);
+      if (vtype == VT_VARIABLE)
+       FREE (val);
+      if (temp)
+       {
+         tt = quote_escapes (temp);
+         free (temp);
+         temp = tt;
+       }
+      break;
+    case VT_POSPARMS:
+      temp = pos_params_pat_subst (val, p, rep, mflags);
+      if (temp && (mflags & MATCH_QUOTED) == 0)
+       {
+         tt = quote_escapes (temp);
+         free (temp);
+         temp = tt;
+       }
+      break;
+#if defined (ARRAY_VARS)
+    case VT_ARRAYVAR:
+      temp = array_patsub (array_cell (v), p, rep, mflags);
+      if (temp && (mflags & MATCH_QUOTED) == 0)
+       {
+         tt = quote_escapes (temp);
+         free (temp);
+         temp = tt;
+       }
+      break;
+#endif
+    }
+
+  FREE (pat);
+  FREE (rep);
+  free (lpatsub);
+
+  return temp;
+}
+
+/****************************************************************/
+/*                                                             */
+/*     Functions to perform parameter expansion on a string    */
+/*                                                             */
+/****************************************************************/
+
+/* ${[#][!]name[[:]#[#]%[%]-=?+[word][:e1[:e2]]]} */
+static char *
+parameter_brace_expand (string, indexp, quoted, quoted_dollar_atp, contains_dollar_at)
+     char *string;
+     int *indexp, quoted, *quoted_dollar_atp, *contains_dollar_at;
+{
+  int check_nullness, var_is_set, var_is_null, var_is_special;
+  int want_substring, want_indir, want_patsub;
+  char *name, *value, *temp, *temp1;
+  int t_index, sindex, c;
+  intmax_t number;
+
+  value = (char *)NULL;
+  var_is_set = var_is_null = var_is_special = check_nullness = 0;
+  want_substring = want_indir = want_patsub = 0;
+
+  sindex = *indexp;
+  t_index = ++sindex;
+  name = string_extract (string, &t_index, "#%:-=?+/}", EX_VARNAME);
+
+  /* If the name really consists of a special variable, then make sure
+     that we have the entire name.  We don't allow indirect references
+     to special variables except `#', `?', `@' and `*'. */
+  if ((sindex == t_index &&
+       (string[t_index] == '-' ||
+        string[t_index] == '?' ||
+        string[t_index] == '#')) ||
+      (sindex == t_index - 1 && string[sindex] == '!' &&
+       (string[t_index] == '#' ||
+        string[t_index] == '?' ||
+        string[t_index] == '@' ||
+        string[t_index] == '*')))
+    {
+      t_index++;
+      free (name);
+      temp1 = string_extract (string, &t_index, "#%:-=?+/}", 0);
+      name = (char *)xmalloc (3 + (strlen (temp1)));
+      *name = string[sindex];
+      if (string[sindex] == '!')
+       {
+         /* indirect reference of $#, $?, $@, or $* */
+         name[1] = string[sindex + 1];
+         strcpy (name + 2, temp1);
+       }
+      else     
+       strcpy (name + 1, temp1);
+      free (temp1);
+    }
+  sindex = t_index;
+
+  /* Find out what character ended the variable name.  Then
+     do the appropriate thing. */
+  if (c = string[sindex])
+    sindex++;
+
+  /* If c is followed by one of the valid parameter expansion
+     characters, move past it as normal.  If not, assume that
+     a substring specification is being given, and do not move
+     past it. */
+  if (c == ':' && VALID_PARAM_EXPAND_CHAR (string[sindex]))
+    {
+      check_nullness++;
+      if (c = string[sindex])
+       sindex++;
+    }
+  else if (c == ':' && string[sindex] != RBRACE)
+    want_substring = 1;
+  else if (c == '/' && string[sindex] != RBRACE)
+    want_patsub = 1;
+
+  /* Catch the valid and invalid brace expressions that made it through the
+     tests above. */
+  /* ${#-} is a valid expansion and means to take the length of $-.
+     Similarly for ${#?} and ${##}... */
+  if (name[0] == '#' && name[1] == '\0' && check_nullness == 0 &&
+       VALID_SPECIAL_LENGTH_PARAM (c) && string[sindex] == RBRACE)
+    {
+      name = (char *)xrealloc (name, 3);
+      name[1] = c;
+      name[2] = '\0';
+      c = string[sindex++];
+    }
+
+  /* ...but ${#%}, ${#:}, ${#=}, ${#+}, and ${#/} are errors. */
+  if (name[0] == '#' && name[1] == '\0' && check_nullness == 0 &&
+       member (c, "%:=+/") && string[sindex] == RBRACE)
+    {
+      temp = (char *)NULL;
+      goto bad_substitution;
+    }
+
+  /* Indirect expansion begins with a `!'.  A valid indirect expansion is
+     either a variable name, one of the positional parameters or a special
+     variable that expands to one of the positional parameters. */
+  want_indir = *name == '!' &&
+    (legal_variable_starter ((unsigned char)name[1]) || DIGIT (name[1])
+                                       || VALID_INDIR_PARAM (name[1]));
+
+  /* Determine the value of this variable. */
+
+  /* Check for special variables, directly referenced. */
+  if (SPECIAL_VAR (name, want_indir))
+    var_is_special++;
+
+  /* Check for special expansion things, like the length of a parameter */
+  if (*name == '#' && name[1])
+    {
+      /* If we are not pointing at the character just after the
+        closing brace, then we haven't gotten all of the name.
+        Since it begins with a special character, this is a bad
+        substitution.  Also check NAME for validity before trying
+        to go on. */
+      if (string[sindex - 1] != RBRACE || (valid_length_expression (name) == 0))
+       {
+         temp = (char *)NULL;
+         goto bad_substitution;
+       }
+
+      number = parameter_brace_expand_length (name);
+      free (name);
+
+      *indexp = sindex;
+      return ((number < 0) ? &expand_param_error : itos (number));
+    }
+
+  /* ${@} is identical to $@. */
+  if (name[0] == '@' && name[1] == '\0')
+    {
+      if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && quoted_dollar_atp)
+       *quoted_dollar_atp = 1;
+
+      if (contains_dollar_at)
+       *contains_dollar_at = 1;
+    }
+
+  /* Process ${!PREFIX*} expansion. */
+  if (want_indir && string[sindex - 1] == RBRACE &&
+      (string[sindex - 2] == '*' || string[sindex - 2] == '@') &&
+      legal_variable_starter ((unsigned char) name[1]))
+    {
+      char **x;
+      WORD_LIST *xlist;
+
+      temp1 = savestring (name + 1);
+      number = strlen (temp1);
+      temp1[number - 1] = '\0';
+      x = all_variables_matching_prefix (temp1);
+      xlist = strvec_to_word_list (x, 0, 0);
+      if (string[sindex - 2] == '*')
+       temp = string_list_dollar_star (xlist);
+      else
+       {
+         temp = string_list_dollar_at (xlist, quoted);
+         if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && quoted_dollar_atp)
+           *quoted_dollar_atp = 1;
+         if (contains_dollar_at)
+           *contains_dollar_at = 1;
+       }
+      free (x);
+      free (xlist);
+      free (temp1);
+      *indexp = sindex;
+      return (temp);
+    }
+
+#if defined (ARRAY_VARS)      
+  /* Process ${!ARRAY[@]} and ${!ARRAY[*]} expansion. */ /* [ */
+  if (want_indir && string[sindex - 1] == RBRACE &&
+      string[sindex - 2] == ']' && valid_array_reference (name+1))
+    {
+      char *x, *x1;
+
+      temp1 = savestring (name + 1);
+      x = array_variable_name (temp1, &x1, (int *)0);  /* [ */
+      FREE (x);
+      if (ALL_ELEMENT_SUB (x1[0]) && x1[1] == ']')
+       {
+         temp = array_keys (temp1, quoted);
+         if (x1[0] == '@')
+           {
+             if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && quoted_dollar_atp)
+               *quoted_dollar_atp = 1;
+             if (contains_dollar_at)
+               *contains_dollar_at = 1;
+           }       
+
+         free (temp1);
+         *indexp = sindex;
+         return (temp);
+       }
+
+      free (temp1);
+    }
+#endif /* ARRAY_VARS */
+      
+  /* Make sure that NAME is valid before trying to go on. */
+  if (valid_brace_expansion_word (want_indir ? name + 1 : name,
+                                       var_is_special) == 0)
+    {
+      temp = (char *)NULL;
+      goto bad_substitution;
+    }
+
+  if (want_indir)
+    temp = parameter_brace_expand_indir (name + 1, var_is_special, quoted, quoted_dollar_atp, contains_dollar_at);
+  else
+    temp = parameter_brace_expand_word (name, var_is_special, quoted);
+
+#if defined (ARRAY_VARS)
+  if (valid_array_reference (name))
+    chk_atstar (name, quoted, quoted_dollar_atp, contains_dollar_at);
+#endif
+
+  var_is_set = temp != (char *)0;
+  var_is_null = check_nullness && (var_is_set == 0 || *temp == 0);
+
+  /* Get the rest of the stuff inside the braces. */
+  if (c && c != RBRACE)
+    {
+      /* Extract the contents of the ${ ... } expansion
+        according to the Posix.2 rules. */
+      value = extract_dollar_brace_string (string, &sindex, quoted, 0);
+      if (string[sindex] == RBRACE)
+       sindex++;
+      else
+       goto bad_substitution;
+    }
+  else
+    value = (char *)NULL;
+
+  *indexp = sindex;
+
+  /* If this is a substring spec, process it and add the result. */
+  if (want_substring)
+    {
+      temp1 = parameter_brace_substring (name, temp, value, quoted);
+      FREE (name);
+      FREE (value);
+      FREE (temp);
+      return (temp1);
+    }
+  else if (want_patsub)
+    {
+      temp1 = parameter_brace_patsub (name, temp, value, quoted);
+      FREE (name);
+      FREE (value);
+      FREE (temp);
+      return (temp1);
+    }
+
+  /* Do the right thing based on which character ended the variable name. */
+  switch (c)
+    {
+    default:
+    case '\0':
+    bad_substitution:
+      report_error (_("%s: bad substitution"), string ? string : "??");
+      FREE (value);
+      FREE (temp);
+      free (name);
+      return &expand_param_error;
+
+    case RBRACE:
+      if (var_is_set == 0 && unbound_vars_is_error)
+       {
+         err_unboundvar (name);
+         FREE (value);
+         FREE (temp);
+         free (name);
+         last_command_exit_value = EXECUTION_FAILURE;
+         return (interactive_shell ? &expand_param_error : &expand_param_fatal);
+       }
+      break;
+
+    case '#':  /* ${param#[#]pattern} */
+    case '%':  /* ${param%[%]pattern} */
+      if (value == 0 || *value == '\0' || temp == 0 || *temp == '\0')
+       {
+         FREE (value);
+         break;
+       }
+      temp1 = parameter_brace_remove_pattern (name, temp, value, c, quoted);
+      free (temp);
+      free (value);
+      temp = temp1;
+      break;
+
+    case '-':
+    case '=':
+    case '?':
+    case '+':
+      if (var_is_set && var_is_null == 0)
+       {
+         /* If the operator is `+', we don't want the value of the named
+            variable for anything, just the value of the right hand side. */
+
+         if (c == '+')
+           {
+             /* XXX -- if we're double-quoted and the named variable is "$@",
+                       we want to turn off any special handling of "$@" --
+                       we're not using it, so whatever is on the rhs applies. */
+             if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && quoted_dollar_atp)
+               *quoted_dollar_atp = 0;
+             if (contains_dollar_at)
+               *contains_dollar_at = 0;
+
+             FREE (temp);
+             if (value)
+               {
+                 temp = parameter_brace_expand_rhs (name, value, c,
+                                                    quoted,
+                                                    quoted_dollar_atp,
+                                                    contains_dollar_at);
+                 free (value);
+               }
+             else
+               temp = (char *)NULL;
+           }
+         else
+           {
+             FREE (value);
+           }
+         /* Otherwise do nothing; just use the value in TEMP. */
+       }
+      else     /* VAR not set or VAR is NULL. */
+       {
+         FREE (temp);
+         temp = (char *)NULL;
+         if (c == '=' && var_is_special)
+           {
+             report_error (_("$%s: cannot assign in this way"), name);
+             free (name);
+             free (value);
+             return &expand_param_error;
+           }
+         else if (c == '?')
+           {
+             parameter_brace_expand_error (name, value);
+             return (interactive_shell ? &expand_param_error : &expand_param_fatal);
+           }
+         else if (c != '+')
+           {
+             /* XXX -- if we're double-quoted and the named variable is "$@",
+                       we want to turn off any special handling of "$@" --
+                       we're not using it, so whatever is on the rhs applies. */
+             if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && quoted_dollar_atp)
+               *quoted_dollar_atp = 0;
+             if (contains_dollar_at)
+               *contains_dollar_at = 0;
+
+             temp = parameter_brace_expand_rhs (name, value, c, quoted,
+                                                quoted_dollar_atp,
+                                                contains_dollar_at);
+           }
+         free (value);
+       }
+
+      break;
+    }
+  free (name);
+  return (temp);
+}
+
+/* Expand a single ${xxx} expansion.  The braces are optional.  When
+   the braces are used, parameter_brace_expand() does the work,
+   possibly calling param_expand recursively. */
+static char *
+param_expand (string, sindex, quoted, expanded_something,
+             contains_dollar_at, quoted_dollar_at_p, had_quoted_null_p,
+             pflags)
+     char *string;
+     int *sindex, quoted, *expanded_something, *contains_dollar_at;
+     int *quoted_dollar_at_p, *had_quoted_null_p, pflags;
+{
+  char *temp, *temp1, uerror[3];
+  int zindex, t_index, expok;
+  unsigned char c;
+  intmax_t number;
+  SHELL_VAR *var;
+  WORD_LIST *list;
+
+  zindex = *sindex;
+  c = string[++zindex];
+
+  temp = (char *)NULL;
+
+  /* Do simple cases first. Switch on what follows '$'. */
+  switch (c)
+    {
+    /* $0 .. $9? */
+    case '0':
+    case '1':
+    case '2':
+    case '3':
+    case '4':
+    case '5':
+    case '6':
+    case '7':
+    case '8':
+    case '9':
+      temp1 = dollar_vars[TODIGIT (c)];
+      if (unbound_vars_is_error && temp1 == (char *)NULL)
+       {
+         uerror[0] = '$';
+         uerror[1] = c;
+         uerror[2] = '\0';
+         err_unboundvar (uerror);
+         last_command_exit_value = EXECUTION_FAILURE;
+         return (interactive_shell ? &expand_param_error : &expand_param_fatal);
+       }
+#if 1
+      if (temp1)
+       temp = (*temp1 && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)))
+                 ? quote_string (temp1)
+                 : quote_escapes (temp1);
+      else
+       temp = (char *)NULL;
+#else
+      temp = temp1 ? quote_escapes (temp1) : (char *)NULL;
+#endif
+      break;
+
+    /* $$ -- pid of the invoking shell. */
+    case '$':
+      temp = itos (dollar_dollar_pid);
+      break;
+
+    /* $# -- number of positional parameters. */
+    case '#':
+      temp = itos (number_of_args ());
+      break;
+
+    /* $? -- return value of the last synchronous command. */
+    case '?':
+      temp = itos (last_command_exit_value);
+      break;
+
+    /* $- -- flags supplied to the shell on invocation or by `set'. */
+    case '-':
+      temp = which_set_flags ();
+      break;
+
+      /* $! -- Pid of the last asynchronous command. */
+    case '!':
+      /* If no asynchronous pids have been created, expand to nothing.
+        If `set -u' has been executed, and no async processes have
+        been created, this is an expansion error. */
+      if (last_asynchronous_pid == NO_PID)
+       {
+         if (expanded_something)
+           *expanded_something = 0;
+         temp = (char *)NULL;
+         if (unbound_vars_is_error)
+           {
+             uerror[0] = '$';
+             uerror[1] = c;
+             uerror[2] = '\0';
+             err_unboundvar (uerror);
+             last_command_exit_value = EXECUTION_FAILURE;
+             return (interactive_shell ? &expand_param_error : &expand_param_fatal);
+           }
+       }
+      else
+       temp = itos (last_asynchronous_pid);
+      break;
+
+    /* The only difference between this and $@ is when the arg is quoted. */
+    case '*':          /* `$*' */
+      list = list_rest_of_args ();
+
+      /* If there are no command-line arguments, this should just
+        disappear if there are other characters in the expansion,
+        even if it's quoted. */
+      if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && list == 0)
+       temp = (char *)NULL;
+      else if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))
+       {
+         /* If we have "$*" we want to make a string of the positional
+            parameters, separated by the first character of $IFS, and
+            quote the whole string, including the separators.  If IFS
+            is unset, the parameters are separated by ' '; if $IFS is
+            null, the parameters are concatenated. */
+#if 0
+         temp = string_list_dollar_star (list);
+#else
+         temp = (quoted & Q_DOUBLE_QUOTES) ? string_list_dollar_star (list) : string_list (list);
+#endif
+         temp1 = quote_string (temp);
+         free (temp);
+         temp = temp1;
+       }
+      else
+       {
+         /* If the $* is not quoted it is identical to $@ */
+         temp = string_list_dollar_at (list, quoted);
+         if (expand_no_split_dollar_star == 0 && contains_dollar_at)
+           *contains_dollar_at = 1;
+       }
+
+      dispose_words (list);
+      break;
+
+    /* When we have "$@" what we want is "$1" "$2" "$3" ... This
+       means that we have to turn quoting off after we split into
+       the individually quoted arguments so that the final split
+       on the first character of $IFS is still done.  */
+    case '@':          /* `$@' */
+      list = list_rest_of_args ();
+
+      /* We want to flag the fact that we saw this.  We can't turn
+        off quoting entirely, because other characters in the
+        string might need it (consider "\"$@\""), but we need some
+        way to signal that the final split on the first character
+        of $IFS should be done, even though QUOTED is 1. */
+      if (quoted_dollar_at_p && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)))
+       *quoted_dollar_at_p = 1;
+      if (contains_dollar_at)
+       *contains_dollar_at = 1;
+
+      /* We want to separate the positional parameters with the first
+        character of $IFS in case $IFS is something other than a space.
+        We also want to make sure that splitting is done no matter what --
+        according to POSIX.2, this expands to a list of the positional
+        parameters no matter what IFS is set to. */
+      temp = string_list_dollar_at (list, quoted);
+
+      dispose_words (list);
+      break;
+
+    case LBRACE:
+      temp = parameter_brace_expand (string, &zindex, quoted,
+                                    quoted_dollar_at_p,
+                                    contains_dollar_at);
+      if (temp == &expand_param_error || temp == &expand_param_fatal)
+       return (temp);
+
+      /* XXX */
+      /* Quoted nulls should be removed if there is anything else
+        in the string. */
+      /* Note that we saw the quoted null so we can add one back at
+        the end of this function if there are no other characters
+        in the string, discard TEMP, and go on.  The exception to
+        this is when we have "${@}" and $1 is '', since $@ needs
+        special handling. */
+      if (temp && QUOTED_NULL (temp))
+       {
+         if (had_quoted_null_p)
+           *had_quoted_null_p = 1;
+         if (*quoted_dollar_at_p == 0)
+           {
+             free (temp);
+             temp = (char *)NULL;
+           }
+           
+       }
+
+      goto return0;
+
+    /* Do command or arithmetic substitution. */
+    case LPAREN:
+      /* We have to extract the contents of this paren substitution. */
+      t_index = zindex + 1;
+      temp = extract_command_subst (string, &t_index);
+      zindex = t_index;
+
+      /* For Posix.2-style `$(( ))' arithmetic substitution,
+        extract the expression and pass it to the evaluator. */
+      if (temp && *temp == LPAREN)
+       {
+         char *temp2;
+         temp1 = temp + 1;
+         temp2 = savestring (temp1);
+         t_index = strlen (temp2) - 1;
+
+         if (temp2[t_index] != RPAREN)
+           {
+             free (temp2);
+             goto comsub;
+           }
+
+         /* Cut off ending `)' */
+         temp2[t_index] = '\0';
+
+         /* Expand variables found inside the expression. */
+         temp1 = expand_string_if_necessary (temp2, Q_DOUBLE_QUOTES, expand_string);
+         free (temp2);
+
+arithsub:
+         /* No error messages. */
+         this_command_name = (char *)NULL;
+         number = evalexp (temp1, &expok);
+         free (temp);
+         free (temp1);
+         if (expok == 0)
+           {
+             if (interactive_shell == 0 && posixly_correct)
+               {
+                 last_command_exit_value = EXECUTION_FAILURE;
+                 return (&expand_param_fatal);
+               }
+             else
+               return (&expand_param_error);
+           }
+         temp = itos (number);
+         break;
+       }
+
+comsub:
+      if (pflags & PF_NOCOMSUB)
+       /* we need zindex+1 because string[zindex] == RPAREN */
+       temp1 = substring (string, *sindex, zindex+1);
+      else
+       temp1 = command_substitute (temp, quoted);
+      FREE (temp);
+      temp = temp1;
+      break;
+
+    /* Do POSIX.2d9-style arithmetic substitution.  This will probably go
+       away in a future bash release. */
+    case '[':
+      /* Extract the contents of this arithmetic substitution. */
+      t_index = zindex + 1;
+      temp = extract_arithmetic_subst (string, &t_index);
+      zindex = t_index;
+
+       /* Do initial variable expansion. */
+      temp1 = expand_string_if_necessary (temp, Q_DOUBLE_QUOTES, expand_string);
+
+      goto arithsub;
+
+    default:
+      /* Find the variable in VARIABLE_LIST. */
+      temp = (char *)NULL;
+
+      for (t_index = zindex; (c = string[zindex]) && legal_variable_char (c); zindex++)
+       ;
+      temp1 = (zindex > t_index) ? substring (string, t_index, zindex) : (char *)NULL;
+
+      /* If this isn't a variable name, then just output the `$'. */
+      if (temp1 == 0 || *temp1 == '\0')
+       {
+         FREE (temp1);
+         temp = (char *)xmalloc (2);
+         temp[0] = '$';
+         temp[1] = '\0';
+         if (expanded_something)
+           *expanded_something = 0;
+         goto return0;
+       }
+
+      /* If the variable exists, return its value cell. */
+      var = find_variable (temp1);
+
+      if (var && invisible_p (var) == 0 && var_isset (var))
+       {
+#if defined (ARRAY_VARS)
+         if (array_p (var))
+           {
+             temp = array_reference (array_cell (var), 0);
+             if (temp)
+               temp = (*temp && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)))
+                         ? quote_string (temp)
+                         : quote_escapes (temp);
+             else if (unbound_vars_is_error)
+               goto unbound_variable;
+           }
+         else
+#endif
+           {
+             temp = value_cell (var);
+
+             temp = (*temp && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)))
+                       ? quote_string (temp)
+                       : quote_escapes (temp);
+           }
+
+         free (temp1);
+
+         goto return0;
+       }
+
+      temp = (char *)NULL;
+
+unbound_variable:
+      if (unbound_vars_is_error)
+       err_unboundvar (temp1);
+      else
+       {
+         free (temp1);
+         goto return0;
+       }
+
+      free (temp1);
+      last_command_exit_value = EXECUTION_FAILURE;
+      return ((unbound_vars_is_error && interactive_shell == 0)
+               ? &expand_param_fatal
+               : &expand_param_error);
+    }
+
+  if (string[zindex])
+    zindex++;
+
+return0:
+  *sindex = zindex;
+  return (temp);
+}
+
+/* Make a word list which is the result of parameter and variable
+   expansion, command substitution, arithmetic substitution, and
+   quote removal of WORD.  Return a pointer to a WORD_LIST which is
+   the result of the expansion.  If WORD contains a null word, the
+   word list returned is also null.
+
+   QUOTED contains flag values defined in shell.h.
+
+   ISEXP is used to tell expand_word_internal that the word should be
+   treated as the result of an expansion.  This has implications for
+   how IFS characters in the word are treated.
+
+   CONTAINS_DOLLAR_AT and EXPANDED_SOMETHING are return values; when non-null
+   they point to an integer value which receives information about expansion.
+   CONTAINS_DOLLAR_AT gets non-zero if WORD contained "$@", else zero.
+   EXPANDED_SOMETHING get non-zero if WORD contained any parameter expansions,
+   else zero.
+
+   This only does word splitting in the case of $@ expansion.  In that
+   case, we split on ' '. */
+
+/* Values for the local variable quoted_state. */
+#define UNQUOTED        0
+#define PARTIALLY_QUOTED 1
+#define WHOLLY_QUOTED    2
+
+static WORD_LIST *
+expand_word_internal (word, quoted, isexp, contains_dollar_at, expanded_something)
+     WORD_DESC *word;
+     int quoted, isexp;
+     int *contains_dollar_at;
+     int *expanded_something;
+{
+  WORD_LIST *list;
+  WORD_DESC *tword;
+
+  /* The intermediate string that we build while expanding. */
+  char *istring;
+
+  /* The current size of the above object. */
+  int istring_size;
+
+  /* Index into ISTRING. */
+  int istring_index;
+
+  /* Temporary string storage. */
+  char *temp, *temp1;
+
+  /* The text of WORD. */
+  register char *string;
+
+  /* The size of STRING. */
+  size_t string_size;
+
+  /* The index into STRING. */
+  int sindex;
+
+  /* This gets 1 if we see a $@ while quoted. */
+  int quoted_dollar_at;
+
+  /* One of UNQUOTED, PARTIALLY_QUOTED, or WHOLLY_QUOTED, depending on
+     whether WORD contains no quoting characters, a partially quoted
+     string (e.g., "xx"ab), or is fully quoted (e.g., "xxab"). */
+  int quoted_state;
+
+  /* State flags */
+  int had_quoted_null;
+  int has_dollar_at;
+  int tflag;
+
+  int assignoff;               /* If assignment, offset of `=' */
+
+  register unsigned char c;    /* Current character. */
+  int t_index;                 /* For calls to string_extract_xxx. */
+
+  char twochars[2];
+
+  DECLARE_MBSTATE;
+
+  istring = (char *)xmalloc (istring_size = DEFAULT_INITIAL_ARRAY_SIZE);
+  istring[istring_index = 0] = '\0';
+  quoted_dollar_at = had_quoted_null = has_dollar_at = 0;
+  quoted_state = UNQUOTED;
+
+  string = word->word;
+  if (string == 0)
+    goto finished_with_string;
+  string_size = strlen (string);
+
+  if (contains_dollar_at)
+    *contains_dollar_at = 0;
+
+  assignoff = -1;
+
+  /* Begin the expansion. */
+
+  for (sindex = 0; ;)
+    {
+      c = string[sindex];
+
+      /* Case on toplevel character. */
+      switch (c)
+       {
+       case '\0':
+         goto finished_with_string;
+
+       case CTLESC:
+         sindex++;
+#if HANDLE_MULTIBYTE
+         if (MB_CUR_MAX > 1 && string[sindex])
+           {
+             SADD_MBQCHAR_BODY(temp, string, sindex, string_size);
+           }
+         else
+#endif
+           {
+             temp = (char *)xmalloc (3);
+             temp[0] = CTLESC;
+             temp[1] = c = string[sindex];
+             temp[2] = '\0';
+           }
+
+dollar_add_string:
+         if (string[sindex])
+           sindex++;
+
+add_string:
+         if (temp)
+           {
+             istring = sub_append_string (temp, istring, &istring_index, &istring_size);
+             temp = (char *)0;
+           }
+
+         break;
+
+#if defined (PROCESS_SUBSTITUTION)
+         /* Process substitution. */
+       case '<':
+       case '>':
+         {
+           if (string[++sindex] != LPAREN || (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || posixly_correct)
+             {
+               sindex--;       /* add_character: label increments sindex */
+               goto add_character;
+             }
+           else
+             t_index = sindex + 1; /* skip past both '<' and LPAREN */
+
+           temp1 = extract_process_subst (string, (c == '<') ? "<(" : ">(", &t_index); /*))*/
+           sindex = t_index;
+
+           /* If the process substitution specification is `<()', we want to
+              open the pipe for writing in the child and produce output; if
+              it is `>()', we want to open the pipe for reading in the child
+              and consume input. */
+           temp = temp1 ? process_substitute (temp1, (c == '>')) : (char *)0;
+
+           FREE (temp1);
+
+           goto dollar_add_string;
+         }
+#endif /* PROCESS_SUBSTITUTION */
+
+       case '=':
+         if (word->flags & (W_ASSIGNRHS|W_NOTILDE))
+           goto add_character;
+         if ((word->flags & W_ASSIGNMENT) && assignoff == -1 && sindex > 0)
+           assignoff = sindex;
+         if (sindex == assignoff && string[sindex+1] == '~')   /* XXX */
+           word->flags |= W_ITILDE;
+         else if ((word->flags & W_ASSIGNMENT) &&
+                  (posixly_correct == 0 || (word->flags & W_TILDEEXP)) &&
+                  string[sindex+1] == '~')
+           word->flags |= W_ITILDE;
+         goto add_character;
+
+       case ':':
+         if (word->flags & W_NOTILDE)
+           goto add_character;
+         if ((word->flags & (W_ASSIGNMENT|W_ASSIGNRHS)) &&
+                  (posixly_correct == 0 || (word->flags & W_TILDEEXP)) &&
+                  string[sindex+1] == '~')
+           word->flags |= W_ITILDE;
+         goto add_character;
+
+       case '~':
+         /* If the word isn't supposed to be tilde expanded, or we're not
+            at the start of a word or after an unquoted : or = in an
+            assignment statement, we don't do tilde expansion. */
+         if ((word->flags & W_NOTILDE) ||
+             (sindex > 0 && ((word->flags & W_ITILDE) == 0)) ||
+             (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)))
+           {
+             word->flags &= ~W_ITILDE;
+             goto add_character;
+           }
+         temp = tilde_find_word (string + sindex, 1, &t_index);
+         if (temp && *temp && unquoted_tilde_word (temp) == 0)
+           {
+             FREE (temp);
+             temp = 0;
+           }
+           
+         if (word->flags & W_ASSIGNRHS)
+           tflag = 2;
+         else if ((word->flags & W_ASSIGNMENT) &&
+                  (posixly_correct == 0 || (word->flags & W_TILDEEXP)))
+           tflag = 1;
+         else
+           tflag = 0;
+
+         word->flags &= ~W_ITILDE;
+
+         if (temp && *temp && t_index > 0)
+           {
+             temp1 = bash_tilde_expand (temp, tflag);
+             free (temp);
+             temp = temp1;
+             sindex += t_index;
+             goto add_string;
+           }
+         else
+           {
+             FREE (temp);
+             goto add_character;
+           }
+       
+       case '$':
+         if (expanded_something)
+           *expanded_something = 1;
+
+         has_dollar_at = 0;
+         temp = param_expand (string, &sindex, quoted, expanded_something,
+                              &has_dollar_at, &quoted_dollar_at,
+                              &had_quoted_null,
+                              (word->flags & W_NOCOMSUB) ? PF_NOCOMSUB : 0);
+
+         if (temp == &expand_param_error || temp == &expand_param_fatal)
+           {
+             free (string);
+             free (istring);
+             return ((temp == &expand_param_error) ? &expand_word_error
+                                                   : &expand_word_fatal);
+           }
+         if (contains_dollar_at && has_dollar_at)
+           *contains_dollar_at = 1;
+         goto add_string;
+         break;
+
+       case '`':               /* Backquoted command substitution. */
+         {
+           t_index = sindex++;
+
+           if (expanded_something)
+             *expanded_something = 1;
+
+           temp = string_extract (string, &sindex, "`", 0);
+           if (word->flags & W_NOCOMSUB)
+             /* sindex + 1 because string[sindex] == '`' */
+             temp1 = substring (string, t_index, sindex + 1);
+           else
+             {
+               de_backslash (temp);
+               temp1 = command_substitute (temp, quoted);
+             }
+           FREE (temp);
+           temp = temp1;
+           goto dollar_add_string;
+         }
+
+       case '\\':
+         if (string[sindex + 1] == '\n')
+           {
+             sindex += 2;
+             continue;
+           }
+
+         c = string[++sindex];
+
+         if (quoted & Q_HERE_DOCUMENT)
+           tflag = CBSHDOC;
+         else if (quoted & Q_DOUBLE_QUOTES)
+           tflag = CBSDQUOTE;
+         else
+           tflag = 0;
+
+         if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && ((sh_syntaxtab[c] & tflag) == 0))
+           {
+             SCOPY_CHAR_I (twochars, '\\', c, string, sindex, string_size);
+           }
+         else if (c == 0)
+           {
+             c = CTLNUL;
+             sindex--;         /* add_character: label increments sindex */
+             goto add_character;
+           }
+         else
+           {
+             SCOPY_CHAR_I (twochars, CTLESC, c, string, sindex, string_size);
+           }
+
+         sindex++;
+add_twochars:
+         /* BEFORE jumping here, we need to increment sindex if appropriate */
+         RESIZE_MALLOCED_BUFFER (istring, istring_index, 2, istring_size,
+                                 DEFAULT_ARRAY_SIZE);
+         istring[istring_index++] = twochars[0];
+         istring[istring_index++] = twochars[1];
+         istring[istring_index] = '\0';
+
+         break;
+
+       case '"':
+#if 0
+         if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT|Q_PATQUOTE))
+#else
+         if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))
+#endif
+           goto add_character;
+
+         t_index = ++sindex;
+         temp = string_extract_double_quoted (string, &sindex, 0);
+
+         /* If the quotes surrounded the entire string, then the
+            whole word was quoted. */
+         quoted_state = (t_index == 1 && string[sindex] == '\0')
+                           ? WHOLLY_QUOTED
+                           : PARTIALLY_QUOTED;
+
+         if (temp && *temp)
+           {
+             tword = make_word (temp);         /* XXX */
+             free (temp);
+             temp = (char *)NULL;
+
+             has_dollar_at = 0;
+             list = expand_word_internal (tword, Q_DOUBLE_QUOTES, 0, &has_dollar_at, (int *)NULL);
+
+             if (list == &expand_word_error || list == &expand_word_fatal)
+               {
+                 free (istring);
+                 free (string);
+                 /* expand_word_internal has already freed temp_word->word
+                    for us because of the way it prints error messages. */
+                 tword->word = (char *)NULL;
+                 dispose_word (tword);
+                 return list;
+               }
+
+             dispose_word (tword);
+
+             /* "$@" (a double-quoted dollar-at) expands into nothing,
+                not even a NULL word, when there are no positional
+                parameters. */
+             if (list == 0 && has_dollar_at)
+               {
+                 quoted_dollar_at++;
+                 break;
+               }
+
+             /* If we get "$@", we know we have expanded something, so we
+                need to remember it for the final split on $IFS.  This is
+                a special case; it's the only case where a quoted string
+                can expand into more than one word.  It's going to come back
+                from the above call to expand_word_internal as a list with
+                a single word, in which all characters are quoted and
+                separated by blanks.  What we want to do is to turn it back
+                into a list for the next piece of code. */
+             if (list)
+               dequote_list (list);
+
+             if (has_dollar_at)
+               {
+                 quoted_dollar_at++;
+                 if (contains_dollar_at)
+                   *contains_dollar_at = 1;
+                 if (expanded_something)
+                   *expanded_something = 1;
+               }
+           }
+         else
+           {
+             /* What we have is "".  This is a minor optimization. */
+             FREE (temp);
+             list = (WORD_LIST *)NULL;
+           }
+
+         /* The code above *might* return a list (consider the case of "$@",
+            where it returns "$1", "$2", etc.).  We can't throw away the
+            rest of the list, and we have to make sure each word gets added
+            as quoted.  We test on tresult->next:  if it is non-NULL, we
+            quote the whole list, save it to a string with string_list, and
+            add that string. We don't need to quote the results of this
+            (and it would be wrong, since that would quote the separators
+            as well), so we go directly to add_string. */
+         if (list)
+           {
+             if (list->next)
+               {
+                 /* Testing quoted_dollar_at makes sure that "$@" is
+                    split correctly when $IFS does not contain a space. */
+                 temp = quoted_dollar_at
+                               ? string_list_dollar_at (list, Q_DOUBLE_QUOTES)
+                               : string_list (quote_list (list));
+                 dispose_words (list);
+                 goto add_string;
+               }
+             else
+               {
+                 temp = savestring (list->word->word);
+                 dispose_words (list);
+#if 1
+                 /* If the string is not a quoted null string, we want
+                    to remove any embedded unquoted CTLNUL characters.
+                    We do not want to turn quoted null strings back into
+                    the empty string, though.  We do this because we
+                    want to remove any quoted nulls from expansions that
+                    contain other characters.  For example, if we have
+                    x"$*"y or "x$*y" and there are no positional parameters,
+                    the $* should expand into nothing. */
+                 /* HOWEVER, this fails if the string contains a literal
+                    CTLNUL or CTLNUL is contained in the (non-null) expansion
+                    of some variable.  I'm not sure what to do about this
+                    yet.  There has to be some way to indicate the difference
+                    between the two.  An auxiliary data structure might be
+                    necessary. */
+                 if (QUOTED_NULL (temp) == 0)
+                   remove_quoted_nulls (temp); /* XXX */
+#endif
+               }
+           }
+         else
+           temp = (char *)NULL;
+
+         /* We do not want to add quoted nulls to strings that are only
+            partially quoted; we can throw them away. */
+         if (temp == 0 && quoted_state == PARTIALLY_QUOTED)
+           continue;
+
+       add_quoted_string:
+
+         if (temp)
+           {
+             temp1 = temp;
+             temp = quote_string (temp);
+             free (temp1);
+             goto add_string;
+           }
+         else
+           {
+             /* Add NULL arg. */
+             c = CTLNUL;
+             sindex--;         /* add_character: label increments sindex */
+             goto add_character;
+           }
+
+         /* break; */
+
+       case '\'':
+#if 0
+         if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT|Q_PATQUOTE))
+#else
+         if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))
+#endif
+           goto add_character;
+
+         t_index = ++sindex;
+         temp = string_extract_single_quoted (string, &sindex);
+
+         /* If the entire STRING was surrounded by single quotes,
+            then the string is wholly quoted. */
+         quoted_state = (t_index == 1 && string[sindex] == '\0')
+                           ? WHOLLY_QUOTED
+                           : PARTIALLY_QUOTED;
+
+         /* If all we had was '', it is a null expansion. */
+         if (*temp == '\0')
+           {
+             free (temp);
+             temp = (char *)NULL;
+           }
+         else
+           remove_quoted_escapes (temp);       /* ??? */
+
+         /* We do not want to add quoted nulls to strings that are only
+            partially quoted; such nulls are discarded. */
+         if (temp == 0 && (quoted_state == PARTIALLY_QUOTED))
+           continue;
+
+         /* If we have a quoted null expansion, add a quoted NULL to istring. */
+         if (temp == 0)
+           {
+             c = CTLNUL;
+             sindex--;         /* add_character: label increments sindex */
+             goto add_character;
+           }
+         else
+           goto add_quoted_string;
+
+         /* break; */
+
+       default:
+         /* This is the fix for " $@ " */
+         if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || (isexp == 0 && isifs (c)))
+           {
+             if (string[sindex])       /* from old goto dollar_add_string */
+               sindex++;
+             if (c == 0)
+               {
+                 c = CTLNUL;
+                 goto add_character;
+               }
+             else
+               {
+#if HANDLE_MULTIBYTE
+                 if (MB_CUR_MAX > 1)
+                   sindex--;
+
+                 if (MB_CUR_MAX > 1)
+                   {
+                     SADD_MBQCHAR_BODY(temp, string, sindex, string_size);
+                   }
+                 else
+#endif
+                   {
+                     twochars[0] = CTLESC;
+                     twochars[1] = c;
+                     goto add_twochars;
+                   }
+               }
+           }
+
+         SADD_MBCHAR (temp, string, sindex, string_size);
+
+       add_character:
+         RESIZE_MALLOCED_BUFFER (istring, istring_index, 1, istring_size,
+                                 DEFAULT_ARRAY_SIZE);
+         istring[istring_index++] = c;
+         istring[istring_index] = '\0';
+
+         /* Next character. */
+         sindex++;
+       }
+    }
+
+finished_with_string:
+  /* OK, we're ready to return.  If we have a quoted string, and
+     quoted_dollar_at is not set, we do no splitting at all; otherwise
+     we split on ' '.  The routines that call this will handle what to
+     do if nothing has been expanded. */
+
+  /* Partially and wholly quoted strings which expand to the empty
+     string are retained as an empty arguments.  Unquoted strings
+     which expand to the empty string are discarded.  The single
+     exception is the case of expanding "$@" when there are no
+     positional parameters.  In that case, we discard the expansion. */
+
+  /* Because of how the code that handles "" and '' in partially
+     quoted strings works, we need to make ISTRING into a QUOTED_NULL
+     if we saw quoting characters, but the expansion was empty.
+     "" and '' are tossed away before we get to this point when
+     processing partially quoted strings.  This makes "" and $xxx""
+     equivalent when xxx is unset.  We also look to see whether we
+     saw a quoted null from a ${} expansion and add one back if we
+     need to. */
+
+  /* If we expand to nothing and there were no single or double quotes
+     in the word, we throw it away.  Otherwise, we return a NULL word.
+     The single exception is for $@ surrounded by double quotes when
+     there are no positional parameters.  In that case, we also throw
+     the word away. */
+
+  if (*istring == '\0')
+    {
+      if (quoted_dollar_at == 0 && (had_quoted_null || quoted_state == PARTIALLY_QUOTED))
+       {
+         istring[0] = CTLNUL;
+         istring[1] = '\0';
+         tword = make_bare_word (istring);
+         list = make_word_list (tword, (WORD_LIST *)NULL);
+         if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))
+           tword->flags |= W_QUOTED;
+       }
+      /* According to sh, ksh, and Posix.2, if a word expands into nothing
+        and a double-quoted "$@" appears anywhere in it, then the entire
+        word is removed. */
+      else  if (quoted_state == UNQUOTED || quoted_dollar_at)
+       list = (WORD_LIST *)NULL;
+#if 0
+      else
+       {
+         tword = make_bare_word (istring);
+         list = make_word_list (tword, (WORD_LIST *)NULL);
+         if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))
+           tword->flags |= W_QUOTED;
+       }
+#else
+      else
+       list = (WORD_LIST *)NULL;
+#endif
+    }
+  else if (word->flags & W_NOSPLIT)
+    {
+      tword = make_bare_word (istring);
+      list = make_word_list (tword, (WORD_LIST *)NULL);
+      if (word->flags & W_ASSIGNMENT)
+       tword->flags |= W_ASSIGNMENT;   /* XXX */
+      if (word->flags & W_NOGLOB)
+       tword->flags |= W_NOGLOB;       /* XXX */
+      if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))
+       tword->flags |= W_QUOTED;
+    }
+  else
+    {
+      char *ifs_chars;
+
+      ifs_chars = (quoted_dollar_at || has_dollar_at) ? ifs_value : (char *)NULL;
+
+      /* If we have $@, we need to split the results no matter what.  If
+        IFS is unset or NULL, string_list_dollar_at has separated the
+        positional parameters with a space, so we split on space (we have
+        set ifs_chars to " \t\n" above if ifs is unset).  If IFS is set,
+        string_list_dollar_at has separated the positional parameters
+        with the first character of $IFS, so we split on $IFS. */
+      if (has_dollar_at && ifs_chars)
+       list = list_string (istring, *ifs_chars ? ifs_chars : " ", 1);
+      else
+       {
+         tword = make_bare_word (istring);
+         list = make_word_list (tword, (WORD_LIST *)NULL);
+         if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) || (quoted_state == WHOLLY_QUOTED))
+           tword->flags |= W_QUOTED;
+         if (word->flags & W_ASSIGNMENT)
+           tword->flags |= W_ASSIGNMENT;
+         if (word->flags & W_NOGLOB)
+           tword->flags |= W_NOGLOB;
+       }
+    }
+
+  free (istring);
+  return (list);
+}
+
+/* **************************************************************** */
+/*                                                                 */
+/*                Functions for Quote Removal                      */
+/*                                                                 */
+/* **************************************************************** */
+
+/* Perform quote removal on STRING.  If QUOTED > 0, assume we are obeying the
+   backslash quoting rules for within double quotes or a here document. */
+char *
+string_quote_removal (string, quoted)
+     char *string;
+     int quoted;
+{
+  size_t slen;
+  char *r, *result_string, *temp, *send;
+  int sindex, tindex, dquote;
+  unsigned char c;
+  DECLARE_MBSTATE;
+
+  /* The result can be no longer than the original string. */
+  slen = strlen (string);
+  send = string + slen;
+
+  r = result_string = (char *)xmalloc (slen + 1);
+
+  for (dquote = sindex = 0; c = string[sindex];)
+    {
+      switch (c)
+       {
+       case '\\':
+         c = string[++sindex];
+         if (((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || dquote) && (sh_syntaxtab[c] & CBSDQUOTE) == 0)
+           *r++ = '\\';
+         /* FALLTHROUGH */
+
+       default:
+         SCOPY_CHAR_M (r, string, send, sindex);
+         break;
+
+       case '\'':
+         if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || dquote)
+           {
+             *r++ = c;
+             sindex++;
+             break;
+           }
+         tindex = sindex + 1;
+         temp = string_extract_single_quoted (string, &tindex);
+         if (temp)
+           {
+             strcpy (r, temp);
+             r += strlen (r);
+             free (temp);
+           }
+         sindex = tindex;
+         break;
+
+       case '"':
+         dquote = 1 - dquote;
+         sindex++;
+         break;
+       }
+    }
+    *r = '\0';
+    return (result_string);
+}
+
+#if 0
+/* UNUSED */
+/* Perform quote removal on word WORD.  This allocates and returns a new
+   WORD_DESC *. */
+WORD_DESC *
+word_quote_removal (word, quoted)
+     WORD_DESC *word;
+     int quoted;
+{
+  WORD_DESC *w;
+  char *t;
+
+  t = string_quote_removal (word->word, quoted);
+  w = make_bare_word (t);
+  free (t);
+  return (w);
+}
+
+/* Perform quote removal on all words in LIST.  If QUOTED is non-zero,
+   the members of the list are treated as if they are surrounded by
+   double quotes.  Return a new list, or NULL if LIST is NULL. */
+WORD_LIST *
+word_list_quote_removal (list, quoted)
+     WORD_LIST *list;
+     int quoted;
+{
+  WORD_LIST *result, *t, *tresult;
+
+  for (t = list, result = (WORD_LIST *)NULL; t; t = t->next)
+    {
+      tresult = make_word_list (word_quote_removal (t->word, quoted), (WORD_LIST *)NULL);
+      result = (WORD_LIST *) list_append (result, tresult);
+    }
+  return (result);
+}
+#endif
+
+/*******************************************
+ *                                        *
+ *    Functions to perform word splitting  *
+ *                                        *
+ *******************************************/
+
+void
+setifs (v)
+     SHELL_VAR *v;
+{
+  char *t;
+  unsigned char uc;
+
+  ifs_var = v;
+  ifs_value = v ? value_cell (v) : " \t\n";
+
+  /* Should really merge ifs_cmap with sh_syntaxtab.  XXX - doesn't yet
+     handle multibyte chars in IFS */
+  memset (ifs_cmap, '\0', sizeof (ifs_cmap));
+  for (t = ifs_value ; t && *t; t++)
+    {
+      uc = *t;
+      ifs_cmap[uc] = 1;
+    }
+
+#if defined (HANDLE_MULTIBYTE)
+  if (ifs_value == 0)
+    {
+      ifs_firstc[0] = '\0';
+      ifs_firstc_len = 1;
+    }
+  else
+    {
+      size_t ifs_len;
+      ifs_len = strnlen (ifs_value, MB_CUR_MAX);
+      ifs_firstc_len = MBLEN (ifs_value, ifs_len);
+      if (ifs_firstc_len == 1 || ifs_firstc_len == 0 || MB_INVALIDCH (ifs_firstc_len))
+       {
+         ifs_firstc[0] = ifs_value[0];
+         ifs_firstc[1] = '\0';
+         ifs_firstc_len = 1;
+       }
+      else
+       memcpy (ifs_firstc, ifs_value, ifs_firstc_len);
+    }
+#else
+  ifs_firstc = ifs_value ? *ifs_value : 0;
+#endif
+}
+
+char *
+getifs ()
+{
+  return ifs_value;
+}
+
+/* This splits a single word into a WORD LIST on $IFS, but only if the word
+   is not quoted.  list_string () performs quote removal for us, even if we
+   don't do any splitting. */
+WORD_LIST *
+word_split (w, ifs_chars)
+     WORD_DESC *w;
+     char *ifs_chars;
+{
+  WORD_LIST *result;
+
+  if (w)
+    {
+      char *xifs;
+
+      xifs = ((w->flags & W_QUOTED) || ifs_chars == 0) ? "" : ifs_chars;
+      result = list_string (w->word, xifs, w->flags & W_QUOTED);
+    }
+  else
+    result = (WORD_LIST *)NULL;
+
+  return (result);
+}
+
+/* Perform word splitting on LIST and return the RESULT.  It is possible
+   to return (WORD_LIST *)NULL. */
+static WORD_LIST *
+word_list_split (list)
+     WORD_LIST *list;
+{
+  WORD_LIST *result, *t, *tresult, *e;
+
+  for (t = list, result = (WORD_LIST *)NULL; t; t = t->next)
+    {
+      tresult = word_split (t->word, ifs_value);
+#if 0
+      result = (WORD_LIST *) list_append (result, tresult);
+#else
+      if (result == 0)
+        result = e = tresult;
+      else
+       {
+         e->next = tresult;
+         while (e->next)
+           e = e->next;
+       }
+#endif
+    }
+  return (result);
+}
+
+/**************************************************
+ *                                               *
+ *    Functions to expand an entire WORD_LIST    *
+ *                                               *
+ **************************************************/
+
+/* Do any word-expansion-specific cleanup and jump to top_level */
+static void
+exp_jump_to_top_level (v)
+     int v;
+{
+  /* Cleanup code goes here. */
+  expand_no_split_dollar_star = 0;     /* XXX */
+  expanding_redir = 0;
+
+  jump_to_top_level (v);
+}
+
+/* Put NLIST (which is a WORD_LIST * of only one element) at the front of
+   ELIST, and set ELIST to the new list. */
+#define PREPEND_LIST(nlist, elist) \
+       do { nlist->next = elist; elist = nlist; } while (0)
+
+/* Separate out any initial variable assignments from TLIST.  If set -k has
+   been executed, remove all assignment statements from TLIST.  Initial
+   variable assignments and other environment assignments are placed
+   on SUBST_ASSIGN_VARLIST. */
+static WORD_LIST *
+separate_out_assignments (tlist)
+     WORD_LIST *tlist;
+{
+  register WORD_LIST *vp, *lp;
+
+  if (!tlist)
+    return ((WORD_LIST *)NULL);
+
+  if (subst_assign_varlist)
+    dispose_words (subst_assign_varlist);      /* Clean up after previous error */
+
+  subst_assign_varlist = (WORD_LIST *)NULL;
+  vp = lp = tlist;
+
+  /* Separate out variable assignments at the start of the command.
+     Loop invariant: vp->next == lp
+     Loop postcondition:
+       lp = list of words left after assignment statements skipped
+       tlist = original list of words
+  */
+  while (lp && (lp->word->flags & W_ASSIGNMENT))
+    {
+      vp = lp;
+      lp = lp->next;
+    }
+
+  /* If lp != tlist, we have some initial assignment statements.
+     We make SUBST_ASSIGN_VARLIST point to the list of assignment
+     words and TLIST point to the remaining words.  */
+  if (lp != tlist)
+    {
+      subst_assign_varlist = tlist;
+      /* ASSERT(vp->next == lp); */
+      vp->next = (WORD_LIST *)NULL;    /* terminate variable list */
+      tlist = lp;                      /* remainder of word list */
+    }
+
+  /* vp == end of variable list */
+  /* tlist == remainder of original word list without variable assignments */
+  if (!tlist)
+    /* All the words in tlist were assignment statements */
+    return ((WORD_LIST *)NULL);
+
+  /* ASSERT(tlist != NULL); */
+  /* ASSERT((tlist->word->flags & W_ASSIGNMENT) == 0); */
+
+  /* If the -k option is in effect, we need to go through the remaining
+     words, separate out the assignment words, and place them on
+     SUBST_ASSIGN_VARLIST. */
+  if (place_keywords_in_env)
+    {
+      WORD_LIST *tp;   /* tp == running pointer into tlist */
+
+      tp = tlist;
+      lp = tlist->next;
+
+      /* Loop Invariant: tp->next == lp */
+      /* Loop postcondition: tlist == word list without assignment statements */
+      while (lp)
+       {
+         if (lp->word->flags & W_ASSIGNMENT)
+           {
+             /* Found an assignment statement, add this word to end of
+                subst_assign_varlist (vp). */
+             if (!subst_assign_varlist)
+               subst_assign_varlist = vp = lp;
+             else
+               {
+                 vp->next = lp;
+                 vp = lp;
+               }
+
+             /* Remove the word pointed to by LP from TLIST. */
+             tp->next = lp->next;
+             /* ASSERT(vp == lp); */
+             lp->next = (WORD_LIST *)NULL;
+             lp = tp->next;
+           }
+         else
+           {
+             tp = lp;
+             lp = lp->next;
+           }
+       }
+    }
+  return (tlist);
+}
+
+#define WEXP_VARASSIGN 0x001
+#define WEXP_BRACEEXP  0x002
+#define WEXP_TILDEEXP  0x004
+#define WEXP_PARAMEXP  0x008
+#define WEXP_PATHEXP   0x010
+
+/* All of the expansions, including variable assignments at the start of
+   the list. */
+#define WEXP_ALL       (WEXP_VARASSIGN|WEXP_BRACEEXP|WEXP_TILDEEXP|WEXP_PARAMEXP|WEXP_PATHEXP)
+
+/* All of the expansions except variable assignments at the start of
+   the list. */
+#define WEXP_NOVARS    (WEXP_BRACEEXP|WEXP_TILDEEXP|WEXP_PARAMEXP|WEXP_PATHEXP)
+
+/* All of the `shell expansions': brace expansion, tilde expansion, parameter
+   expansion, command substitution, arithmetic expansion, word splitting, and
+   quote removal. */
+#define WEXP_SHELLEXP  (WEXP_BRACEEXP|WEXP_TILDEEXP|WEXP_PARAMEXP)
+
+/* Take the list of words in LIST and do the various substitutions.  Return
+   a new list of words which is the expanded list, and without things like
+   variable assignments. */
+
+WORD_LIST *
+expand_words (list)
+     WORD_LIST *list;
+{
+  return (expand_word_list_internal (list, WEXP_ALL));
+}
+
+/* Same as expand_words (), but doesn't hack variable or environment
+   variables. */
+WORD_LIST *
+expand_words_no_vars (list)
+     WORD_LIST *list;
+{
+  return (expand_word_list_internal (list, WEXP_NOVARS));
+}
+
+WORD_LIST *
+expand_words_shellexp (list)
+     WORD_LIST *list;
+{
+  return (expand_word_list_internal (list, WEXP_SHELLEXP));
+}
+
+static WORD_LIST *
+glob_expand_word_list (tlist, eflags)
+     WORD_LIST *tlist;
+     int eflags;
+{
+  char **glob_array, *temp_string;
+  register int glob_index;
+  WORD_LIST *glob_list, *output_list, *disposables, *next;
+  WORD_DESC *tword;
+
+  output_list = disposables = (WORD_LIST *)NULL;
+  glob_array = (char **)NULL;
+  while (tlist)
+    {
+      /* For each word, either globbing is attempted or the word is
+        added to orig_list.  If globbing succeeds, the results are
+        added to orig_list and the word (tlist) is added to the list
+        of disposable words.  If globbing fails and failed glob
+        expansions are left unchanged (the shell default), the
+        original word is added to orig_list.  If globbing fails and
+        failed glob expansions are removed, the original word is
+        added to the list of disposable words.  orig_list ends up
+        in reverse order and requires a call to REVERSE_LIST to
+        be set right.  After all words are examined, the disposable
+        words are freed. */
+      next = tlist->next;
+
+      /* If the word isn't an assignment and contains an unquoted
+        pattern matching character, then glob it. */
+      if ((tlist->word->flags & W_NOGLOB) == 0 &&
+         unquoted_glob_pattern_p (tlist->word->word))
+       {
+         glob_array = shell_glob_filename (tlist->word->word);
+
+         /* Handle error cases.
+            I don't think we should report errors like "No such file
+            or directory".  However, I would like to report errors
+            like "Read failed". */
+
+         if (glob_array == 0 || GLOB_FAILED (glob_array))
+           {
+             glob_array = (char **)xmalloc (sizeof (char *));
+             glob_array[0] = (char *)NULL;
+           }
+
+         /* Dequote the current word in case we have to use it. */
+         if (glob_array[0] == NULL)
+           {
+             temp_string = dequote_string (tlist->word->word);
+             free (tlist->word->word);
+             tlist->word->word = temp_string;
+           }
+
+         /* Make the array into a word list. */
+         glob_list = (WORD_LIST *)NULL;
+         for (glob_index = 0; glob_array[glob_index]; glob_index++)
+           {
+             tword = make_bare_word (glob_array[glob_index]);
+             tword->flags |= W_GLOBEXP;        /* XXX */
+             glob_list = make_word_list (tword, glob_list);
+           }
+
+         if (glob_list)
+           {
+             output_list = (WORD_LIST *)list_append (glob_list, output_list);
+             PREPEND_LIST (tlist, disposables);
+           }
+         else if (fail_glob_expansion != 0)
+           {
+             report_error (_("no match: %s"), tlist->word->word);
+             jump_to_top_level (DISCARD);
+           }
+         else if (allow_null_glob_expansion == 0)
+           {
+             /* Failed glob expressions are left unchanged. */
+             PREPEND_LIST (tlist, output_list);
+           }
+         else
+           {
+             /* Failed glob expressions are removed. */
+             PREPEND_LIST (tlist, disposables);
+           }
+       }
+      else
+       {
+         /* Dequote the string. */
+         temp_string = dequote_string (tlist->word->word);
+         free (tlist->word->word);
+         tlist->word->word = temp_string;
+         PREPEND_LIST (tlist, output_list);
+       }
+
+      strvec_dispose (glob_array);
+      glob_array = (char **)NULL;
+
+      tlist = next;
+    }
+
+  if (disposables)
+    dispose_words (disposables);
+
+  if (output_list)
+    output_list = REVERSE_LIST (output_list, WORD_LIST *);
+
+  return (output_list);
+}
+
+#if defined (BRACE_EXPANSION)
+static WORD_LIST *
+brace_expand_word_list (tlist, eflags)
+     WORD_LIST *tlist;
+     int eflags;
+{
+  register char **expansions;
+  char *temp_string;
+  WORD_LIST *disposables, *output_list, *next;
+  WORD_DESC *w;
+  int eindex;
+
+  for (disposables = output_list = (WORD_LIST *)NULL; tlist; tlist = next)
+    {
+      next = tlist->next;
+
+      /* Only do brace expansion if the word has a brace character.  If
+        not, just add the word list element to BRACES and continue.  In
+        the common case, at least when running shell scripts, this will
+        degenerate to a bunch of calls to `xstrchr', and then what is
+        basically a reversal of TLIST into BRACES, which is corrected
+        by a call to REVERSE_LIST () on BRACES when the end of TLIST
+        is reached. */
+      if (xstrchr (tlist->word->word, LBRACE))
+       {
+         expansions = brace_expand (tlist->word->word);
+
+         for (eindex = 0; temp_string = expansions[eindex]; eindex++)
+           {
+             w = make_word (temp_string);
+             /* If brace expansion didn't change the word, preserve
+                the flags.  We may want to preserve the flags
+                unconditionally someday -- XXX */
+             if (STREQ (temp_string, tlist->word->word))
+               w->flags = tlist->word->flags;
+             output_list = make_word_list (w, output_list);
+             free (expansions[eindex]);
+           }
+         free (expansions);
+
+         /* Add TLIST to the list of words to be freed after brace
+            expansion has been performed. */
+         PREPEND_LIST (tlist, disposables);
+       }
+      else
+       PREPEND_LIST (tlist, output_list);
+    }
+
+  if (disposables)
+    dispose_words (disposables);
+
+  if (output_list)
+    output_list = REVERSE_LIST (output_list, WORD_LIST *);
+
+  return (output_list);
+}
+#endif
+
+static WORD_LIST *
+shell_expand_word_list (tlist, eflags)
+     WORD_LIST *tlist;
+     int eflags;
+{
+  WORD_LIST *expanded, *orig_list, *new_list, *next, *temp_list;
+  int expanded_something, has_dollar_at;
+  char *temp_string;
+
+  /* We do tilde expansion all the time.  This is what 1003.2 says. */
+  new_list = (WORD_LIST *)NULL;
+  for (orig_list = tlist; tlist; tlist = next)
+    {
+      temp_string = tlist->word->word;
+
+      next = tlist->next;
+
+      /* Posix.2 section 3.6.1 says that tildes following `=' in words
+        which are not assignment statements are not expanded.  If the
+        shell isn't in posix mode, though, we perform tilde expansion
+        on `likely candidate' unquoted assignment statements (flags
+        include W_ASSIGNMENT but not W_QUOTED).  A likely candidate
+        contains an unquoted :~ or =~.  Something to think about: we
+        now have a flag that says  to perform tilde expansion on arguments
+        to `assignment builtins' like declare and export that look like
+        assignment statements.  We now do tilde expansion on such words
+        even in POSIX mode. */
+#if 0
+      if (((tlist->word->flags & (W_ASSIGNMENT|W_QUOTED)) == W_ASSIGNMENT) &&
+            (posixly_correct == 0 || (tlist->word->flags & W_TILDEEXP)) &&
+            (unquoted_substring ("=~", temp_string) || unquoted_substring (":~", temp_string)))
+       {
+         tlist->word->word = bash_tilde_expand (temp_string, 1);
+         free (temp_string);
+       }
+      else if (temp_string[0] == '~')
+       {
+         tlist->word->word = bash_tilde_expand (temp_string, 0);
+         free (temp_string);
+       }
+#endif
+
+      expanded_something = 0;
+      expanded = expand_word_internal
+       (tlist->word, 0, 0, &has_dollar_at, &expanded_something);
+
+      if (expanded == &expand_word_error || expanded == &expand_word_fatal)
+       {
+         /* By convention, each time this error is returned,
+            tlist->word->word has already been freed. */
+         tlist->word->word = (char *)NULL;
+
+         /* Dispose our copy of the original list. */
+         dispose_words (orig_list);
+         /* Dispose the new list we're building. */
+         dispose_words (new_list);
+
+         last_command_exit_value = EXECUTION_FAILURE;
+         if (expanded == &expand_word_error)
+           exp_jump_to_top_level (DISCARD);
+         else
+           exp_jump_to_top_level (FORCE_EOF);
+       }
+
+      /* Don't split words marked W_NOSPLIT. */
+      if (expanded_something && (tlist->word->flags & W_NOSPLIT) == 0)
+       {
+         temp_list = word_list_split (expanded);
+         dispose_words (expanded);
+       }
+      else
+       {
+         /* If no parameter expansion, command substitution, process
+            substitution, or arithmetic substitution took place, then
+            do not do word splitting.  We still have to remove quoted
+            null characters from the result. */
+         word_list_remove_quoted_nulls (expanded);
+         temp_list = expanded;
+       }
+
+      expanded = REVERSE_LIST (temp_list, WORD_LIST *);
+      new_list = (WORD_LIST *)list_append (expanded, new_list);
+    }
+
+  if (orig_list)  
+    dispose_words (orig_list);
+
+  if (new_list)
+    new_list = REVERSE_LIST (new_list, WORD_LIST *);
+
+  return (new_list);
+}
+
+/* The workhorse for expand_words () and expand_words_no_vars ().
+   First arg is LIST, a WORD_LIST of words.
+   Second arg EFLAGS is a flags word controlling which expansions are
+   performed.
+
+   This does all of the substitutions: brace expansion, tilde expansion,
+   parameter expansion, command substitution, arithmetic expansion,
+   process substitution, word splitting, and pathname expansion, according
+   to the bits set in EFLAGS.  Words with the W_QUOTED or W_NOSPLIT bits
+   set, or for which no expansion is done, do not undergo word splitting.
+   Words with the W_NOGLOB bit set do not undergo pathname expansion. */
+static WORD_LIST *
+expand_word_list_internal (list, eflags)
+     WORD_LIST *list;
+     int eflags;
+{
+  WORD_LIST *new_list, *temp_list;
+  int tint;
+
+  if (list == 0)
+    return ((WORD_LIST *)NULL);
+
+  garglist = new_list = copy_word_list (list);
+  if (eflags & WEXP_VARASSIGN)
+    {
+      garglist = new_list = separate_out_assignments (new_list);
+      if (new_list == 0)
+       {
+         if (subst_assign_varlist)
+           {
+             /* All the words were variable assignments, so they are placed
+                into the shell's environment. */
+             for (temp_list = subst_assign_varlist; temp_list; temp_list = temp_list->next)
+               {
+                 this_command_name = (char *)NULL;     /* no arithmetic errors */
+                 tint = do_assignment (temp_list->word->word);
+                 /* Variable assignment errors in non-interactive shells
+                    running in Posix.2 mode cause the shell to exit. */
+                 if (tint == 0)
+                   {
+                     last_command_exit_value = EXECUTION_FAILURE;
+                     if (interactive_shell == 0 && posixly_correct)
+                       exp_jump_to_top_level (FORCE_EOF);
+                     else
+                       exp_jump_to_top_level (DISCARD);
+                   }
+               }
+             dispose_words (subst_assign_varlist);
+             subst_assign_varlist = (WORD_LIST *)NULL;
+           }
+         return ((WORD_LIST *)NULL);
+       }
+    }
+
+  /* Begin expanding the words that remain.  The expansions take place on
+     things that aren't really variable assignments. */
+
+#if defined (BRACE_EXPANSION)
+  /* Do brace expansion on this word if there are any brace characters
+     in the string. */
+  if ((eflags & WEXP_BRACEEXP) && brace_expansion && new_list)
+    new_list = brace_expand_word_list (new_list, eflags);
+#endif /* BRACE_EXPANSION */
+
+  /* Perform the `normal' shell expansions: tilde expansion, parameter and
+     variable substitution, command substitution, arithmetic expansion,
+     and word splitting. */
+  new_list = shell_expand_word_list (new_list, eflags);
+
+  /* Okay, we're almost done.  Now let's just do some filename
+     globbing. */
+  if (new_list)
+    {
+      if ((eflags & WEXP_PATHEXP) && disallow_filename_globbing == 0)
+       /* Glob expand the word list unless globbing has been disabled. */
+       new_list = glob_expand_word_list (new_list, eflags);
+      else
+       /* Dequote the words, because we're not performing globbing. */
+       new_list = dequote_list (new_list);
+    }
+
+  if ((eflags & WEXP_VARASSIGN) && subst_assign_varlist)
+    {
+      sh_assign_func_t *assign_func;
+
+      /* If the remainder of the words expand to nothing, Posix.2 requires
+        that the variable and environment assignments affect the shell's
+        environment. */
+      assign_func = new_list ? assign_in_env : do_assignment;
+      tempenv_assign_error = 0;
+
+      for (temp_list = subst_assign_varlist; temp_list; temp_list = temp_list->next)
+       {
+         this_command_name = (char *)NULL;
+         tint = (*assign_func) (temp_list->word->word);
+         /* Variable assignment errors in non-interactive shells running
+            in Posix.2 mode cause the shell to exit. */
+         if (tint == 0)
+           {
+             if (assign_func == do_assignment)
+               {
+                 last_command_exit_value = EXECUTION_FAILURE;
+                 if (interactive_shell == 0 && posixly_correct)
+                   exp_jump_to_top_level (FORCE_EOF);
+                 else
+                   exp_jump_to_top_level (DISCARD);
+               }
+             else
+               tempenv_assign_error++;
+           }
+       }
+
+      dispose_words (subst_assign_varlist);
+      subst_assign_varlist = (WORD_LIST *)NULL;
+    }
+
+#if 0
+  tint = list_length (new_list) + 1;
+  RESIZE_MALLOCED_BUFFER (glob_argv_flags, 0, tint, glob_argv_flags_size, 16);
+  for (tint = 0, temp_list = new_list; temp_list; temp_list = temp_list->next)
+    glob_argv_flags[tint++] = (temp_list->word->flags & W_GLOBEXP) ? '1' : '0';
+  glob_argv_flags[tint] = '\0';
+#endif
+
+  return (new_list);
+}
index d4c102493971fa6cd72749d307fdbc22272b46a0..49de9af70e32a90755065464c1faaa495e352294 100644 (file)
--- a/subst.c~
+++ b/subst.c~
@@ -1528,7 +1528,7 @@ split_at_delims (string, slen, delims, sentinel, nwp, cwp)
          mblength = MBRLEN (delims + i, slength, &state);
          if (MB_INVALIDCH (mblength))
            state = state_bak;
-         else if (mblength != 1)
+         else if (mblength > 1)
            {
              memcpy (d2 + ts, delims + i, mblength);
              ts += mblength;
@@ -1793,6 +1793,8 @@ string_list_dollar_at (list, quoted)
          sep[0] = *ifs;
          sep[1] = '\0';
        }
+      else if (mblength == 0)
+       sep[0] = '\0';
       else
        {
          memcpy (sep, ifs, mblength);
@@ -2161,14 +2163,7 @@ do_assignment_internal (string, expand)
 
       /* Perform tilde expansion. */
       if (expand && temp[0])
-       {
-         temp = (xstrchr (temp, '~') && unquoted_member ('~', temp))
-                       ? bash_tilde_expand (temp, 1)
-                       : savestring (temp);
-
-         value = expand_string_if_necessary (temp, 0, expand_string_unsplit);
-         free (temp);
-       }
+       value = expand_string_if_necessary (temp, 0, expand_string_assignment);
       else
        value = savestring (temp);
     }
@@ -2336,9 +2331,6 @@ pos_params (string, start, end, quoted)
 
   t->next = (WORD_LIST *)NULL;
   if (string[0] == '*')
-#if 0
-    ret = (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ? string_list_dollar_star (quote_list (h)) : string_list (h);
-#else
     {
       if (quoted & Q_DOUBLE_QUOTES)
        ret = string_list_dollar_star (quote_list (h));
@@ -2347,7 +2339,6 @@ pos_params (string, start, end, quoted)
       else
        ret = string_list (h);
     }
-#endif
   else
     ret = string_list ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ? quote_list (h) : h);
   if (t != params)
@@ -2364,9 +2355,9 @@ pos_params (string, start, end, quoted)
 /******************************************************************/
 
 #if defined (PROCESS_SUBSTITUTION)
-#define EXP_CHAR(s) (s == '$' || s == '`' || s == '<' || s == '>' || s == CTLESC)
+#define EXP_CHAR(s) (s == '$' || s == '`' || s == '<' || s == '>' || s == CTLESC || s == '~')
 #else
-#define EXP_CHAR(s) (s == '$' || s == '`' || s == CTLESC)
+#define EXP_CHAR(s) (s == '$' || s == '`' || s == CTLESC || s == '~')
 #endif
 
 /* If there are any characters in STRING that require full expansion,
@@ -2493,13 +2484,6 @@ cond_expand_word (w, special)
   if (w->word == 0 || w->word[0] == '\0')
     return ((char *)NULL);
 
-  if (xstrchr (w->word, '~') && unquoted_member ('~', w->word))
-    {
-      p = bash_tilde_expand (w->word, 0);
-      free (w->word);
-      w->word = p;
-    }
-
   l = call_expand_word_internal (w, 0, 0, (int *)0, (int *)0);
   if (l)
     {
@@ -2599,6 +2583,36 @@ expand_string_unsplit (string, quoted)
   return (value);
 }
 
+/* Expand the rhs of an assignment statement */
+WORD_LIST *
+expand_string_assignment (string, quoted)
+     char *string;
+     int quoted;
+{
+  WORD_DESC td;
+  WORD_LIST *value;
+
+  if (string == 0 || *string == '\0')
+    return ((WORD_LIST *)NULL);
+
+  expand_no_split_dollar_star = 1;
+
+  td.flags = W_ASSIGNRHS;
+  td.word = savestring (string);
+  value = call_expand_word_internal (&td, quoted, 0, (int *)NULL, (int *)NULL);
+  FREE (td.word);
+
+  expand_no_split_dollar_star = 0;
+
+  if (value)
+    {
+      if (value->word)
+       remove_quoted_nulls (value->word->word);
+      dequote_list (value);
+    }
+  return (value);
+}
+
 
 /* Expand one of the PS? prompt strings. This is a sort of combination of
    expand_string_unsplit and expand_string_internal, but returns the
@@ -3555,8 +3569,6 @@ getpattern (value, quoted, expandpat)
   WORD_LIST *l;
   int i;
 
-  tword = xstrchr (value, '~') ? bash_tilde_expand (value, 0) : savestring (value);
-
   /* There is a problem here:  how to handle single or double quotes in the
      pattern string when the whole expression is between double quotes?
      POSIX.2 says that enclosing double quotes do not cause the pattern to
@@ -3574,11 +3586,10 @@ getpattern (value, quoted, expandpat)
 
   /* expand_string_for_rhs () leaves WORD quoted and does not perform
      word splitting. */
-  l = *tword ? expand_string_for_rhs (tword,
+  l = *value ? expand_string_for_rhs (value,
                                      (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ? Q_PATQUOTE : quoted,
                                      (int *)NULL, (int *)NULL)
             : (WORD_LIST *)0;
-  free (tword);
   pat = string_list (l);
   dispose_words (l);
   if (pat)
@@ -3626,11 +3637,7 @@ list_remove_pattern (list, pattern, patspec, itype, quoted)
 
   l = REVERSE_LIST (new, WORD_LIST *);
   if (itype == '*')
-#if 0
-    tword = (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ? string_list_dollar_star (l) : string_list (l);
-#else
     tword = (quoted & Q_DOUBLE_QUOTES) ? string_list_dollar_star (l) : string_list (l);
-#endif
   else
     tword = string_list ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) ? quote_list (l) : l);
 
@@ -4707,24 +4714,16 @@ parameter_brace_expand_rhs (name, value, c, quoted, qdollaratp, hasdollarat)
   char *t, *t1, *temp;
   int hasdol;
 
-  /* XXX - Should we tilde expand in an assignment context if C is `='? */
-  if (*value == '~')
-    temp = bash_tilde_expand (value, 0);
-  else if (xstrchr (value, '~')  && unquoted_substring ("=~", value))
-    temp = bash_tilde_expand (value, 1);
-  else
-    temp = savestring (value);
-
   /* If the entire expression is between double quotes, we want to treat
      the value as a double-quoted string, with the exception that we strip
      embedded unescaped double quotes. */
-  if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && *temp)
+  if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && *value)
     {
       hasdol = 0;
-      t = string_extract_double_quoted (temp, &hasdol, 1);
-      free (temp);
-      temp = t;
+      temp = string_extract_double_quoted (value, &hasdol, 1);
     }
+  else
+    temp = value;
 
   hasdol = 0;
   /* XXX was 0 not quoted */
@@ -4732,7 +4731,8 @@ parameter_brace_expand_rhs (name, value, c, quoted, qdollaratp, hasdollarat)
            : (WORD_LIST *)0;
   if (hasdollarat)
     *hasdollarat = hasdol || (l && l->next);
-  free (temp);
+  if (temp != value)
+    free (temp);
   if (l)
     {
       /* The expansion of TEMP returned something.  We need to treat things
@@ -4792,15 +4792,7 @@ parameter_brace_expand_error (name, value)
 
   if (value && *value)
     {
-      if (*value == '~')
-       temp = bash_tilde_expand (value, 0);
-      else if (xstrchr (value, '~')  && unquoted_substring ("=~", value))
-       temp = bash_tilde_expand (value, 1);
-      else
-       temp = savestring (value);
-
-      l = expand_string (temp, 0);
-      FREE (temp);
+      l = expand_string (value, 0);
       temp =  string_list (l);
       report_error ("%s: %s", name, temp ? temp : ""); /* XXX was value not "" */
       FREE (temp);
@@ -5454,16 +5446,9 @@ parameter_brace_patsub (varname, value, patsub, quoted)
   if (rep && *rep == '\0')
     rep = (char *)NULL;
 
-#if 0
-  /* Expand PAT and REP for command, variable and parameter, arithmetic,
-     and process substitution.  Also perform quote removal.  Do not
-     perform word splitting or filename generation. */
-  pat = expand_string_if_necessary (lpatsub, (quoted & ~Q_DOUBLE_QUOTES), expand_string_unsplit);
-#else
   /* Perform the same expansions on the pattern as performed by the
      pattern removal expansions. */
   pat = getpattern (lpatsub, quoted, 1);
-#endif
 
   if (rep)
     {
@@ -6029,11 +6014,7 @@ param_expand (string, sindex, quoted, expanded_something,
             quote the whole string, including the separators.  If IFS
             is unset, the parameters are separated by ' '; if $IFS is
             null, the parameters are concatenated. */
-#if 0
-         temp = string_list_dollar_star (list);
-#else
          temp = (quoted & Q_DOUBLE_QUOTES) ? string_list_dollar_star (list) : string_list (list);
-#endif
          temp1 = quote_string (temp);
          free (temp);
          temp = temp1;
@@ -6319,10 +6300,13 @@ expand_word_internal (word, quoted, isexp, contains_dollar_at, expanded_somethin
      string (e.g., "xx"ab), or is fully quoted (e.g., "xxab"). */
   int quoted_state;
 
+  /* State flags */
   int had_quoted_null;
   int has_dollar_at;
   int tflag;
 
+  int assignoff;               /* If assignment, offset of `=' */
+
   register unsigned char c;    /* Current character. */
   int t_index;                 /* For calls to string_extract_xxx. */
 
@@ -6343,6 +6327,8 @@ expand_word_internal (word, quoted, isexp, contains_dollar_at, expanded_somethin
   if (contains_dollar_at)
     *contains_dollar_at = 0;
 
+  assignoff = -1;
+
   /* Begin the expansion. */
 
   for (sindex = 0; ;)
@@ -6412,6 +6398,81 @@ add_string:
          }
 #endif /* PROCESS_SUBSTITUTION */
 
+       case '=':
+         /* Posix.2 section 3.6.1 says that tildes following `=' in words
+            which are not assignment statements are not expanded.  If the
+            shell isn't in posix mode, though, we perform tilde expansion
+            on `likely candidate' unquoted assignment statements (flags
+            include W_ASSIGNMENT but not W_QUOTED).  A likely candidate
+            contains an unquoted :~ or =~.  Something to think about: we
+            now have a flag that says  to perform tilde expansion on arguments
+            to `assignment builtins' like declare and export that look like
+            assignment statements.  We now do tilde expansion on such words
+            even in POSIX mode. */     
+         if (word->flags & (W_ASSIGNRHS|W_NOTILDE))
+           goto add_character;
+         /* If we're not in posix mode or forcing assignment-statement tilde
+            expansion, note where the `=' appears in the word and prepare to
+            do tilde expansion following the first `='. */
+         if ((word->flags & W_ASSIGNMENT) &&
+             (posixly_correct == 0 || (word->flags & W_TILDEEXP)) &&
+             assignoff == -1 && sindex > 0)
+           assignoff = sindex;
+         if (sindex == assignoff && string[sindex+1] == '~')   /* XXX */
+           word->flags |= W_ITILDE;
+         else if ((word->flags & W_ASSIGNMENT) &&
+                  (posixly_correct == 0 || (word->flags & W_TILDEEXP)) &&
+                  string[sindex+1] == '~')
+           word->flags |= W_ITILDE;
+         goto add_character;
+
+       case ':':
+         if (word->flags & W_NOTILDE)
+           goto add_character;
+         if ((word->flags & (W_ASSIGNMENT|W_ASSIGNRHS)) &&
+                  (posixly_correct == 0 || (word->flags & W_TILDEEXP)) &&
+                  string[sindex+1] == '~')
+           word->flags |= W_ITILDE;
+         goto add_character;
+
+       case '~':
+         /* If the word isn't supposed to be tilde expanded, or we're not
+            at the start of a word or after an unquoted : or = in an
+            assignment statement, we don't do tilde expansion. */
+         if ((word->flags & W_NOTILDE) ||
+             (sindex > 0 && ((word->flags & W_ITILDE) == 0)) ||
+             (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)))
+           {
+             word->flags &= ~W_ITILDE;
+             goto add_character;
+           }
+
+         if (word->flags & W_ASSIGNRHS)
+           tflag = 2;
+         else if ((word->flags & W_ASSIGNMENT) &&
+                  (posixly_correct == 0 || (word->flags & W_TILDEEXP)))
+           tflag = 1;
+         else
+           tflag = 0;
+
+         temp = bash_tilde_find_word (string + sindex, tflag, &t_index);
+           
+         word->flags &= ~W_ITILDE;
+
+         if (temp && *temp && t_index > 0)
+           {
+             temp1 = bash_tilde_expand (temp, tflag);
+             free (temp);
+             temp = temp1;
+             sindex += t_index;
+             goto add_string;
+           }
+         else
+           {
+             FREE (temp);
+             goto add_character;
+           }
+       
        case '$':
          if (expanded_something)
            *expanded_something = 1;
@@ -6498,11 +6559,7 @@ add_twochars:
          break;
 
        case '"':
-#if 0
-         if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT|Q_PATQUOTE))
-#else
          if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))
-#endif
            goto add_character;
 
          t_index = ++sindex;
@@ -6644,11 +6701,7 @@ add_twochars:
          /* break; */
 
        case '\'':
-#if 0
-         if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT|Q_PATQUOTE))
-#else
          if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))
-#endif
            goto add_character;
 
          t_index = ++sindex;
@@ -6968,10 +7021,11 @@ setifs (v)
       size_t ifs_len;
       ifs_len = strnlen (ifs_value, MB_CUR_MAX);
       ifs_firstc_len = MBLEN (ifs_value, ifs_len);
-      if (ifs_firstc_len == 1 || MB_INVALIDCH (ifs_firstc_len))
+      if (ifs_firstc_len == 1 || ifs_firstc_len == 0 || MB_INVALIDCH (ifs_firstc_len))
        {
          ifs_firstc[0] = ifs_value[0];
          ifs_firstc[1] = '\0';
+         ifs_firstc_len = 1;
        }
       else
        memcpy (ifs_firstc, ifs_value, ifs_firstc_len);
@@ -7381,29 +7435,6 @@ shell_expand_word_list (tlist, eflags)
 
       next = tlist->next;
 
-      /* Posix.2 section 3.6.1 says that tildes following `=' in words
-        which are not assignment statements are not expanded.  If the
-        shell isn't in posix mode, though, we perform tilde expansion
-        on `likely candidate' unquoted assignment statements (flags
-        include W_ASSIGNMENT but not W_QUOTED).  A likely candidate
-        contains an unquoted :~ or =~.  Something to think about: we
-        now have a flag that says  to perform tilde expansion on arguments
-        to `assignment builtins' like declare and export that look like
-        assignment statements.  We now do tilde expansion on such words
-        even in POSIX mode. */
-      if (((tlist->word->flags & (W_ASSIGNMENT|W_QUOTED)) == W_ASSIGNMENT) &&
-            (posixly_correct == 0 || (tlist->word->flags & W_TILDEEXP)) &&
-            (unquoted_substring ("=~", temp_string) || unquoted_substring (":~", temp_string)))
-       {
-         tlist->word->word = bash_tilde_expand (temp_string, 1);
-         free (temp_string);
-       }
-      else if (temp_string[0] == '~')
-       {
-         tlist->word->word = bash_tilde_expand (temp_string, 0);
-         free (temp_string);
-       }
-
       expanded_something = 0;
       expanded = expand_word_internal
        (tlist->word, 0, 0, &has_dollar_at, &expanded_something);
diff --git a/subst.h b/subst.h
index c725df501de438ea2221f2b853b4d6bf28e910b1..7484743dee4eae75799e2133f48e891919faac43 100644 (file)
--- a/subst.h
+++ b/subst.h
@@ -126,6 +126,9 @@ extern int number_of_args __P((void));
    takes care of quote removal. */
 extern WORD_LIST *expand_string_unsplit __P((char *, int));
 
+/* Expand the rhs of an assignment statement. */
+extern WORD_LIST *expand_string_assignment __P((char *, int));
+
 /* Expand a prompt string. */
 extern WORD_LIST *expand_prompt_string __P((char *, int));
 
index 0acfdd7c6a4a4f5eb46e801c2abd9ac26efcb361..c725df501de438ea2221f2b853b4d6bf28e910b1 100644 (file)
--- a/subst.h~
+++ b/subst.h~
@@ -231,7 +231,13 @@ extern WORD_LIST *split_at_delims __P((char *, int, char *, int, int *, int *));
 extern SHELL_VAR *ifs_var;
 extern char *ifs_value;
 extern unsigned char ifs_cmap[];
+
+#if defined (HANDLE_MULTIBYTE)
+extern unsigned char ifs_firstc[];
+extern size_t ifs_firstc_len;
+#else
 extern unsigned char ifs_firstc;
+#endif
 
 /* Evaluates to 1 if C is a character in $IFS. */
 #define isifs(c)       (ifs_cmap[(unsigned char)(c)] != 0)
index 9d8e18534c79962696bfcedb62e45cd1ec19e3d8..ac987fbdd5035c2cff45093426c6715f039cb6b3 100644 (file)
@@ -95,6 +95,6 @@ trap: usage: trap [-lp] [arg signal_spec ...]
 ./errors.tests: line 246: kill: -s: option requires an argument
 ./errors.tests: line 248: kill: S: invalid signal specification
 ./errors.tests: line 250: kill: `': not a pid or valid job spec
-kill: usage: kill [-s sigspec | -n signum | -sigspec] [pid | job]... or kill -l [sigspec]
+kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
 ./errors.tests: line 255: set: trackall: invalid option name
 ./errors.tests: line 262: `!!': not a valid identifier
index 1f3487be2f25648ac7d12dc8ddb678c68e9d1c85..9d8e18534c79962696bfcedb62e45cd1ec19e3d8 100644 (file)
@@ -85,7 +85,7 @@ command: usage: command [-pVv] command [arg ...]
 ./errors.tests: line 213: /bin/sh + 0: syntax error: operand expected (error token is "/bin/sh + 0")
 ./errors.tests: line 216: trap: NOSIG: invalid signal specification
 ./errors.tests: line 219: trap: -s: invalid option
-trap: usage: trap [-lp] [[arg] signal_spec ...]
+trap: usage: trap [-lp] [arg signal_spec ...]
 ./errors.tests: line 225: return: can only `return' from a function or sourced script
 ./errors.tests: line 229: break: 0: loop count out of range
 ./errors.tests: line 233: continue: 0: loop count out of range
index a98585656810077ce6b1698acc95a1f31acc6b31..91a375cbc1d0c408891d1c9eeea5e008a1d46229 100644 (file)
@@ -28,7 +28,7 @@ argv[3] = <d>
 argv[4] = <e>
 argv[5] = <f>
 argv[1] = </usr/homes/chet>
-argv[1] = </usr/homes/chet>
+argv[1] = <~>
 argv[1] = <~>
 argv[1] = <\~>
 argv[1] = <\ \~>
@@ -108,7 +108,7 @@ argv[3] = <c>
 argv[4] = <d>
 argv[5] = <e>
 argv[6] = <f>
-./more-exp.tests: line 269: abc=def: command not found
+./more-exp.tests: line 272: abc=def: command not found
 argv[1] = <a b c d e>
 argv[1] = <a>
 argv[2] = <b>
@@ -184,13 +184,13 @@ argv[1] = <1>
 argv[1] = <5>
 argv[1] = <5>
 argv[1] = <0>
-./more-exp.tests: line 420: ${#:}: bad substitution
-./more-exp.tests: line 422: ${#/}: bad substitution
-./more-exp.tests: line 424: ${#%}: bad substitution
-./more-exp.tests: line 426: ${#=}: bad substitution
-./more-exp.tests: line 428: ${#+}: bad substitution
-./more-exp.tests: line 430: ${#1xyz}: bad substitution
-./more-exp.tests: line 433: #: %: syntax error: operand expected (error token is "%")
+./more-exp.tests: line 423: ${#:}: bad substitution
+./more-exp.tests: line 425: ${#/}: bad substitution
+./more-exp.tests: line 427: ${#%}: bad substitution
+./more-exp.tests: line 429: ${#=}: bad substitution
+./more-exp.tests: line 431: ${#+}: bad substitution
+./more-exp.tests: line 433: ${#1xyz}: bad substitution
+./more-exp.tests: line 436: #: %: syntax error: operand expected (error token is "%")
 argv[1] = <0>
 argv[1] = <a+b>
 argv[1] = <+>
diff --git a/tests/more-exp.right~ b/tests/more-exp.right~
new file mode 100644 (file)
index 0000000..3c22fbb
--- /dev/null
@@ -0,0 +1,214 @@
+argv[1] = <aaa bbb ccc>
+argv[1] = <aaa bbb ccc>
+argv[1] = <baz:bar>
+argv[1] = <baz:bar>
+argv[1] = <aaa bbb ccc>
+argv[1] = <bar>
+argv[1] = <bar>
+argv[1] = <bar>
+argv[1] = <abcde>
+argv[1] = <abcde>
+argv[1] = <xyz>
+argv[1] = <a b>
+argv[2] = <c>
+argv[3] = <d>
+argv[4] = <e>
+argv[5] = <f>
+argv[1] = <a b>
+argv[1] = <a>
+argv[2] = <b>
+argv[1] = <a b>
+argv[2] = <c>
+argv[3] = <d>
+argv[4] = <e>
+argv[5] = <f>
+argv[1] = <a b>
+argv[2] = <c>
+argv[3] = <d>
+argv[4] = <e>
+argv[5] = <f>
+argv[1] = </usr/homes/chet>
+argv[1] = <~>
+argv[1] = <~>
+argv[1] = <\~>
+argv[1] = <\ \~>
+argv[1] = <\ \ \~>
+argv[1] = </usr/homes/chet>
+argv[1] = </usr/homes/chet>
+argv[1] = </usr/homes/chet>
+argv[1] = <$HOME>
+argv[1] = <\ $HOME>
+argv[1] = <\ \ $HOME>
+argv[1] = <'bar'>
+argv[1] = <'bar'>
+argv[1] = <*@>
+argv[1] = <*@>
+argv[1] = <*@>
+argv[1] = <*@>
+argv[1] = <*@*>
+argv[1] = <*@*>
+argv[1] = <*@*>
+argv[1] = <*@*>
+argv[1] = <abcd>
+argv[1] = <efghijkl>
+argv[1] = <4>
+argv[2] = <2>
+argv[1] = <1>
+argv[1] = <bar>
+argv[1] = <2>
+argv[1] = <bar>
+argv[1] = <2>
+argv[1] = <4>
+argv[1] = <--\>
+argv[2] = <-->
+argv[1] = <--\^J-->
+argv[1] = <--+\>
+argv[2] = <+-->
+argv[1] = <--+\^J+-->
+argv[1] = <-+\>
+argv[2] = <+-\>
+argv[3] = <->
+argv[1] = <xy>
+argv[1] = <xy>
+argv[1] = <xy>
+argv[1] = <xy>
+argv[1] = <xy>
+argv[1] = <xy>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <xy>
+argv[1] = <xy>
+argv[1] = <xy>
+argv[1] = <xy>
+argv[1] = <xy>
+argv[1] = <xy>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <x>
+argv[1] = <x>
+argv[1] = <>
+argv[1] = <x>
+argv[1] = <x>
+argv[1] = <x>
+argv[1] = <x>
+argv[1] = <^?>
+argv[1] = <^?>
+argv[1] = <x>
+argv[1] = <x>
+argv[1] = <>
+argv[2] = <abd>
+argv[3] = <x>
+argv[1] = <>
+argv[2] = <abd>
+argv[3] = <>
+argv[1] = <a,b,c,d,e,f>
+argv[1] = <a>
+argv[2] = <b>
+argv[3] = <c>
+argv[4] = <d>
+argv[5] = <e>
+argv[6] = <f>
+./more-exp.tests: line 272: abc=def: command not found
+argv[1] = <a b c d e>
+argv[1] = <a>
+argv[2] = <b>
+argv[3] = <c>
+argv[4] = <d>
+argv[5] = <e>
+argv[1] = <foo)>
+argv[1] = <a>
+argv[1] = <\a>
+argv[1] = <\a>
+argv[1] = <\a>
+argv[1] = <\a>
+argv[1] = <\\a>
+argv[1] = <a>
+argv[1] = <\a>
+argv[1] = <\a>
+argv[1] = <\a>
+argv[1] = <\a>
+argv[1] = <\\a>
+argv[1] = <a>
+argv[1] = <a>
+argv[1] = <\a>
+argv[1] = <\a>
+argv[1] = <\a>
+argv[1] = <\a>
+argv[1] = <$a>
+argv[1] = <\foo>
+argv[1] = <$a>
+argv[1] = <\foo>
+argv[1] = <\$a>
+argv[1] = <\\$a>
+argv[1] = <a>
+argv[1] = <a>
+argv[1] = <\a>
+argv[1] = <\a>
+argv[1] = <\a>
+argv[1] = <\a>
+argv[1] = <G>
+argv[2] = <{>
+argv[3] = <I>
+argv[4] = <K>
+argv[5] = <}>
+argv[1] = <hi>
+argv[2] = <K>
+argv[3] = <}>
+argv[1] = <a*>
+Number of args: 0
+<${*-x}>: <x>
+<${@-x}>: <x>
+Number of args: 1
+<${*-x}>: <>
+<${@-x}>: <>
+Number of args: 2
+<${*-x}>: < >
+<${@-x}>: < >
+argv[1] = <5>
+argv[1] = <5>
+argv[1] = <5>
+argv[1] = <5>
+argv[1] = <5>
+argv[1] = <0>
+argv[1] = <0>
+argv[1] = <0>
+argv[1] = <0>
+argv[1] = <0>
+argv[1] = <0>
+argv[1] = <posparams>
+argv[1] = <posparams>
+argv[1] = <2>
+argv[1] = <0>
+argv[1] = <0>
+argv[1] = <1>
+argv[1] = <5>
+argv[1] = <5>
+argv[1] = <0>
+./more-exp.tests: line 420: ${#:}: bad substitution
+./more-exp.tests: line 422: ${#/}: bad substitution
+./more-exp.tests: line 424: ${#%}: bad substitution
+./more-exp.tests: line 426: ${#=}: bad substitution
+./more-exp.tests: line 428: ${#+}: bad substitution
+./more-exp.tests: line 430: ${#1xyz}: bad substitution
+./more-exp.tests: line 433: #: %: syntax error: operand expected (error token is "%")
+argv[1] = <0>
+argv[1] = <a+b>
+argv[1] = <+>
+argv[1] = <+>
+argv[1] = <+>
+argv[1] = <G { I >
+argv[2] = <K>
+argv[3] = <}>
+argv[1] = <hi>
+argv[2] = <K>
+argv[3] = <}>
+argv[1] = <xxx>
+argv[2] = <yyy>
+1
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <:a:>
+argv[1] = <:b:>
+argv[1] = <>
+argv[1] = <>
index 6c821a57257082d0bbdd322b75fdda418cd32bd8..4a3cb7f5499b7c209734177ee234ca02780bd874 100644 (file)
@@ -65,7 +65,10 @@ HOME=/usr/homes/chet
 somevar=
 expect "<$HOME>"
 recho ${somevar:-~}
-expect "<$HOME>"
+# This changed after bash-3.0, when the tilde implementation was redone.  It's
+# not backward compatible, but it's very hard to be backward-compatible here,
+# and I think the old behavior was a bug
+expect '<~>'
 recho "${somevar:-~}"
 expect '<~>'
 recho "${somevar:-"~"}"
diff --git a/tests/more-exp.tests~ b/tests/more-exp.tests~
new file mode 100644 (file)
index 0000000..6c821a5
--- /dev/null
@@ -0,0 +1,501 @@
+expect()
+{
+       echo expect "$@"
+}
+
+tool_var() {
+        eval $1=\"\${$1:-$2}\"
+        export $1
+}
+
+A="aaa bbb ccc"
+
+unset B
+
+tool_var        B       ${B:-"$A"}
+
+expect '<aaa bbb ccc>'
+recho "$A"
+expect '<aaa bbb ccc>'
+recho "$B"
+
+eto_prepend() {
+        eval $1=\'$2\''${'$1':+":"${'$1'}}'; export $1
+}
+
+foo=bar; export foo
+eto_prepend foo baz
+expect '<baz:bar>'
+recho $foo
+expect '<baz:bar>'
+recho ${foo-"bar"}
+
+aa='aaa bbb ccc'
+
+expect '<aaa bbb ccc>'
+recho ${zzz-"$aa"}
+expect '<bar>'
+recho ${zzz:-"bar"}
+expect '<bar>'
+recho "${zzz:-bar}"
+expect '<bar>'
+recho "${zzz:-"bar"}"
+
+var=abcde
+expect '<abcde>'
+recho "${var:-xyz}"
+expect '<abcde>'
+recho "${var:=xyz}"
+expect '<xyz>'
+recho "${var:+xyz}"
+
+set 'a b' c d e f
+expect '<a b> <c> <d> <e> <f>'
+recho ${1+"$@"}
+expect '<a b>'
+recho "${1-"$@"}"
+expect '<a> <b>'
+recho ${1-"$@"}
+expect '<a b> <c> <d> <e> <f>'
+recho "${1+$@}"
+expect '<a b> <c> <d> <e> <f>'
+recho "${1+"$@"}"
+
+HOME=/usr/homes/chet
+somevar=
+expect "<$HOME>"
+recho ${somevar:-~}
+expect "<$HOME>"
+recho "${somevar:-~}"
+expect '<~>'
+recho "${somevar:-"~"}"
+expect '<\~>'
+recho "${somevar:-\~}"
+expect '<\ \~>'
+recho "${somevar:-\ \~}"
+expect '<\ \ \~>'
+recho "${somevar:-\ \ \~}"
+
+expect "<$HOME>"
+recho ${somevar:-$HOME}
+expect "<$HOME>"
+recho "${somevar:-$HOME}"
+expect "<$HOME>"
+recho "${somevar:-"$HOME"}"
+expect '<$HOME>'
+recho "${somevar:-\$HOME}"
+expect '<\ $HOME>'
+recho "${somevar:-\ \$HOME}"
+expect '<\ \ $HOME>'
+recho "${somevar:-\ \ \$HOME}"
+
+foo=bar
+expect "<'bar'>"
+recho "${foo+'$foo'}"
+expect "<'bar'>"
+recho "${fox='$foo'}"
+
+P='*@*'
+expect '<*@>'
+recho "${P%"*"}"
+expect '<*@>'
+recho "${P%'*'}"
+
+expect '<*@>'
+recho ${P%"*"}
+expect '<*@>'
+recho ${P%'*'}
+
+expect '<*@*>'
+recho ${P%""}
+expect '<*@*>'
+recho ${P#""}
+
+expect '<*@*>'
+recho ${P#"$foobar"}
+expect '<*@*>'
+recho ${P%"$foobar"}
+
+s1=abcdefghijkl
+s2=efgh
+
+first=${s1/$s2*/}
+expect '<abcd>'
+recho $first
+
+last=${s1##$first}
+expect '<efghijkl>'
+recho $last
+
+shift $#
+UNAME_RELEASE=${1:-4.2MP}
+
+RELEASE=`expr "$UNAME_RELEASE" : '[^0-9]*\([0-9]*\)'` # 4
+case "$RELEASE" in
+"")     RELEASE=0 ;;
+*)      RELEASE=`expr "$RELEASE" + 0` ;;
+esac            
+REL_LEVEL=`expr "$UNAME_RELEASE" : '[^0-9]*[0-9]*.\([0-9]*\)'`    # 1
+REL_SUBLEVEL=`expr "$UNAME_RELEASE" : '[^0-9]*[0-9]*.[0-9]*.\([0-9]*\)'` # 2
+
+expect '<4> <2>'
+recho $RELEASE $REL_LEVEL $REL_SUBLEVEL
+
+b1()
+{
+       b2 ${1+"$@"}
+}
+
+b2()
+{      
+       recho $*
+       recho $#
+}
+
+expect '<1>'
+b1 ''
+
+expect '<bar> <2>'
+b1 bar ''
+
+expect '<bar> <2>'
+b1 '' bar
+
+expect '<4>'
+b1 '' '' '' ''
+
+NL="\\
+"
+
+NNL="+$NL+"
+
+expect '<--\> <-->'
+recho --$NL--
+expect '<--\^J-->'
+recho "--$NL--"
+
+expect '<--+\> <+-->'
+recho --$NNL--
+expect '<--+\^J+-->'
+recho "--$NNL--"
+
+expect '<-+\> <+-\> <->'
+recho -$NNL-$NL-
+
+set ''
+expect '<xy>'
+recho "$*xy"
+expect '<xy>'
+recho "x$*y"
+expect '<xy>'
+recho "xy$*"
+expect '<xy>'
+recho x"$*"y
+expect '<xy>'
+recho xy"$*"
+expect '<xy>'
+recho "$*"xy
+expect '<>'
+recho "$*"
+expect nothing
+recho $*
+
+unset undef ; set ""
+
+expect '<>'
+recho ${undef-"$*"}
+expect '<xy>'
+recho ${undef-"x$*y"}
+expect '<xy>'
+recho ${undef-"$*xy"}
+expect '<xy>'
+recho ${undef-"xy$*"}
+expect '<xy>'
+recho ${undef-x"$*"y}
+expect '<xy>'
+recho ${undef-xy"$*"}
+expect '<xy>'
+recho ${undef-"$*"xy}
+expect '<>'
+recho "${undef-$*}"
+expect nothing
+recho ${undef-$*}
+
+expect '<>'
+recho ${undef-"$zzz"}
+expect '<x>'
+recho x${undef-"$zzz"}
+expect '<x>'
+recho x${undef-"$@"}
+expect nothing
+recho ${undef-"$@"}
+expect '<x>'
+recho ${undef-"$zzz"}x
+expect '<x>'
+recho ${undef-"$@"}x
+expect '<x>'
+recho "$@"x
+expect '<x>'
+recho "$zzz"x
+expect '<^?>'
+recho ${undef-\7f}
+expect '<^?>'
+recho ${undef-"\7f"}
+
+yyy=""
+recho "$xxx"x
+recho "$yyy"x
+
+set "" "abd" ""
+recho "$@"x
+recho "$@"$xxx
+
+OIFS="$IFS"
+
+arg=a,b,c,d,e,f
+
+IFS=,
+
+export z=$arg
+
+eval z1=\"$arg\"
+
+IFS="$OIFS"
+
+recho $z
+recho $z1
+
+# should give an error
+abc\=def
+
+zz="a b c d e"
+declare a=$zz
+
+recho "$a"
+recho $a
+
+recho $(echo "foo$(echo ")")")
+
+# test backslash escapes
+
+recho \a
+recho \\a
+
+recho "\a"
+recho "\\a"
+
+recho '\a'
+recho '\\a'
+
+recho $(zecho \a)
+recho $(zecho \\a)
+
+recho $(zecho "\a")
+recho $(zecho "\\a")
+
+recho $(zecho '\a')
+recho $(zecho '\\a')
+
+recho `zecho \a`
+recho `zecho \\a`
+
+recho `zecho "\a"`
+recho `zecho "\\a"`
+
+recho `zecho '\a'`
+recho `zecho '\\a'`
+
+a=foo
+
+recho \$a
+recho \\$a
+
+recho "\$a"
+recho "\\$a"
+
+recho '\$a'
+recho '\\$a'
+
+recho $(zecho `zecho \a`)
+recho $(zecho `zecho \\a`)
+
+recho $(zecho `zecho "\a"`)
+recho $(zecho `zecho "\\a"`)
+
+recho $(zecho `zecho '\a'`)
+recho $(zecho `zecho '\\a'`)
+
+# should echo G { I K }
+recho ${abc:-G { I } K }
+
+abc=hi
+
+# should echo hi K }
+recho ${abc:-G { I } K }
+
+# should echo a*
+unset foo
+recho "${foo:-"a"}*"
+
+f ()
+{
+       echo "Number of args: $#"
+       echo "<\${*-x}>: <${*-x}>"
+       echo "<\${@-x}>: <${@-x}>"
+}
+
+f
+f ''
+f '' ''
+
+set 1 2 3 4 5
+
+expect '<5>'
+recho ${#}
+expect '<5>'
+recho ${#:foo}
+expect '<5>'
+recho ${#:-foo}
+expect '<5>'
+recho ${#-posparams}
+expect '<5>'
+recho ${#:-posparams}
+
+expect '<0>'
+recho ${#!}
+
+expect nothing
+recho $!
+expect nothing
+recho ${!}
+
+expect nothing
+recho $8
+expect nothing
+recho ${8}
+
+shift $#
+
+expect '<0>'
+recho ${#}
+expect '<0>'
+recho ${#:foo}
+expect '<0>'
+recho ${#:-foo}
+expect '<0>'
+recho ${#-posparams}
+expect '<0>'
+recho ${#:-posparams}
+
+expect '<posparams>'
+recho ${!-posparams}
+expect '<posparams>'
+recho ${!:-posparams}
+
+expect '<2>'
+recho ${#-}
+
+expect '<0>'
+recho ${#-posparams}
+
+expect '<0>'
+recho ${#?:-xyz}
+
+expect '<1>'
+recho ${#?}
+
+set a b c d e
+
+expect '<5>'
+recho ${#}
+expect '<5>'
+recho ${#?:-xyz}
+
+shift $#
+
+expect '<0>'
+recho ${#:-foo}
+
+expect a bad substitution error
+recho ${#:}
+expect a bad substitution error
+recho ${#/}
+expect a bad substitution error
+recho ${#%}
+expect a bad substitution error
+recho ${#=}
+expect a bad substitution error
+recho ${#+}
+expect a bad substitution error
+recho ${#1xyz}
+
+expect a math syntax error
+recho ${#:%}
+
+expect '<0>'
+recho ${#:-}
+
+set --
+unset a b
+
+x=a
+y=b
+
+IFS=+
+
+expect '<a+b>'
+recho $x+$y
+expect '<+>'
+recho $a+$b
+
+expect '<+>'
+recho + "$@"
+expect '<+>'
+recho +"$@"
+
+# variants of nested curly braces inside ${...} expressions
+
+# IFS is not the standard one
+
+expect '<G { I>' '<K>' '<}>'
+recho ${gik:-G { I } K }
+
+abc=hi
+
+expect '<hi>' '<K>' '<}>'
+recho ${abc:-G { I } K }
+
+# reset IFS to the default
+IFS='  
+'
+
+# nested ${...} inside ${...} are handled specially
+unset XXX FOO BAR
+expect '<xxx>' '<yyy>'
+XXX=xxx
+FOO=${BAR:-${XXX} yyy}
+recho $FOO
+
+# this was a bug in versions of bash prior to bash-2.04-release
+set -- ''
+expect 1
+echo $#
+expect '<>'
+recho "${@}"
+expect '<>'
+recho "${@-}"
+expect '<>'
+recho "${@:-}"
+
+# this was a bug in bash-2.04, fixed in 2.05
+set -- a b
+expect '<:a:>' '<:b:>'
+for i in "${@-}"; do recho :$i:; done
+
+# I believe that ksh93 does these wrong -- we're using the rhs, so shouldn't
+# it behave the same as ""?
+set --
+expect '<>'
+recho "${@-}"
+expect '<>'
+recho "${@:-}"