bash: Special Parameters
1
1 3.4.2 Special Parameters
1 ------------------------
1
1 The shell treats several parameters specially. These parameters may
1 only be referenced; assignment to them is not allowed.
1
1 '*'
1 ($*) Expands to the positional parameters, starting from one. When
1 the expansion is not within double quotes, each positional
1 parameter expands to a separate word. In contexts where it is
1 performed, those words are subject to further word splitting and
1 pathname expansion. When the expansion occurs within double
1 quotes, it expands to a single word with the value of each
1 parameter separated by the first character of the 'IFS' special
1 variable. That is, '"$*"' is equivalent to '"$1C$2C..."', where C
1 is the first character of the value of the 'IFS' variable. If
1 'IFS' is unset, the parameters are separated by spaces. If 'IFS'
1 is null, the parameters are joined without intervening separators.
1
1 '@'
1 ($@) Expands to the positional parameters, starting from one. When
1 the expansion occurs within double quotes, each parameter expands
1 to a separate word. That is, '"$@"' is equivalent to '"$1" "$2"
1 ...'. If the double-quoted expansion occurs within a word, the
1 expansion of the first parameter is joined with the beginning part
1 of the original word, and the expansion of the last parameter is
1 joined with the last part of the original word. When there are no
1 positional parameters, '"$@"' and '$@' expand to nothing (i.e.,
1 they are removed).
1
1 '#'
1 ($#) Expands to the number of positional parameters in decimal.
1
1 '?'
1 ($?) Expands to the exit status of the most recently executed
1 foreground pipeline.
1
1 '-'
1 ($-, a hyphen.) Expands to the current option flags as specified
1 upon invocation, by the 'set' builtin command, or those set by the
1 shell itself (such as the '-i' option).
1
1 '$'
1 ($$) Expands to the process ID of the shell. In a '()' subshell,
1 it expands to the process ID of the invoking shell, not the
1 subshell.
1
1 '!'
1 ($!) Expands to the process ID of the job most recently placed
1 into the background, whether executed as an asynchronous command or
1 using the 'bg' builtin (⇒Job Control Builtins).
1
1 '0'
1 ($0) Expands to the name of the shell or shell script. This is set
1 at shell initialization. If Bash is invoked with a file of
1 commands (⇒Shell Scripts), '$0' is set to the name of that
11 file. If Bash is started with the '-c' option (⇒Invoking
Bash), then '$0' is set to the first argument after the string to
1 be executed, if one is present. Otherwise, it is set to the
1 filename used to invoke Bash, as given by argument zero.
1
1 '_'
1 ($_, an underscore.) At shell startup, set to the absolute
1 pathname used to invoke the shell or shell script being executed as
1 passed in the environment or argument list. Subsequently, expands
1 to the last argument to the previous command, after expansion.
1 Also set to the full pathname used to invoke each command executed
1 and placed in the environment exported to that command. When
1 checking mail, this parameter holds the name of the mail file.
1