Seth Woolley's Man Viewer

bash(1) - bash, bash - GNU Bourne-Again SHell - man 1 bash

([section] manual, -k keyword, -K [section] search, -f whatis)
man plain no title

BASH(1)                                                                BASH(1)



NAME
       bash - GNU Bourne-Again SHell

SYNOPSIS
       bash [options] [file(1,n)]

COPYRIGHT
       Bash is Copyright (C) 1989-2004 by the Free Software Foundation, Inc.

DESCRIPTION
       Bash  is  an  sh-compatible  command language interpreter that executes
       commands read(2,n,1 builtins) from the standard input or from a file.  Bash also incor-
       porates useful features from the Korn and C shells (ksh and csh).

       Bash  is  intended  to be a conformant implementation of the IEEE POSIX
       Shell and Tools specification (IEEE Working Group 1003.2).

OPTIONS
       In addition to the single-character shell  options  documented  in(1,8)  the
       description  of  the set(7,n,1 builtins) builtin command, bash interprets the following
       options when it is invoked:

       -c string(3,n) If the -c option is present,  then  commands  are  read(2,n,1 builtins)  from
                 string(3,n).   If  there  are arguments after the string(3,n), they are
                 assigned to the positional parameters, starting with $0.
       -i        If the -i option is present, the shell is interactive.
       -l        Make bash act as if(3,n) it had been invoked as a login(1,3,5) shell (see
                 INVOCATION below).
       -r        If  the  -r  option  is present, the shell becomes restricted
                 (see RESTRICTED SHELL below).
       -s        If the -s option is present, or if(3,n) no arguments remain  after
                 option  processing,  then commands are read(2,n,1 builtins) from the standard
                 input.  This option allows the positional  parameters  to  be
                 set(7,n,1 builtins) when invoking an interactive shell.
       -D        A  list of all double-quoted strings preceded by $ is printed
                 on the standard ouput.  These are the strings that  are  sub-
                 ject to language translation when the current locale(3,5,7) is not C
                 or POSIX.  This implies the -n option; no  commands  will  be
                 executed.
       [-+]O [shopt_option]
                 shopt_option  is  one  of  the  shell options accepted by the
                 shopt  builtin  (see  SHELL  BUILTIN  COMMANDS  below).    If
                 shopt_option is present, -O sets the value of that option; +O
                 unsets it.  If shopt_option is not supplied,  the  names  and
                 values  of the shell options accepted by shopt are printed on
                 the standard output.  If the invocation  option  is  +O,  the
                 output  is displayed in(1,8) a format that may be reused as input.
       --        A -- signals the end of options and disables  further  option
                 processing.   Any arguments after the -- are treated as file-
                 names and arguments.  An argument of - is equivalent to --.

       Bash also  interprets  a  number  of  multi-character  options.   These
       options  must  appear  on  the command line before the single-character
       options to be recognized.

       --debugger
              Arrange for the debugger profile to be executed before the shell
              starts.   Turns  on extended debugging mode (see the description
              of the extdebug option to the shopt  builtin  below)  and  shell
              function tracing (see the description of the -o functrace option
              to the set(7,n,1 builtins) builtin below).
       --dump-po-strings
              Equivalent to -D, but the output is in(1,8) the GNU gettext(1,3) po  (por-
              table object) file(1,n) format.
       --dump-strings
              Equivalent to -D.
       --help Display  a  usage  message  on standard output and exit(3,n,1 builtins) success-
              fully.
       --init-file file(1,n)
       --rcfile file(1,n)
              Execute commands from file(1,n) instead of the standard personal ini-
              tialization  file(1,n)  ~/.bashrc  if(3,n)  the  shell is interactive (see
              INVOCATION below).

       --login
              Equivalent to -l.

       --noediting
              Do not use the GNU readline library to read(2,n,1 builtins) command  lines  when
              the shell is interactive.

       --noprofile
              Do  not read(2,n,1 builtins) either the system-wide startup file(1,n) /etc/profile or
              any  of  the  personal  initialization  files   ~/.bash_profile,
              ~/.bash_login,  or  ~/.profile.   By  default,  bash reads these
              files when it is  invoked  as  a  login(1,3,5)  shell  (see  INVOCATION
              below).

       --norc Do  not  read(2,n,1 builtins)  and  execute  the  personal  initialization  file(1,n)
              ~/.bashrc if(3,n) the shell is interactive.  This  option  is  on  by
              default if(3,n) the shell is invoked as sh.

       --posix
              Change  the behavior of bash where the default operation differs
              from the POSIX 1003.2 standard  to  match  the  standard  (posix
              mode).

       --restricted
              The shell becomes restricted (see RESTRICTED SHELL below).

       --verbose
              Equivalent to  -v.

       --version
              Show  version(1,3,5) information for this instance of bash on the stan-
              dard output and exit(3,n,1 builtins) successfully.

ARGUMENTS
       If arguments remain after option processing, and neither the -c nor the
       -s  option  has  been supplied, the first argument is assumed to be the
       name of a file(1,n) containing shell commands.  If bash is invoked  in(1,8)  this
       fashion,  $0 is set(7,n,1 builtins) to the name of the file(1,n), and the positional parame-
       ters are set(7,n,1 builtins) to the remaining arguments.  Bash reads and executes  com-
       mands  from this file(1,n), then exits.  Bash's exit(3,n,1 builtins) status is the exit(3,n,1 builtins) sta-
       tus of the last command executed in(1,8) the script.   If  no  commands  are
       executed,  the  exit(3,n,1 builtins) status is 0.  An attempt is first made to open(2,3,n) the
       file(1,n) in(1,8) the current directory, and, if(3,n) no file(1,n) is found, then the shell
       searches the directories in(1,8) PATH for the script.

INVOCATION
       A  login(1,3,5) shell is one whose first character of argument zero is a -, or
       one started with the --login option.

       An interactive shell is one started without  non-option  arguments  and
       without the -c option whose standard input and error(8,n) are both connected
       to terminals (as determined by isatty(3)), or one started with  the  -i
       option.   PS1 is set(7,n,1 builtins) and $- includes i if(3,n) bash is interactive, allowing
       a shell script or a startup file(1,n) to test this state.

       The following paragraphs describe how bash executes its startup  files.
       If  any  of  the files exist but cannot be read(2,n,1 builtins), bash reports an error.
       Tildes are expanded in(1,8) file(1,n) names as described below under Tilde Expan-
       sion in(1,8) the EXPANSION section.

       When  bash is invoked as an interactive login(1,3,5) shell, or as a non-inter-
       active shell with the --login option, it first reads and executes  com-
       mands  from  the file(1,n) /etc/profile, if(3,n) that file(1,n) exists.  After reading
       that file(1,n), it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile,
       in(1,8)  that order, and reads and executes commands from the first one that
       exists and is readable.  The --noprofile option may be  used  when  the
       shell is started to inhibit this behavior.

       When  a  login(1,3,5)  shell  exits, bash reads and executes commands from the
       file(1,n) ~/.bash_logout, if(3,n) it exists.

       When an interactive shell that is not a login(1,3,5) shell  is  started,  bash
       reads  and executes commands from ~/.bashrc, if(3,n) that file(1,n) exists.  This
       may be inhibited by using the --norc option.  The --rcfile file(1,n)  option
       will  force  bash  to  read(2,n,1 builtins)  and  execute commands from file(1,n) instead of
       ~/.bashrc.

       When bash is started non-interactively, to  run  a  shell  script,  for
       example, it looks for the variable BASH_ENV in(1,8) the environment, expands
       its value if(3,n) it appears there, and uses the expanded value as the  name
       of  a  file(1,n) to read(2,n,1 builtins) and execute.  Bash behaves as if(3,n) the following com-
       mand were executed:
              if(3,n) [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
       but the value of the PATH variable is not used to search for  the  file(1,n)
       name.

       If  bash  is  invoked  with  the name sh, it tries to mimic the startup
       behavior of historical versions of sh as  closely  as  possible,  while
       conforming  to the POSIX standard as well.  When invoked as an interac-
       tive login(1,3,5) shell, or a non-interactive shell with the  --login  option,
       it  first  attempts  to read(2,n,1 builtins) and execute commands from /etc/profile and
       ~/.profile, in(1,8) that order.  The  --noprofile  option  may  be  used  to
       inhibit  this  behavior.  When invoked as an interactive shell with the
       name sh, bash looks for the variable ENV, expands its value  if(3,n)  it  is
       defined,  and uses the expanded value as the name of a file(1,n) to read(2,n,1 builtins) and
       execute.  Since a shell invoked as sh does not attempt to read(2,n,1 builtins) and exe-
       cute  commands from any other startup files, the --rcfile option has no
       effect.  A non-interactive shell invoked with  the  name  sh  does  not
       attempt  to  read(2,n,1 builtins)  any  other  startup files.  When invoked as sh, bash
       enters posix mode after the startup files are read.

       When bash is started in(1,8) posix mode, as with the  --posix  command  line
       option, it follows the POSIX standard for startup files.  In this mode,
       interactive shells expand the ENV variable and commands  are  read(2,n,1 builtins)  and
       executed  from  the  file(1,n)  whose  name is the expanded value.  No other
       startup files are read.

       Bash attempts to determine when it is being run  by  the  remote  shell
       daemon,  usually  rshd.  If bash determines it is being run by rshd, it
       reads and executes commands from ~/.bashrc, if(3,n) that file(1,n) exists and  is
       readable.  It will not do this if(3,n) invoked as sh.  The --norc option may
       be used to inhibit this behavior, and the --rcfile option may  be  used
       to  force  another  file(1,n) to be read(2,n,1 builtins), but rshd does not generally invoke
       the shell with those options or allow them to be specified.

       If the shell is started with the effective user (group) id not equal to
       the real user (group) id, and the -p option is not supplied, no startup
       files are read(2,n,1 builtins), shell functions are not inherited from the environment,
       the  SHELLOPTS  variable, if(3,n) it appears in(1,8) the environment, is ignored,
       and the effective user id is set(7,n,1 builtins) to the real user id.  If the -p option
       is  supplied  at  invocation, the startup behavior is the same, but the
       effective user id is not reset.

DEFINITIONS
       The following definitions are used throughout the rest  of  this  docu-
       ment.
       blank  A space or tab.
       word   A  sequence  of  characters  considered  as a single unit by the
              shell.  Also known as a token.
       name   A word consisting only of  alphanumeric  characters  and  under-
              scores,  and beginning with an alphabetic character or an under-
              score.  Also referred to as an identifier.
       metacharacter
              A character that, when unquoted, separates words.   One  of  the
              following:
              |  & ; ( ) < > space tab
       control operator
              A token that performs a control function.  It is one of the fol-
              lowing symbols:
              || & && ; ;; ( ) | <newline>

RESERVED WORDS
       Reserved words are words that have a special meaning to the shell.  The
       following words are recognized as reserved when unquoted and either the
       first word of a simple command (see SHELL GRAMMAR below) or  the  third
       word of a case or for command:

       !  case  do done elif else esac fi for function if(3,n) in(1,8) select(2,7,2 select_tut) then until
       while { } time(1,2,n) [[ ]]

SHELL GRAMMAR
   Simple Commands
       A simple command is a sequence of optional  variable  assignments  fol-
       lowed  by  blank-separated  words and redirections, and terminated by a
       control operator.  The first word specifies the command to be executed,
       and  is  passed  as  argument  zero.  The remaining words are passed as
       arguments to the invoked command.

       The return value of a simple command is its exit(3,n,1 builtins) status,  or  128+n  if(3,n)
       the command is terminated by signal(2,7) n.

   Pipelines
       A pipeline is a sequence of one or more commands separated by the char-
       acter |.  The format for a pipeline is:

              [time(1,2,n) [-p]] [ ! ] command [ | command2 ... ]

       The standard output of command is connected via a pipe(2,8) to the  standard
       input  of  command2.   This connection is performed before any redirec-
       tions specified by the command (see REDIRECTION below).

       The return status of a pipeline is the exit(3,n,1 builtins) status of the last command,
       unless  the  pipefail  option  is enabled.  If pipefail is enabled, the
       pipeline's return status is the value of the last  (rightmost)  command
       to  exit(3,n,1 builtins)  with a non-zero status, or zero if(3,n) all commands exit(3,n,1 builtins) success-
       fully.  If the reserved word !  precedes a pipeline, the exit(3,n,1 builtins) status of
       that  pipeline  is the logical negation of the exit(3,n,1 builtins) status as described
       above.  The shell waits for all commands in(1,8) the pipeline  to  terminate
       before returning a value.

       If  the  time(1,2,n) reserved word precedes a pipeline, the elapsed as well as
       user and system time(1,2,n) consumed by its execution are  reported  when  the
       pipeline  terminates.   The -p option changes the output format to that
       specified by POSIX.  The TIMEFORMAT variable may be  set(7,n,1 builtins)  to  a  format
       string(3,n)  that  specifies how the timing information should be displayed;
       see the description of TIMEFORMAT under Shell Variables below.

       Each command in(1,8) a pipeline is executed as a separate process (i.e.,  in(1,8)
       a subshell).

   Lists
       A  list  is a sequence of one or more pipelines separated by one of the
       operators ;, &, &&, or ||, and optionally terminated by one of ;, &, or
       <newline>.

       Of these list operators, && and || have equal precedence, followed by ;
       and &, which have equal precedence.

       A sequence of one or more newlines may appear in(1,8) a list  instead  of  a
       semicolon to delimit commands.

       If  a  command  is terminated by the control operator &, the shell exe-
       cutes the command in(1,8) the background in(1,8) a subshell.  The shell does  not
       wait  for  the command to finish, and the return status is 0.  Commands
       separated by a ; are executed sequentially; the shell  waits  for  each
       command  to terminate in(1,8) turn.  The return status is the exit(3,n,1 builtins) status of
       the last command executed.

       The control operators && and || denote AND lists and OR lists,  respec-
       tively.  An AND list has the form

              command1 && command2

       command2  is  executed if(3,n), and only if(3,n), command1 returns an exit(3,n,1 builtins) status
       of zero.

       An OR list has the form

              command1 || command2


       command2 is executed if(3,n) and only if(3,n) command1 returns  a  non-zero  exit(3,n,1 builtins)
       status.   The  return  status of AND and OR lists is the exit(3,n,1 builtins) status of
       the last command executed in(1,8) the list.

   Compound Commands
       A compound command is one of the following:

       (list) list is executed in(1,8) a subshell environment (see  COMMAND  EXECU-
              TION  ENVIRONMENT below).  Variable assignments and builtin com-
              mands that affect the  shell's  environment  do  not  remain  in(1,8)
              effect  after  the  command completes.  The return status is the
              exit(3,n,1 builtins) status of list.

       { list; }
              list is simply executed in(1,8) the current shell environment.   list
              must  be  terminated with a newline or semicolon.  This is known
              as a group command.  The return status is  the  exit(3,n,1 builtins)  status  of
              list.   Note that unlike the metacharacters ( and ), { and } are
              reserved words and must occur where a reserved word is permitted
              to  be  recognized.   Since they do not cause a word break, they
              must be separated from list by whitespace.

       ((expression))
              The expression is evaluated according  to  the  rules  described
              below  under ARITHMETIC EVALUATION.  If the value of the expres-
              sion is non-zero, the return status is 0; otherwise  the  return
              status is 1.  This is exactly equivalent to let "expression".

       [[ expression ]]
              Return  a  status  of  0 or 1 depending on the evaluation of the
              conditional expression expression.  Expressions are composed  of
              the  primaries  described  below  under CONDITIONAL EXPRESSIONS.
              Word splitting and pathname expansion are not performed  on  the
              words  between  the  [[  and  ]]; tilde expansion, parameter and
              variable expansion, arithmetic expansion, command  substitution,
              process  substitution,  and quote removal are performed.  Condi-
              tional operators such as -f must be unquoted to be recognized as
              primaries.

              When  the  == and != operators are used, the string(3,n) to the right
              of the operator is considered a pattern and matched according to
              the  rules  described  below under Pattern Matching.  The return
              value is 0 if(3,n) the string(3,n) matches or does not match the  pattern,
              respectively,  and  1 otherwise.  Any part of the pattern may be
              quoted to force it to be matched as a string.

              An additional binary operator, =~, is available, with  the  same
              precedence  as  ==  and  !=.  When it is used, the string(3,n) to the
              right of the operator is considered an extended regular  expres-
              sion and matched accordingly (as in(1,8) regex(3,7)(3)).  The return value
              is 0 if(3,n) the string(3,n) matches the pattern, and 1 otherwise.  If the
              regular  expression  is syntactically incorrect, the conditional
              expression's return value is 2.  If the shell option  nocaseglob
              is enabled, the match is performed without regard to the case of
              alphabetic  characters.   Substrings  matched  by  parenthesized
              subexpressions  within  the  regular expression are saved in(1,8) the
              array variable BASH_REMATCH.  The element of  BASH_REMATCH  with
              index 0 is the portion of the string(3,n) matching the entire regular
              expression.  The element of BASH_REMATCH with  index  n  is  the
              portion  of the string(3,n) matching the nth parenthesized subexpres-
              sion.

              Expressions may  be  combined  using  the  following  operators,
              listed in(1,8) decreasing order of precedence:

              ( expression )
                     Returns  the  value  of  expression.  This may be used to
                     override the normal precedence of operators.
              ! expression
                     True if(3,n) expression is false.
              expression1 && expression2
                     True if(3,n) both expression1 and expression2 are true.
              expression1 || expression2
                     True if(3,n) either expression1 or expression2 is true.

              The && and || operators do not evaluate expression2 if(3,n) the value
              of  expression1  is  sufficient to determine the return value of
              the entire conditional expression.

       for name [ in(1,8) word ] ; do list ; done
              The list of words following in(1,8) is expanded, generating a list of
              items.  The variable name is set(7,n,1 builtins) to each element of this list in(1,8)
              turn, and list is executed each time.  If the in(1,8) word  is  omit-
              ted,  the  for  command  executes  list once for each positional
              parameter that is set(7,n,1 builtins) (see PARAMETERS below).  The return status
              is  the  exit(3,n,1 builtins)  status of the last command that executes.  If the
              expansion of the items following in(1,8) results in(1,8) an empty list, no
              commands are executed, and the return status is 0.

       for (( expr1 ; expr2 ; expr3 )) ; do list ; done
              First, the arithmetic expression expr1 is evaluated according to
              the rules described  below  under  ARITHMETIC  EVALUATION.   The
              arithmetic  expression  expr2 is then evaluated repeatedly until
              it evaluates to zero.  Each time(1,2,n) expr2 evaluates to  a  non-zero
              value,  list  is executed and the arithmetic expression expr3 is
              evaluated.  If any expression is omitted, it behaves  as  if(3,n)  it
              evaluates to 1.  The return value is the exit(3,n,1 builtins) status of the last
              command in(1,8) list that is executed, or false if(3,n) any of the expres-
              sions is invalid.

       select(2,7,2 select_tut) name [ in(1,8) word ] ; do list ; done
              The list of words following in(1,8) is expanded, generating a list of
              items.  The set(7,n,1 builtins) of expanded words is  printed  on  the  standard
              error(8,n),  each  preceded  by a number.  If the in(1,8) word is omitted,
              the positional parameters are printed  (see  PARAMETERS  below).
              The  PS3 prompt is then displayed and a line read(2,n,1 builtins) from the stan-
              dard input.  If the line consists of a number  corresponding  to
              one  of  the  displayed  words, then the value of name is set(7,n,1 builtins) to
              that word.  If the line is empty, the words and prompt are  dis-
              played again.  If EOF is read(2,n,1 builtins), the command completes.  Any other
              value read(2,n,1 builtins) causes name to be set(7,n,1 builtins) to  null.   The  line  read(2,n,1 builtins)  is
              saved  in(1,8)  the  variable REPLY.  The list is executed after each
              selection until a break command is executed.  The exit(3,n,1 builtins) status of
              select(2,7,2 select_tut)  is the exit(3,n,1 builtins) status of the last command executed in(1,8) list,
              or zero if(3,n) no commands were executed.

       case word in(1,8) [ [(] pattern [ | pattern ] ... ) list ;; ] ... esac
              A case command first expands word, and tries to match it against
              each pattern in(1,8) turn, using the same matching rules as for path-
              name expansion (see Pathname Expansion below).  When a match  is
              found,  the  corresponding  list  is  executed.  After the first
              match, no subsequent matches are attempted.  The exit(3,n,1 builtins) status  is
              zero if(3,n) no pattern matches.  Otherwise, it is the exit(3,n,1 builtins) status of
              the last command executed in(1,8) list.

       if(3,n) list; then list; [ elif list; then list; ] ... [ else list; ] fi
              The if(3,n) list is executed.  If its exit(3,n,1 builtins) status is zero,  the  then
              list  is  executed.   Otherwise,  each  elif list is executed in(1,8)
              turn, and if(3,n) its exit(3,n,1 builtins) status is  zero,  the  corresponding  then
              list is executed and the command completes.  Otherwise, the else
              list is executed, if(3,n) present.  The exit(3,n,1 builtins) status is the exit(3,n,1 builtins)  sta-
              tus of the last command executed, or zero if(3,n) no condition tested
              true.

       while list; do list; done
       until list; do list; done
              The while command continuously executes the do list as  long  as
              the  last  command  in(1,8) list returns an exit(3,n,1 builtins) status of zero.  The
              until command is identical to the while command, except that the
              test  is  negated;  the  do list is executed as long as the last
              command in(1,8) list returns a non-zero exit(3,n,1 builtins) status.  The exit(3,n,1 builtins) status
              of  the  while and until commands is the exit(3,n,1 builtins) status of the last
              do list command executed, or zero if(3,n) none was executed.

   Shell Function Definitions
       A shell function is an object that is called like a simple command  and
       executes  a  compound  command with a new set(7,n,1 builtins) of positional parameters.
       Shell functions are declared as follows:

       [ function ] name () compound-command [redirection]
              This defines a function named(5,8) name.  The reserved word  function
              is  optional.   If  the  function reserved word is supplied, the
              parentheses are optional.  The body of the function is the  com-
              pound  command  compound-command  (see Compound Commands above).
              That command is usually a list of commands between { and },  but
              may  be  any command listed under Compound Commands above.  com-
              pound-command is executed whenever name is specified as the name
              of  a  simple command.  Any redirections (see REDIRECTION below)
              specified when a function is  defined  are  performed  when  the
              function  is executed.  The exit(3,n,1 builtins) status of a function definition
              is zero unless a syntax error(8,n) occurs or a readonly function with
              the same name already exists.  When executed, the exit(3,n,1 builtins) status of
              a function is the exit(3,n,1 builtins) status of the last  command  executed  in(1,8)
              the body.  (See FUNCTIONS below.)

COMMENTS
       In a non-interactive shell, or an interactive shell in(1,8) which the inter-
       active_comments option to the  shopt  builtin  is  enabled  (see  SHELL
       BUILTIN  COMMANDS  below), a word beginning with # causes that word and
       all remaining characters on that line to be  ignored.   An  interactive
       shell  without  the  interactive_comments option enabled does not allow
       comments.  The interactive_comments option is on by default in(1,8) interac-
       tive shells.

QUOTING
       Quoting  is used to remove the special meaning of certain characters or
       words to the shell.  Quoting can be used to disable  special  treatment
       for special characters, to prevent reserved words from being recognized
       as such, and to prevent parameter expansion.

       Each of the metacharacters listed above under DEFINITIONS  has  special
       meaning to the shell and must be quoted if(3,n) it is to represent itself.

       When  the command history(1,3,n,1 builtins) expansion facilities are being used, the his-
       tory expansion character, usually !, must be quoted to prevent  history(1,3,n,1 builtins)
       expansion.

       There  are  three  quoting  mechanisms:  the  escape  character, single
       quotes, and double quotes.

       A non-quoted backslash (\) is the escape character.  It  preserves  the
       literal value of the next character that follows, with the exception of
       <newline>.  If a \<newline> pair appears,  and  the  backslash  is  not
       itself  quoted,  the \<newline> is treated as a line continuation (that
       is, it is removed from the input stream and effectively ignored).

       Enclosing characters in(1,8) single quotes preserves the  literal  value  of
       each character within the quotes.  A single quote may not occur between
       single quotes, even when preceded by a backslash.

       Enclosing characters in(1,8) double quotes preserves the  literal  value  of
       all  characters  within  the quotes, with the exception of $, `, and \.
       The characters $ and `  retain  their  special  meaning  within  double
       quotes.   The  backslash retains its special meaning only when followed
       by one of the following characters: $, `, ", \, or <newline>.  A double
       quote  may  be quoted within double quotes by preceding it with a back-
       slash.  When command history(1,3,n,1 builtins) is being used, the double quote may not be
       used to quote the history(1,3,n,1 builtins) expansion character.

       The  special  parameters  *  and  @ have special meaning when in(1,8) double
       quotes (see PARAMETERS below).

       Words of the form $'string(3,n)' are treated specially.  The word expands to
       string(3,n),  with  backslash-escaped characters replaced as specifed by the
       ANSI C standard.  Backslash escape sequences, if(3,n) present,  are  decoded
       as follows:
              \a     alert (bell)
              \b     backspace
              \e     an escape character
              \f     form feed
              \n     new line
              \r     carriage return
              \t     horizontal tab
              \v     vertical tab
              \\     backslash
              \'     single quote
              \nnn   the  eight-bit  character  whose value is the octal value
                     nnn (one to three digits)
              \xHH   the eight-bit character whose value  is  the  hexadecimal
                     value HH (one or two hex digits)
              \cx    a control-x character

       The  expanded  result  is  single-quoted, as if(3,n) the dollar sign had not
       been present.

       A double-quoted string(3,n) preceded by a dollar sign  ($)  will  cause  the
       string(3,n)  to  be translated according to the current locale.  If the cur-
       rent locale(3,5,7) is C or POSIX, the dollar sign is ignored.  If  the  string(3,n)
       is translated and replaced, the replacement is double-quoted.

PARAMETERS
       A  parameter is an entity that stores values.  It can be a name, a num-
       ber, or one of the special characters listed below under Special Param-
       eters.   A variable is a parameter denoted by a name.  A variable has a
       value and zero or more attributes.  Attributes are assigned  using  the
       declare  builtin command (see declare below in(1,8) SHELL BUILTIN COMMANDS).

       A parameter is set(7,n,1 builtins) if(3,n) it has been assigned a value.  The null string(3,n) is
       a  valid  value.  Once a variable is set(7,n,1 builtins), it may be unset only by using
       the unset builtin command (see SHELL BUILTIN COMMANDS below).

       A variable may be assigned to by a statement of the form

              name=[value]

       If value is not given, the variable is assigned the null  string.   All
       values  undergo tilde expansion, parameter and variable expansion, com-
       mand substitution, arithmetic expansion, and quote removal (see  EXPAN-
       SION below).  If the variable has its integer attribute set(7,n,1 builtins), then value
       is evaluated as an arithmetic expression even if(3,n) the $((...)) expansion
       is  not  used  (see Arithmetic Expansion below).  Word splitting is not
       performed, with the exception of "$@" as explained below under  Special
       Parameters.   Pathname  expansion  is not performed.  Assignment state-
       ments may also appear as arguments  to  the  alias,  declare,  typeset,
       export, readonly, and local builtin commands.

   Positional Parameters
       A  positional  parameter  is a parameter denoted by one or more digits,
       other than the single digit 0.  Positional parameters are assigned from
       the  shell's  arguments when it is invoked, and may be reassigned using
       the set(7,n,1 builtins) builtin command.  Positional parameters may not be assigned  to
       with  assignment statements.  The positional parameters are temporarily
       replaced when a shell function is executed (see FUNCTIONS below).

       When a positional parameter consisting of more than a single  digit  is
       expanded, it must be enclosed in(1,8) braces (see EXPANSION below).

   Special Parameters
       The  shell  treats  several parameters specially.  These parameters may
       only be referenced; assignment to them is not allowed.
       *      Expands to the positional parameters, starting from  one.   When
              the  expansion occurs within double quotes, it expands to a sin-
              gle word with the value of each parameter separated by the first
              character of the IFS special variable.  That is, "$*" is equiva-
              lent to "$1c$2c...", where c is the first character of the value
              of  the IFS variable.  If IFS is unset, the parameters are sepa-
              rated by spaces.  If IFS is  null,  the  parameters  are  joined
              without intervening separators.
       @      Expands  to  the positional parameters, starting from one.  When
              the  expansion  occurs  within  double  quotes,  each  parameter
              expands to a separate word.  That is, "$@" is equivalent to "$1"
              "$2" ...  When there are no positional parameters, "$@"  and  $@
              expand to nothing (i.e., they are removed).
       #      Expands to the number of positional parameters in(1,8) decimal.
       ?      Expands  to  the status of the most recently executed foreground
              pipeline.
       -      Expands to the current option flags as  specified  upon  invoca-
              tion,  by  the  set(7,n,1 builtins)  builtin  command, or those set(7,n,1 builtins) by the shell
              itself (such as the -i option).
       $      Expands to the process ID of the shell.  In a  ()  subshell,  it
              expands  to  the  process  ID of the current shell, not the sub-
              shell.
       !      Expands to the process ID of the most  recently  executed  back-
              ground (asynchronous) command.
       0      Expands  to  the name of the shell or shell script.  This is set(7,n,1 builtins)
              at shell initialization.  If bash is invoked with a file(1,n) of com-
              mands,  $0  is set(7,n,1 builtins) to the name of that file.  If bash is started
              with the -c option, then $0 is set(7,n,1 builtins) to the first  argument  after
              the  string(3,n) to be executed, if(3,n) one is present.  Otherwise, it is
              set(7,n,1 builtins) to the file(1,n) name used to invoke bash, as given  by  argument
              zero.
       _      At  shell startup, set(7,n,1 builtins) to the absolute file(1,n) name of the shell or
              shell script being executed as  passed  in(1,8)  the  argument  list.
              Subsequently,  expands to the last argument to the previous com-
              mand, after expansion.  Also set(7,n,1 builtins) to the full file(1,n) name  of  each
              command  executed and placed in(1,8) the environment exported to that
              command.  When checking mail(1,8), this parameter holds the  name  of
              the mail(1,8) file(1,n) currently being checked.

   Shell Variables
       The following variables are set(7,n,1 builtins) by the shell:

       BASH   Expands  to  the  full file(1,n) name used to invoke this instance of
              bash.
       BASH_ARGC
              An array variable whose values are the number of  parameters  in(1,8)
              each frame of the current bash execution call stack.  The number
              of parameters to  the  current  subroutine  (shell  function  or
              script  executed  with  . or source) is at the top of the stack.
              When a subroutine is executed, the number of  parameters  passed
              is pushed onto BASH_ARGC.
       BASH_ARGV
              An  array  variable containing all of the parameters in(1,8) the cur-
              rent bash execution call stack.  The final parameter of the last
              subroutine  call is at the top of the stack; the first parameter
              of the initial call is at the bottom.  When a subroutine is exe-
              cuted, the parameters supplied are pushed onto BASH_ARGV.
       BASH_COMMAND
              The  command  currently  being executed or about to be executed,
              unless the shell is executing a command as the result of a trap,
              in(1,8)  which  case  it  is the command executing at the time(1,2,n) of the
              trap.
       BASH_EXECUTION_STRING
              The command argument to the -c invocation option.
       BASH_LINENO
              An array variable whose members are the line numbers  in(1,8)  source
              files   corresponding   to   each   member   of  @var{FUNCNAME}.
              ${BASH_LINENO[$i]} is the line number in(1,8) the source  file(1,n)  where
              ${FUNCNAME[$i  +  1]} was called.  The corresponding source file(1,n)
              name is ${BASH_SOURCE[$i + 1]}.  Use LINENO to obtain  the  cur-
              rent line number.
       BASH_REMATCH
              An  array  variable  whose members are assigned by the =~ binary
              operator to the [[ conditional command.  The element with  index
              0  is  the  portion  of  the  string(3,n) matching the entire regular
              expression.  The element with index n  is  the  portion  of  the
              string(3,n) matching the nth parenthesized subexpression.  This vari-
              able is read-only.
       BASH_SOURCE
              An array variable whose members are the source filenames  corre-
              sponding to the elements in(1,8) the FUNCNAME array variable.
       BASH_SUBSHELL
              Incremented  by one each time(1,2,n) a subshell or subshell environment
              is spawned.  The initial value is 0.
       BASH_VERSINFO
              A readonly array variable whose members hold version(1,3,5) information
              for  this  instance  of  bash.  The values assigned to the array
              members are as follows:
              BASH_VERSINFO[0]        The major version(1,3,5) number (the  release).
              BASH_VERSINFO[1]        The  minor version(1,3,5) number (the version(1,3,5)).
              BASH_VERSINFO[2]        The patch level.
              BASH_VERSINFO[3]        The build version.
              BASH_VERSINFO[4]        The release status (e.g., beta1).
              BASH_VERSINFO[5]        The value of MACHTYPE.

       BASH_VERSION
              Expands to a string(3,n) describing the version(1,3,5) of this  instance  of
              bash.

       COMP_CWORD
              An  index  into ${COMP_WORDS} of the word containing the current
              cursor position.  This variable is available only in(1,8) shell func-
              tions  invoked  by  the  programmable completion facilities (see
              Programmable Completion below).

       COMP_LINE
              The current command line.  This variable is  available  only  in(1,8)
              shell  functions  and  external  commands  invoked  by  the pro-
              grammable completion  facilities  (see  Programmable  Completion
              below).

       COMP_POINT
              The  index of the current cursor position relative to the begin-
              ning of the current command.  If the current cursor position  is
              at the end of the current command, the value of this variable is
              equal to ${#COMP_LINE}.  This  variable  is  available  only  in(1,8)
              shell  functions  and  external  commands  invoked  by  the pro-
              grammable completion  facilities  (see  Programmable  Completion
              below).

       COMP_WORDBREAKS
              The  set(7,n,1 builtins)  of characters that the Readline library treats as word
              separators when performing word completion.  If  COMP_WORDBREAKS
              is  unset, it loses its special properties, even if(3,n) it is subse-
              quently reset.

       COMP_WORDS
              An array variable (see Arrays below) consisting of the  individ-
              ual  words in(1,8) the current command line.  This variable is avail-
              able only in(1,8) shell functions invoked by the programmable comple-
              tion facilities (see Programmable Completion below).

       DIRSTACK
              An array variable (see Arrays below) containing the current con-
              tents of the directory stack.  Directories appear in(1,8)  the  stack
              in(1,8)  the order they are displayed by the dirs builtin.  Assigning
              to members of this array variable may be used to modify directo-
              ries  already in(1,8) the stack, but the pushd and popd builtins must
              be used to add and remove directories.  Assignment to this vari-
              able  will  not  change  the  current directory.  If DIRSTACK is
              unset, it loses its special properties, even  if(3,n)  it  is  subse-
              quently reset.

       EUID   Expands  to  the effective user ID of the current user, initial-
              ized at shell startup.  This variable is readonly.

       FUNCNAME
              An array variable containing the names of  all  shell  functions
              currently in(1,8) the execution call stack.  The element with index 0
              is the name of any currently-executing shell function.  The bot-
              tom-most  element  is  "main".  This variable exists only when a
              shell function is executing.  Assignments to  FUNCNAME  have  no
              effect  and  return  an  error(8,n) status.  If FUNCNAME is unset, it
              loses its special properties, even if(3,n) it is subsequently  reset.

       GROUPS An  array  variable  containing  the list of groups of which the
              current user is a member.  Assignments to GROUPS have no  effect
              and  return  an  error(8,n) status.  If GROUPS is unset, it loses its
              special properties, even if(3,n) it is subsequently reset.

       HISTCMD
              The history(1,3,n,1 builtins) number, or index in(1,8) the history(1,3,n,1 builtins) list, of the current
              command.   If HISTCMD is unset, it loses its special properties,
              even if(3,n) it is subsequently reset.

       HOSTNAME
              Automatically set(7,n,1 builtins) to the name of the current host.

       HOSTTYPE
              Automatically set(7,n,1 builtins) to a string(3,n) that uniquely describes  the  type
              of  machine  on which bash is executing.  The default is system-
              dependent.

       LINENO Each time(1,2,n) this parameter is referenced, the shell substitutes  a
              decimal  number  representing the current sequential line number
              (starting with 1) within a script or function.  When  not  in(1,8)  a
              script  or  function, the value substituted is not guaranteed to
              be meaningful.  If LINENO is unset, it loses its special proper-
              ties, even if(3,n) it is subsequently reset.

       MACHTYPE
              Automatically  set(7,n,1 builtins)  to  a string(3,n) that fully describes the system
              type on which bash is executing, in(1,8) the  standard  GNU  cpu-com-
              pany-system format.  The default is system-dependent.

       OLDPWD The previous working directory as set(7,n,1 builtins) by the cd command.

       OPTARG The  value  of the last option argument processed by the getopts
              builtin command (see SHELL BUILTIN COMMANDS below).

       OPTIND The index of the next argument to be processed  by  the  getopts
              builtin command (see SHELL BUILTIN COMMANDS below).

       OSTYPE Automatically  set(7,n,1 builtins) to a string(3,n) that describes the operating sys-
              tem on which bash is executing.  The  default  is  system-depen-
              dent.

       PIPESTATUS
              An  array  variable (see Arrays below) containing a list of exit(3,n,1 builtins)
              status values from the processes in(1,8)  the  most-recently-executed
              foreground pipeline (which may contain only a single command).

       PPID   The  process  ID  of the shell's parent.  This variable is read-
              only.

       PWD    The current working directory as set(7,n,1 builtins) by the cd command.

       RANDOM Each time(1,2,n) this parameter is referenced, a random(3,4,6) integer between
              0 and 32767 is generated.  The sequence of random(3,4,6) numbers may be
              initialized by assigning a value to RANDOM.  If RANDOM is unset,
              it  loses  its  special  properties,  even if(3,n) it is subsequently
              reset.

       REPLY  Set to the line of input read(2,n,1 builtins) by the read(2,n,1 builtins) builtin  command  when
              no arguments are supplied.

       SECONDS
              Each  time(1,2,n)  this  parameter is referenced, the number of seconds
              since shell invocation is returned.  If a value is  assigned  to
              SECONDS,  the  value  returned upon subsequent references is the
              number of seconds since the assignment plus the value  assigned.
              If SECONDS is unset, it loses its special properties, even if(3,n) it
              is subsequently reset.

       SHELLOPTS
              A colon-separated list of enabled shell options.  Each  word  in(1,8)
              the  list  is  a  valid  argument  for  the -o option to the set(7,n,1 builtins)
              builtin command (see SHELL BUILTIN COMMANDS below).  The options
              appearing  in(1,8)  SHELLOPTS are those reported as on by set(7,n,1 builtins) -o.  If
              this variable is in(1,8) the environment when bash  starts  up,  each
              shell  option  in(1,8)  the  list  will be enabled before reading any
              startup files.  This variable is read-only.

       SHLVL  Incremented by one each time(1,2,n) an instance of bash is started.

       UID    Expands to the user ID of the current user, initialized at shell
              startup.  This variable is readonly.

       The  following  variables  are  used by the shell.  In some cases, bash
       assigns a default value to a variable; these cases are noted below.

       BASH_ENV
              If this parameter is set(7,n,1 builtins) when bash is executing a shell  script,
              its  value  is  interpreted as a filename containing commands to
              initialize the shell, as in(1,8) ~/.bashrc.  The value of BASH_ENV is
              subjected  to  parameter  expansion,  command  substitution, and
              arithmetic expansion before being interpreted as  a  file(1,n)  name.
              PATH is not used to search for the resultant file(1,n) name.
       CDPATH The  search  path for the cd command.  This is a colon-separated
              list of directories in(1,8) which the  shell  looks  for  destination
              directories  specified  by  the  cd  command.  A sample value is
              ".:~:/usr".
       COLUMNS
              Used by the select(2,7,2 select_tut) builtin command  to  determine  the  terminal
              width  when  printing  selection  lists.  Automatically set(7,n,1 builtins) upon
              receipt of a SIGWINCH.
       COMPREPLY
              An array variable from which bash reads the possible completions
              generated  by  a shell function invoked by the programmable com-
              pletion facility (see Programmable Completion below).
       EMACS  If bash finds this variable in(1,8) the environment  when  the  shell
              starts  with  value "t", it assumes that the shell is running in(1,8)
              an emacs shell buffer and disables line editing.
       FCEDIT The default editor for the fc builtin command.
       FIGNORE
              A colon-separated list of suffixes  to  ignore  when  performing
              filename completion (see READLINE below).  A filename whose suf-
              fix matches one of the entries in(1,8) FIGNORE is excluded  from  the
              list of matched filenames.  A sample value is ".o:~".
       GLOBIGNORE
              A colon-separated list of patterns defining the set(7,n,1 builtins) of filenames
              to be ignored by pathname expansion.  If a