5. Shell Variables
This chapter describes the shell variables that Bash uses.
Bash automatically assigns default values to a number of variables.
5.1 Bourne Shell Variables
Bash uses certain shell variables in the same way as the Bourne shell.
In some cases, Bash assigns a default value to the variable.
CDPATH
-
A colon-separated list of directories used as a search path for
the
cd
builtin command.
HOME
-
The current user's home directory; the default for the
cd
builtin
command.
The value of this variable is also used by tilde expansion
(see section 3.5.2 Tilde Expansion).
IFS
-
A list of characters that separate fields; used when the shell splits
words as part of expansion.
MAIL
-
If this parameter is set to a filename and the
MAILPATH
variable
is not set, Bash informs the user of the arrival of mail in
the specified file.
MAILPATH
-
A colon-separated list of filenames which the shell periodically checks
for new mail.
Each list entry can specify the message that is printed when new mail
arrives in the mail file by separating the file name from the message with
a `?'.
When used in the text of the message,
$_
expands to the name of
the current mail file.
OPTARG
-
The value of the last option argument processed by the
getopts
builtin.
OPTIND
-
The index of the last option argument processed by the
getopts
builtin.
PATH
-
A colon-separated list of directories in which the shell looks for
commands.
PS1
-
The primary prompt string. The default value is `\s-\v\$ '.
See section 6.9 Controlling the Prompt, for the complete list of escape
sequences that are expanded before
PS1
is displayed.
PS2
-
The secondary prompt string. The default value is `> '.
5.2 Bash Variables
These variables are set or used by Bash, but other shells
do not normally treat them specially.
A few variables used by Bash are described in different chapters:
variables for controlling the job control facilities
(see section 7.3 Job Control Variables).
BASH
-
The full pathname used to execute the current instance of Bash.
BASH_ENV
-
If this variable is set when Bash is invoked to execute a shell
script, its value is expanded and used as the name of a startup file
to read before executing the script. See section 6.2 Bash Startup Files.
BASH_VERSION
-
The version number of the current instance of Bash.
BASH_VERSINFO
-
A readonly array variable (see section 6.7 Arrays)
whose members hold version information for this instance of Bash.
The values assigned to the array members are as follows:
BASH_VERSINFO[0]
- The major version number (the release).
BASH_VERSINFO[1]
- The minor version number (the version).
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
.
COLUMNS
-
Used by the
select
builtin command to determine the terminal width
when printing selection lists. Automatically set upon receipt of a
SIGWINCH
.
COMP_CWORD
-
An index into
${COMP_WORDS}
of the word containing the current
cursor position.
This variable is available only in shell functions invoked by the
programmable completion facilities (see section 8.6 Programmable Completion).
COMP_LINE
-
The current command line.
This variable is available only in shell functions and external
commands invoked by the
programmable completion facilities (see section 8.6 Programmable Completion).
COMP_POINT
-
The index of the current cursor position relative to the beginning 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 shell functions and external
commands invoked by the
programmable completion facilities (see section 8.6 Programmable Completion).
COMP_WORDS
-
An array variable consisting of the individual
words in the current command line.
This variable is available only in shell functions invoked by the
programmable completion facilities (see section 8.6 Programmable Completion).
COMPREPLY
-
An array variable from which Bash reads the possible completions
generated by a shell function invoked by the programmable completion
facility (see section 8.6 Programmable Completion).
DIRSTACK
-
An array variable containing the current contents of the directory stack.
Directories appear in the stack in the order they are displayed by the
dirs
builtin.
Assigning to members of this array variable may be used to modify
directories already in the stack, but the pushd
and popd
builtins must be used to add and remove directories.
Assignment to this variable will not change the current directory.
If DIRSTACK
is unset, it loses its special properties, even if
it is subsequently reset.
EUID
-
The numeric effective user id of the current user. This variable
is readonly.
FCEDIT
-
The editor used as a default by the `-e' option to the
fc
builtin command.
FIGNORE
-
A colon-separated list of suffixes to ignore when performing
filename completion.
A file name whose suffix matches one of the entries in
FIGNORE
is excluded from the list of matched file names. A sample
value is `.o:~'
FUNCNAME
-
The name of any currently-executing shell function.
This variable exists only when a shell function is executing.
Assignments to
FUNCNAME
have no effect and return an error status.
If FUNCNAME
is unset, it loses its special properties, even if
it is subsequently reset.
GLOBIGNORE
-
A colon-separated list of patterns defining the set of filenames to
be ignored by filename expansion.
If a filename matched by a filename expansion pattern also matches one
of the patterns in
GLOBIGNORE
, it is removed from the list
of matches.
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 status.
If GROUPS
is unset, it loses its special properties, even if it is
subsequently reset.
histchars
-
Up to three characters which control history expansion, quick
substitution, and tokenization (see section 9.3 History Expansion).
The first character is the
history expansion character, that is, the character which signifies the
start of a history expansion, normally `!'. The second character is the
character which signifies `quick substitution' when seen as the first
character on a line, normally `^'. The optional third character is the
character which indicates that the remainder of the line is a comment when
found as the first character of a word, usually `#'. The history
comment character causes history substitution to be skipped for the
remaining words on the line. It does not necessarily cause the shell
parser to treat the rest of the line as a comment.
HISTCMD
-
The history number, or index in the history list, of the current
command. If
HISTCMD
is unset, it loses its special properties,
even if it is subsequently reset.
HISTCONTROL
-
A value of `ignorespace' means to not enter lines which
begin with a space or tab into the history list.
A value of `ignoredups' means to not enter lines which match the last
entered line.
A value of `ignoreboth' combines the two options.
Unset, or set to any other value than those above, means to save
all lines on the history list.
The second and subsequent lines of a multi-line compound command are
not tested, and are added to the history regardless of the value of
HISTCONTROL
.
HISTFILE
-
The name of the file to which the command history is saved. The
default value is `~/.bash_history'.
HISTFILESIZE
-
The maximum number of lines contained in the history file. When this
variable is assigned a value, the history file is truncated, if
necessary, to contain no more than that number of lines.
The history file is also truncated to this size after
writing it when an interactive shell exits.
The default value is 500.
HISTIGNORE
-
A colon-separated list of patterns used to decide which command
lines should be saved on the history list. Each pattern is
anchored at the beginning of the line and must match the complete
line (no implicit `*' is appended). Each pattern is tested
against the line after the checks specified by
HISTCONTROL
are applied. In addition to the normal shell pattern matching
characters, `&' matches the previous history line. `&'
may be escaped using a backslash; the backslash is removed
before attempting a match.
The second and subsequent lines of a multi-line compound command are
not tested, and are added to the history regardless of the value of
HISTIGNORE
.
HISTIGNORE
subsumes the function of HISTCONTROL
. A
pattern of `&' is identical to ignoredups
, and a
pattern of `[ ]*' is identical to ignorespace
.
Combining these two patterns, separating them with a colon,
provides the functionality of ignoreboth
.
HISTSIZE
-
The maximum number of commands to remember on the history list.
The default value is 500.
HOSTFILE
-
Contains the name of a file in the same format as `/etc/hosts' that
should be read when the shell needs to complete a hostname.
The list of possible hostname completions may be changed while the shell
is running;
the next time hostname completion is attempted after the
value is changed, Bash adds the contents of the new file to the
existing list.
If
HOSTFILE
is set, but has no value, Bash attempts to read
`/etc/hosts' to obtain the list of possible hostname completions.
When HOSTFILE
is unset, the hostname list is cleared.
HOSTNAME
-
The name of the current host.
HOSTTYPE
-
A string describing the machine Bash is running on.
IGNOREEOF
-
Controls the action of the shell on receipt of an
EOF
character
as the sole input. If set, the value denotes the number
of consecutive EOF
characters that can be read as the
first character on an input line
before the shell will exit. If the variable exists but does not
have a numeric value (or has no value) then the default is 10.
If the variable does not exist, then EOF
signifies the end of
input to the shell. This is only in effect for interactive shells.
INPUTRC
-
The name of the Readline initialization file, overriding the default
of `~/.inputrc'.
LANG
-
Used to determine the locale category for any category not specifically
selected with a variable starting with
LC_
.
LC_ALL
-
This variable overrides the value of
LANG
and any other
LC_
variable specifying a locale category.
LC_COLLATE
-
This variable determines the collation order used when sorting the
results of filename expansion, and
determines the behavior of range expressions, equivalence classes,
and collating sequences within filename expansion and pattern matching
(see section 3.5.8 Filename Expansion).
LC_CTYPE
-
This variable determines the interpretation of characters and the
behavior of character classes within filename expansion and pattern
matching (see section 3.5.8 Filename Expansion).
LC_MESSAGES
-
This variable determines the locale used to translate double-quoted
strings preceded by a `$' (see section 3.1.2.5 Locale-Specific Translation).
LC_NUMERIC
-
This variable determines the locale category used for number formatting.
LINENO
-
The line number in the script or shell function currently executing.
LINES
-
Used by the
select
builtin command to determine the column length
for printing selection lists. Automatically set upon receipt of a
SIGWINCH
.
MACHTYPE
-
A string that fully describes the system type on which Bash
is executing, in the standard GNU cpu-company-system format.
MAILCHECK
-
How often (in seconds) that the shell should check for mail in the
files specified in the
MAILPATH
or MAIL
variables.
The default is 60 seconds. When it is time to check
for mail, the shell does so before displaying the primary prompt.
If this variable is unset, or set to a value that is not a number
greater than or equal to zero, the shell disables mail checking.
OLDPWD
-
The previous working directory as set by the
cd
builtin.
OPTERR
-
If set to the value 1, Bash displays error messages
generated by the
getopts
builtin command.
OSTYPE
-
A string describing the operating system Bash is running on.
PIPESTATUS
-
An array variable (see section 6.7 Arrays)
containing a list of exit status values from the processes
in the most-recently-executed foreground pipeline (which may
contain only a single command).
POSIXLY_CORRECT
-
If this variable is in the environment when
bash
starts, the shell
enters POSIX mode (see section 6.11 Bash POSIX Mode) before reading the
startup files, as if the `--posix' invocation option had been supplied.
If it is set while the shell is running, bash
enables POSIX mode,
as if the command
had been executed.
PPID
-
The process ID of the shell's parent process. This variable
is readonly.
PROMPT_COMMAND
-
If set, the value is interpreted as a command to execute
before the printing of each primary prompt (
$PS1
).
PS3
-
The value of this variable is used as the prompt for the
select
command. If this variable is not set, the
select
command prompts with `#? '
PS4
-
The value is the prompt printed before the command line is echoed
when the `-x' option is set (see section 4.3 The Set Builtin).
The first character of
PS4
is replicated multiple times, as
necessary, to indicate multiple levels of indirection.
The default is `+ '.
PWD
-
The current working directory as set by the
cd
builtin.
RANDOM
-
Each time this parameter is referenced, a random integer
between 0 and 32767 is generated. Assigning a value to this
variable seeds the random number generator.
REPLY
-
The default variable for the
read
builtin.
SECONDS
-
This variable expands to the number of seconds since the
shell was started. Assignment to this variable resets
the count to the value assigned, and the expanded value
becomes the value assigned plus the number of seconds
since the assignment.
SHELLOPTS
-
A colon-separated list of enabled shell options. Each word in
the list is a valid argument for the `-o' option to the
set
builtin command (see section 4.3 The Set Builtin).
The options appearing in SHELLOPTS
are those reported
as `on' by `set -o'.
If this variable is in the environment when Bash
starts up, each shell option in the list will be enabled before
reading any startup files. This variable is readonly.
SHLVL
-
Incremented by one each time a new instance of Bash is started. This is
intended to be a count of how deeply your Bash shells are nested.
TIMEFORMAT
-
The value of this parameter is used as a format string specifying
how the timing information for pipelines prefixed with the
time
reserved word should be displayed.
The `%' character introduces an
escape sequence that is expanded to a time value or other
information.
The escape sequences and their meanings are as
follows; the braces denote optional portions.
%%
- A literal `%'.
%[p][l]R
- The elapsed time in seconds.
%[p][l]U
- The number of CPU seconds spent in user mode.
%[p][l]S
- The number of CPU seconds spent in system mode.
%P
- The CPU percentage, computed as (%U + %S) / %R.
The optional p is a digit specifying the precision, the number of
fractional digits after a decimal point.
A value of 0 causes no decimal point or fraction to be output.
At most three places after the decimal point may be specified; values
of p greater than 3 are changed to 3.
If p is not specified, the value 3 is used.
The optional l
specifies a longer format, including minutes, of
the form MMmSS.FFs.
The value of p determines whether or not the fraction is included.
If this variable is not set, Bash acts as if it had the value
| $'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS'
|
If the value is null, no timing information is displayed.
A trailing newline is added when the format string is displayed.
TMOUT
-
If set to a value greater than zero, the value is interpreted as
the number of seconds to wait for input after issuing the primary
prompt when the shell is interactive.
Bash terminates after that number of seconds if input does
not arrive.
UID
-
The numeric real user id of the current user. This variable is readonly.
This document was generated
on May 3, 2002
using texi2html