Size: 6589
Comment:
|
Size: 5306
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 11: | Line 11: |
== Bash == | == Bash Internals == |
Line 13: | Line 13: |
`$BASHPID` is the current shell's PID. | |
Line 15: | Line 14: |
`$BASHOPTS` is a colon-delimited list of [[Bash/ShellOptions|enabled shell options]]. | |
Line 17: | Line 15: |
`$BASH_COMPAT` is the compat level of the shell. Setting to `4.2` or `42` is equivalent to using the `compat42` [[Bash/ShellOption#Compatibility_Mode|shell option. | === History === `$HISTFILE` is the `bash(1)` history filename. `$HISTFILESIZE` is the maximum file size for `$HISTFILE`, while `$HISTSIZE` the maximum number of commands for `$HISTFILE`. `$HISTCONTROL` and `$HISTIGNORE` configure which commands are recorded in the history. `$HISTCMD` is the current command's history number. If `$HISTTIMEFORMAT` is set, commands are recorded in the history with a timestamp formatted with this value. `$histchars` configure the history expansion. === Useful === `$BASHPID` is the current shell's PID. `$PPID` is the PID of the shell's parent. `$BASH_VERSION` is the current shell's version number. `$BASH_VERSINFO` is an array representing this information. `BASH_ENV` is a startup file used when `bash(1)` is used as a script interpretter. `$BASH_REMATCH` is an array set by the `=~` operator. The first item is the substring matching the entire regular expression. `${BASH_REMATCH[i]}` is the substring matching the ''i''th subexpression. `$BASH_XTRACEFD` will, if set to an integer corresponding to a valid [[Bash/FileDescriptor|file descriptor]], cause trace output to be written to that file descriptor. `$EMACS` and `$INSIDE_EMACS` are used to determine if the shell is operating within [[Emacs]], in which case line editing will be disabled. === Not Useful === `$BASHOPTS` is a colon-delimited list of [[Bash/ShellOption|enabled shell options]]. `$BASH_COMPAT` is the compat level of the shell. Setting to `4.2` or `42` is equivalent to using the `compat42` [[Bash/ShellOption#Compatibility_Mode|shell option]]. |
Line 20: | Line 54: |
`$BASH_LOADABLES_PATH` is a colon-separated list of directories searched for dynamically loadable builtins. |
|
Line 25: | Line 61: |
If `bash(1)` is called like `bash -c '...'`, `$BASH_EXECUTION_STRING` is set to the command string. | |
Line 26: | Line 63: |
`$BASH_ARGV` is an array containing all the arguments in the current shell call stack, while `$BASH_ARGC` is the count of those arguments. These are only set if [[Bash/ShellOptions#Extended_Debugging_Mode|extended debugging mode]] is on. |
`$BASH_ARGV` is an array containing all the arguments in the current shell call stack, while `$BASH_ARGC` is the count of those arguments. These are only set if [[Bash/ShellOption#Extended_Debugging_Mode|extended debugging mode]] is on. |
Line 32: | Line 67: |
`$FUNCNAME` is an array of functions currently in the call stack. `$BASH_SOURCE` is an array of source filenames corresponding to `$FUNCNAME`. Function `${FUNCNAME[i]}` is defined in file `${BASH_SOURCE[i]}`. Similarly, `$BASH_LINENO` is an array of line numbers that corresponds to `$FUNCNAME`. Function `${FUNCNAME[i]}` is called from line number `${BASH_LINENO[i]}`. | |
Line 33: | Line 69: |
The value is used to set the shell’s compatibility level. See Shell Compatibility Mode, for a description of the various compatibility levels and their effects. The value may be a decimal number (e.g., 4.2) or an integer (e.g., 42) corresponding to the desired compatibility level. If BASH_COMPAT is unset or set to the empty string, the compatibility level is set to the default for the current version. If BASH_COMPAT is set to a value that is not one of the valid compatibility levels, the shell prints an error message and sets the compatibility level to the default for the current version. The valid values correspond to the compatibility levels described below (see Shell Compatibility Mode). For example, 4.2 and 42 are valid values that correspond to the compat42 shopt option and set the compatibility level to 42. The current version is also a valid value. 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 Bash Startup Files. BASH_EXECUTION_STRING The command argument to the -c invocation option. BASH_LINENO An array variable whose members are the line numbers in source files where each corresponding member of FUNCNAME was invoked. ${BASH_LINENO[$i]} is the line number in the source file (${BASH_SOURCE[$i+1]}) where ${FUNCNAME[$i]} was called (or ${BASH_LINENO[$i-1]} if referenced within another shell function). Use LINENO to obtain the current line number. BASH_LOADABLES_PATH A colon-separated list of directories in which the shell looks for dynamically loadable builtins specified by the enable command. BASH_REMATCH An array variable whose members are assigned by the ‘=~’ binary operator to the [[ conditional command (see Conditional Constructs). The element with index 0 is the portion of the string matching the entire regular expression. The element with index n is the portion of the string matching the nth parenthesized subexpression. BASH_SOURCE An array variable whose members are the source filenames where the corresponding shell function names in the FUNCNAME array variable are defined. The shell function ${FUNCNAME[$i]} is defined in the file ${BASH_SOURCE[$i]} and called from ${BASH_SOURCE[$i+1]} BASH_SUBSHELL Incremented by one within each subshell or subshell environment when the shell begins executing in that environment. The initial value is 0. If BASH_SUBSHELL is unset, it loses its special properties, even if it is subsequently reset. BASH_VERSINFO A readonly array variable (see 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. BASH_VERSION The version number of the current instance of Bash. BASH_XTRACEFD If set to an integer corresponding to a valid file descriptor, Bash will write the trace output generated when ‘set -x’ is enabled to that file descriptor. This allows tracing output to be separated from diagnostic and error messages. The file descriptor is closed when BASH_XTRACEFD is unset or assigned a new value. Unsetting BASH_XTRACEFD or assigning it the empty string causes the trace output to be sent to the standard error. Note that setting BASH_XTRACEFD to 2 (the standard error file descriptor) and then unsetting it will result in the standard error being closed. ---- == Directory Stack == `$DIRSTACK` is an array containing the directory stack. |
`$BASH_SUBSHELL` is the current nesting level of shells. |
Line 114: | Line 88: |
`$HOME` is the user's home directory. | |
Line 130: | Line 103: |
== Locale == `$LC_COLLATE`, `$LC_CTYPE`, `$LC_MESSAGES`, `$LC_NUMERIC`, and `$LC_TIME` are all used in different contexts to determine the current locale. `$LANG` is the fallback value. `$LC_ALL` overrides `$LANG` and all of the above if set. ---- |
|
Line 136: | Line 119: |
`$MAILCHECK` is the number of seconds `bash(1)` will wait between checks. The default is 60. |
|
Line 140: | Line 125: |
== Path == | == Paths == `$PWD` is the current working directory. |
Line 145: | Line 132: |
`$DIRSTACK` is an array containing the directory stack, as manipulated by the `popd` and `pushd` builtins. |
|
Line 158: | Line 147: |
`$PS0` `$PS4` ---- == User == `$UID` is the user's ID. `$EUID` is the effective EID. `$GROUPS` is an array of groups the user is a member of. `$HOME` is the user's home directory. |
Bash Shell Variables
This is a list of special variables that are set in bash(1) to configure it's behavior, or by bash(1) to indicate state. For programming variables, including special ones, see here.
Contents
Bash Internals
History
$HISTFILE is the bash(1) history filename.
$HISTFILESIZE is the maximum file size for $HISTFILE, while $HISTSIZE the maximum number of commands for $HISTFILE.
$HISTCONTROL and $HISTIGNORE configure which commands are recorded in the history.
$HISTCMD is the current command's history number.
If $HISTTIMEFORMAT is set, commands are recorded in the history with a timestamp formatted with this value.
$histchars configure the history expansion.
Useful
$BASHPID is the current shell's PID. $PPID is the PID of the shell's parent.
$BASH_VERSION is the current shell's version number. $BASH_VERSINFO is an array representing this information.
BASH_ENV is a startup file used when bash(1) is used as a script interpretter.
$BASH_REMATCH is an array set by the =~ operator. The first item is the substring matching the entire regular expression. ${BASH_REMATCH[i]} is the substring matching the ith subexpression.
$BASH_XTRACEFD will, if set to an integer corresponding to a valid file descriptor, cause trace output to be written to that file descriptor.
$EMACS and $INSIDE_EMACS are used to determine if the shell is operating within Emacs, in which case line editing will be disabled.
Not Useful
$BASHOPTS is a colon-delimited list of enabled shell options.
$BASH_COMPAT is the compat level of the shell. Setting to 4.2 or 42 is equivalent to using the compat42 shell option.
$BASH_ALIASES is an associative array of aliases. $BASH_CMDS is an associative array of builtins.
$BASH_LOADABLES_PATH is a colon-separated list of directories searched for dynamically loadable builtins.
$_ is, at first, the pathname used to call the shell. Thereafter every time a command is called, $_ is the last argument to that command. Furthermore, while a command is executed, $_ is set to the pathname used to call that command. This is exposed when a command inspects its environment.
$BASH_COMMAND is the command currently executing. If bash(1) is executing a trap, $BASH_COMMAND will show the command that triggered the trap.
If bash(1) is called like bash -c '...', $BASH_EXECUTION_STRING is set to the command string.
$BASH_ARGV is an array containing all the arguments in the current shell call stack, while $BASH_ARGC is the count of those arguments. These are only set if extended debugging mode is on.
In a similar manner, $BASH_ARGV0 is the name of the shell. It is identical to $0.
$FUNCNAME is an array of functions currently in the call stack. $BASH_SOURCE is an array of source filenames corresponding to $FUNCNAME. Function ${FUNCNAME[i]} is defined in file ${BASH_SOURCE[i]}. Similarly, $BASH_LINENO is an array of line numbers that corresponds to $FUNCNAME. Function ${FUNCNAME[i]} is called from line number ${BASH_LINENO[i]}.
$BASH_SUBSHELL is the current nesting level of shells.
Get Opts
The getopts builtin sets two variables:
$OPTARG is the most recent options's value
$OPTIND is the most recent option's index
Home
Inter Field Separator
$IFS defines the characters that should be interpreted as separating tokens.
Frequently, this is only manipulated when writing a pipeline that specially delimits items with the null byte.
Locale
$LC_COLLATE, $LC_CTYPE, $LC_MESSAGES, $LC_NUMERIC, and $LC_TIME are all used in different contexts to determine the current locale.
$LANG is the fallback value. $LC_ALL overrides $LANG and all of the above if set.
If $MAIL is set, bash(1) monitors it (assuming it is a mail file or Maildir directory) and informs the user of changes.
Similarly, $MAILPATH is a colon-delimited list of locations to monitor. If set, $MAIL is not monitored.
$MAILCHECK is the number of seconds bash(1) will wait between checks. The default is 60.
Paths
$PWD is the current working directory.
$PATH is a colon-delimited list of directories searched for commands.
$CDPATH is similarly searched by the cd builtin.
$DIRSTACK is an array containing the directory stack, as manipulated by the popd and pushd builtins.
Prompts
$PS1 is printed at the beginning of every command prompt.
$PS2 is printed at the beginning of run-on lines.
$PS3 is printed at the prompt in select menus.
$PS0
$PS4
User
$UID is the user's ID. $EUID is the effective EID.
$GROUPS is an array of groups the user is a member of.
$HOME is the user's home directory.