5.2 Bash 变量
这些变量是由Bash设置或使用的,但其他shell通常不会特别对待它们。
Bash使用的一些变量在不同的章节中都有描述:用于作业控制的变量(见7.3 作业控制的变量)。
_
-
($_,下划线。)在shell启动时,设置为用于调用环境或参数列表中传递的正在执行的shell或shell脚本的路径名。 随后,扩展到前台执行的前一个简单命令的最后一个参数。也设置为用于调用每个被执行的命令的完整路径名,并放置在导出到该命令的环境中。 检查邮件时,该参数持有邮件文件的名称。
BASH
用来执行当前Bash实例的完整路径名。
BASHOPTS
一个用冒号分隔的启用的shell选项的列表。列表中的每个字都是
shopt
内置命令的-s选项的有效参数(见2 Shopt 内置程序)。出现在BASHOPTS
中的选项是那些由’shopt’报告为‘on选项的。 如果Bash启动时环境中存在这个变量,在读取任何启动文件之前,列表中的每个shell选项将被启用。这个变量是只读的。BASHPID
扩展到当前Bash进程的进程ID。在某些情况下与
$$
不同,比如子shell不需要重新初始化Bash。对BASHPID
的赋值没有影响。如果BASHPID
没有被设置,它将失去其特殊的属性,即使随后被重置。BASH_ALIASES
一个关联数组变量,其成员对应于由
alias
内置程序维护的内部别名列表。 (见4.1 Bourne Shell内置程序)。 添加到这个数组的元素会出现在别名列表中;但是,取消数组元素目前不会导致别名从别名列表中删除。 如果BASH_ALIASES
被取消设置,它将失去其特殊属性,即使它随后被重新设置。BASH_ARGC
一个数组变量,其值是当前bash执行调用栈中每一帧的参数数。当前子程序(用
.
或source
执行的shell函数或脚本)的参数数在栈的顶部。当一个子程序被执行时, 传递的参数数会被推到BASH_ARGC
上。shell只有在扩展调试模式下才会设置BASH_ARGC
(参见2 Shopt 内置程序关于shopt
内置的extdebug
选项的描述)。在shell开始执行脚本后设置extdebug
,或者在extdebug
没有被设置时引用这个变量,可能导致不一致的值。BASH_ARGV
一个数组变量,包含了当前bash执行调用栈中的所有参数。最后一个子程序调用的最后一个参数在堆栈的顶部;最初调用的第一个参数在底部。当一个子程序被执行时, 所提供的参数会被推到
BASH_ARGV
上。shell只有在扩展调试模式下才会设置BASH_ARGV
(参见2 Shopt 内置程序关于shopt
Builtin的extdebug
选项的描述)。在shell开始执行脚本后设置extdebug
,或者在extdebug
没有设置时引用这个变量,可能导致数值不一致。BASH_ARGV0
当被引用时,这个变量扩展为shell或shell脚本的名称(与
$0
相同;参见2 特殊参数,关于特殊参数0的描述)。 对BASH_ARGV0
的赋值会导致所赋值也被赋给$0
。 如果BASH_ARGV0
未被设置,它将失去其特殊属性,即使它随后被重置。BASH_CMDS
一个关联数组变量,其成员对应于由
hash
内置程序维护的内部命令哈希表(见4.1 Bourne Shell内置程序)。 添加到该数组的元素会出现在哈希表中;但是,目前取消数组元素并不会导致命令名称从哈希表中删除。 如果BASH_CMDS
被取消设置,它将失去其特殊属性,即使随后被重置也一样。BASH_COMMAND
目前正在执行或即将执行的命令,除非shell正在执行一条作为陷阱结果的命令,在这种情况下,它是陷阱发生时正在执行的命令。 如果
BASH_COMMAND
没有被设置,它将失去其特殊属性,即使它随后被重置。BASH_COMPAT
该值用于设置shell的兼容性级别。 参见6.12 shell的兼容模式,以了解各种兼容性级别及其影响。 该值可以是一个十进制数字(例如,4.2)或一个整数(例如,42),对应于所需的兼容性级别。如果
BASH_COMPAT
没有设置或设置为空字符串,兼容性级别将被设置为当前版本的默认值。 如果BASH_COMPAT
被设置为一个不是有效的兼容性级别的值,shell将打印一个错误信息并将兼容性级别设置为当前版本的默认值。有效的值对应于下面描述的兼容性级别(见6.12 shell的兼容模式)。 例如,4.2和42是有效的值,对应于compat42
shopt
选项,并将兼容性级别设置为42。 当前版本也是一个有效的值。BASH_ENV
如果在调用Bash执行一个shell脚本时设置了这个变量, 它的值会被扩展并作为执行脚本前要读取的启动文件的名称。参见6.2 Bash的启动文件。
BASH_EXECUTION_STRING
-c 调用选项的命令参数。
BASH_LINENO
一个数组变量,其成员是源文件中的行号,其中
FUNCNAME
的每个对应成员都被调用。${BASH_LINENO[$i]}
是源文件中的行号(${BASH_SOURCE[$i+1]}
),其中${FUNCNAME[$i]}
被调用(或者${BASH_LINENO[$i-1]}
如果在另一个shell函数中被引用)。使用LINENO
来获得当前的行号。BASH_LOADABLES_PATH
一个用冒号分隔的目录列表,shell在其中寻找由
enable
命令指定的可动态加载的内置程序。BASH_REMATCH
一个数组变量,其成员由‘=~’二进制运算符分配给
[[
条件命令(见5.2 条件性结构)。 索引为0的元素是字符串中与整个正则表达式匹配的部分。 索引为n的元素是字符串中与n第1个括号内的子表达式相匹配的部分。BASH_SOURCE
一个数组变量,其成员是在
FUNCNAME
数组变量中定义了相应的shell函数名称的源文件名。 shell函数${FUNCNAME[$i]}
是在文件${BASH_SOURCE[$i]}
中定义的,并从${BASH_SOURCE[$i+1]}
中调用。BASH_SUBSHELL
当shell开始在每个子shell环境中执行时,在每个子shell环境中增加1。 初始值是0。如果
BASH_SUBSHELL
没有被设置,它将失去其特殊的属性,即使它随后被重置。BASH_VERSINFO
一个只读的数组变量(见6.7 数组),其成员持有Bash的这个实例的版本信息。 分配给数组成员的值如下:。
BASH_VERSINFO[0]
主要版本号(即release)。
BASH_VERSINFO[1]
次要版本号(即version)。
BASH_VERSINFO[2]
补丁的级别。
BASH_VERSINFO[3]
构建的版本。
BASH_VERSINFO[4]
发布状态(例如,
beta1
)。BASH_VERSINFO[5]
值为
MACHTYPE
。
BASH_VERSION
当前Bash实例的版本号。
BASH_XTRACEFD
如果设置为与有效文件描述符相对应的整数,Bash将把‘set -x’启用时产生的跟踪输出写入该文件描述符。 这允许跟踪输出与诊断和错误信息分开。当
BASH_XTRACEFD
被取消设置或被赋予新的值时,文件描述符将被关闭。 取消设置BASH_XTRACEFD
或将其赋予空字符串会导致跟踪输出被发送到标准错误。 注意,将BASH_XTRACEFD
设置为2(标准错误文件描述符)然后取消设置将导致标准错误被关闭。CHILD_MAX
设置退出的子状态值的数量,让shell记住。 Bash不允许这个值减少到低于POSIX规定的最小值,而且有一个最大值(目前是8192),这个值不能超过。 最小值是由系统决定的。
COLUMNS
当打印选择列表时,
select
命令用来确定终端宽度。 如果checkwinsize
选项被启用,则自动设置(见2 Shopt 内置程序),或者在交互式shell中收到SIGWINCH
时,自动设置。COMP_CWORD
包含当前光标位置的字在
${COMP_WORDS}
中的索引。 这个变量只在由可编程完成设施调用的shell函数中可用(见可编程完成)。COMP_LINE
当前的命令行。 这个变量只在shell函数和由可编程完成工具调用的外部命令中可用(见可编程完成)。
COMP_POINT
当前光标位置相对于当前命令开头的索引。 如果当前光标位置在当前命令的末尾,这个变量的值等于
${#COMP_LINE}
。 这个变量只在shell函数和由可编程完成工具调用的外部命令中可用(见可编程完成)。COMP_TYPE
设为一个整数值,对应于导致调用完成函数的完成类型:TAB,用于正常完成,‘?’,用于列出连续选项卡后的完成,‘!’,用于列出部分单词完成时的替代方案,‘@’,用于在单词没有被修改的情况下列出完成,或者‘%’,用于菜单完成。 这个变量只在shell函数和由可编程完成工具调用的外部命令中可用(见8.6 可编程完成)。
COMP_KEY
用于调用当前完成功能的键(或键序列的最后一个键)。
COMP_WORDBREAKS
Readline库在执行单词补全时被视为单词分隔符的字符集。 如果
COMP_WORDBREAKS
未被设置,它将失去其特殊属性,即使随后被重置也是如此。COMP_WORDS
由当前命令行中的各个单词组成的数组变量。 该行被拆分为单词,就像 Readline 将其拆分一样,如上所述,使用
COMP_WORDBREAKS
。 此变量仅在由可编程完成工具调用的 shell 函数中可用(见可编程完成)。COMPREPLY
一个数组变量,Bash从中读取由可编程完成工具(见8.6 可编程完成)调用的shell函数所产生的可能的完成。 每个数组元素都包含一个可能的完成。
COPROC
一个数组变量,用来保存一个未命名的协处理的输出和输入的文件描述符(见协处理)。
DIRSTACK
一个数组变量,包含了目录栈的当前内容。 目录在栈中出现的顺序是由
dirs
内置程序显示的。 对这个数组变量的赋值可以用来修改已经在栈中的目录,但pushd
和popd
内置程序必须用来添加和删除目录。 对这个变量的赋值不会改变当前目录。 如果DIRSTACK
没有被设置,它将失去其特殊属性,即使它随后被重置了。EMACS
如果Bash在环境中发现这个变量,当shell以‘t’开始时,它就会假定shell是在Emacs shell缓冲区中运行的,并禁用行编辑。
ENV
当在POSIX模式(见6.11 Bash的POSIX模式)下调用交互式shell时,与
BASH_ENV
类似地展开和执行(见6.2 Bash的启动文件)。EPOCHREALTIME
每次引用这个参数时,它都会扩展为自Unix Epoch以来的秒数,是一个微秒级的浮点值(关于Epoch的定义,请参见C库函数
time
的文档)。 对EPOCHREALTIME
的赋值被忽略。 如果EPOCHREALTIME
没有被设置,它将失去其特殊属性,即使它随后被重置了。EPOCHSECONDS
每次引用这个参数时,它都会扩展为自Unix Epoch以来的秒数(关于Epoch的定义,请参见C库函数
time
的文档)。 对EPOCHSECONDS
的赋值被忽略。 如果EPOCHSECONDS
未被设置,它将失去其特殊属性,即使它随后被重置了。EUID
当前用户的数字式有效用户ID。这个变量是只读的。
EXECIGNORE
以冒号分隔的shell模式列表(见8.1 模式匹配),定义了使用
PATH
进行命令搜索时要忽略的文件名列表。 就完成和通过PATH
查询执行命令而言,全路径名符合这些模式之一的文件不被视为可执行文件。这并不影响[
、test
和[[
命令的行为。 命令哈希表中的全路径名不受EXECIGNORE
的影响。 使用这个变量可以忽略那些设置了可执行位但不是可执行文件的共享库文件。 模式匹配尊重extglob
shell选项的设置。FCEDIT
fc
内置命令的-e选项所使用的默认编辑器。FIGNORE
一个以冒号分隔的后缀列表,在执行文件名补全时将被忽略。 后缀与
FIGNORE
中的条目之一相匹配的文件名将从匹配的文件名列表中排除。一个示例值是‘.o:~’FUNCNAME
一个数组变量,包含了当前在执行调用栈中的所有shell函数的名称。 索引为0的元素是任何当前执行的shell函数的名称。 最下面的元素(索引最高的)是
"main"
。 这个变量只在shell函数执行时存在。 对FUNCNAME
的赋值没有影响。 如果FUNCNAME
没有被设置,它将失去其特殊属性,即使它随后被重置了。这个变量可以与
BASH_LINENO
和BASH_SOURCE
一起使用。FUNCNAME
的每个元素在BASH_LINENO
和BASH_SOURCE
中都有相应的元素来描述调用堆栈。 例如,${FUNCNAME[$i]}
是从文件${BASH_SOURCE[$i+1]}
的行号${BASH_LINENO[$i]}
处调用的。caller
内置程序使用这些信息来显示当前的调用堆栈。FUNCNEST
如果设置为大于0的数值,定义了一个最大的函数嵌套级别。超过这个嵌套级别的函数调用将导致当前命令中止。
GLOBIGNORE
一个以冒号分隔的模式列表,定义了文件名扩展要忽略的文件名集合。 如果一个文件名被文件名扩展模式匹配,同时也匹配
GLOBIGNORE
中的一个模式,它就会从匹配列表中删除。 模式匹配尊重extglob
shell选项的设置。GROUPS
一个数组变量,包含了当前用户是成员的组的列表。 对
GROUPS
的赋值没有影响。 如果GROUPS
没有被设置,它将失去其特殊的属性,即使它随后被重置。histchars
最多三个控制历史扩展、快速替换和标记化的字符(见9.3 历史扩展)。 第一个字符是历史扩展字符,即表示历史扩展开始的字符,通常是‘!’。第二个字符是表示‘快速替换’的字符,当它作为一行的第一个字符时,通常是‘^’。可选的第三个字符是当发现作为一个词的第一个字符时,表示该行的剩余部分是一个注释,通常是‘#’。历史注释字符会使该行的剩余字数跳过历史替换。它不一定导致shell解析器将该行的其余部分视为注释。
HISTCMD
当前命令的历史编号,或在历史列表中的索引。 对
HISTCMD
的分配被忽略。 如果HISTCMD
未被设置,它将失去其特殊属性,即使它随后被重置。HISTCONTROL
一个以冒号分隔的数值列表,控制命令在历史列表中的保存方式。 如果数值列表中包括‘ignorespace’,则以空格字符开始的行不会保存在历史列表中。值为‘ignoredups’会导致与前一个历史条目相匹配的行不被保存。 值为‘ignoreboth’是‘ignorespace’和‘ignoredups’的缩写。值为‘erasedups’会使所有与当前行相匹配的前几行在该行被保存之前从历史列表中删除。 任何不在上述列表中的值都会被忽略。 如果
HISTCONTROL
没有被设置,或者不包括一个有效的值,所有由shell解析器读取的行都会被保存在历史列表中,但要受到HISTIGNORE
值的限制。 一个多行复合命令的第二行和后续行不会被测试,无论HISTCONTROL
的值是多少,都会被加入历史。HISTFILE
保存命令历史的文件名。默认值是~/.bash_history。
HISTFILESIZE
历史文件中包含的最大行数。 当这个变量被赋值时,如果有必要,历史文件会被截断,通过删除最老的条目,使其不超过这个行数。 当shell退出时,历史文件也会被截断到这个大小。 如果值为0,历史文件会被截断到零大小。 非数字值和小于零的数字值会抑制截断。 shell在读取任何启动文件后会将默认值设置为
HISTSIZE
的值。HISTIGNORE
一个用冒号分隔的模式列表,用于决定哪些命令行应该保存在历史列表中。每个模式都被固定在行的开头,并且必须与整个行相匹配(没有隐含的‘*’被附加)。在应用了
HISTCONTROL
指定的检查后,每个模式都针对该行进行测试。除了正常的shell模式匹配字符外,‘&’匹配前一个历史行。‘&’可以用反斜杠转义;在尝试匹配前,反斜杠会被删除。多行复合命令的第二行和后续行不被测试,无论HISTIGNORE
的值是多少,都会被添加到历史记录中。 模式匹配会尊重extglob
shell选项的设置。HISTIGNORE
包含了HISTCONTROL
的功能。一个‘&’的模式与ignoredups
相同,而一个‘[]*’的模式与ignorespace
相同。将这两个模式结合起来,用冒号隔开,就可以实现ignoreboth
的功能。HISTSIZE
记忆在历史列表中的最大命令数。 如果数值为0,命令不会被保存在历史列表中。 小于0的数值会导致每条命令都被保存在历史列表中(没有限制)。 shell在读取任何启动文件后会将默认值设为500。
HISTTIMEFORMAT
如果这个变量被设置且不为空,它的值将作为
strftime
的格式字符串,用于打印与history
内置程序显示的每个历史条目相关的时间戳。 如果这个变量被设置,时间戳将被写入历史文件,以便它们可以跨Shell会话保存。 这将使用历史注释字符来区分时间戳和其他历史行。HOSTFILE
包含一个与/etc/hosts相同格式的文件名,当shell需要完成一个主机名时,应该读取这个文件。 可能的主机名完成列表可能在shell运行时被改变;当值被改变后,下次尝试完成主机名时,Bash会将新文件的内容添加到现有列表中。如果
HOSTFILE
被设置,但是没有值,或者没有命名一个可读的文件,Bash会尝试读取/etc/hosts来获得可能的主机名完成列表。 当HOSTFILE
未被设置时,主机名列表被清除。HOSTNAME
当前主机的名称。
HOSTTYPE
描述Bash正在运行的机器的一个字符串。
IGNOREEOF
控制shell在收到一个
EOF
字符作为唯一输入时的动作。如果设置了这个值,则表示在shell退出之前,作为输入行的第一个字符的连续EOF
字符的数量。如果该变量存在但没有数值,或者没有数值,那么默认值是10。 如果该变量不存在,那么EOF
表示对shell的输入结束。这只对交互式shell有效。INPUTRC
Readline初始化文件的名称,覆盖默认的~/.inputrc。
INSIDE_EMACS
如果Bash在shell启动时在环境中发现了这个变量,它就会假定shell是在Emacs shell缓冲区中运行的,并且可能会根据
TERM
的值来禁用行编辑。LANG
用于确定任何没有特别选择以
LC_
开头的变量的类别的地区性类别。LC_ALL
这个变量覆盖了
LANG
的值和任何其他指定区域类别的LC_
变量。LC_COLLATE
这个变量决定了在对文件名扩展的结果进行排序时使用的整理顺序,并决定了范围表达式、等价类以及文件名扩展和模式匹配中的整理顺序的行为(见8 文件名扩展)。
LC_CTYPE
这个变量决定了字符的解释和字符类在文件名扩展和模式匹配中的行为(见8 文件名扩展)。
LC_MESSAGES
这个变量决定了用于翻译前面有‘$’的双引号字符串的地区设置(见特定地区翻译)。
LC_NUMERIC
这个变量决定了用于数字格式化的地区类别。
LC_TIME
这个变量决定了用于数据和时间格式化的locale类别。
LINENO
当前正在执行的脚本或shell函数中的行号。 如果
LINENO
没有被设置,它就会失去其特殊的属性,即使随后被重置。LINES
由
select
命令决定打印选择列表的列长。 如果checkwinsize
选项被启用,则自动设置(见2 Shopt 内置程序),或者在交互式shell中收到SIGWINCH
时自动设置。MACHTYPE
一个完全描述Bash正在执行的系统类型的字符串,以标准的GNU cpu-company-system格式。
MAILCHECK
shell应该多久检查一次
MAILPATH
或MAIL
变量中指定的文件中的邮件(以秒为单位)。 默认是60秒。如果这个变量没有被设置,或者被设置为一个不大于或等于0的数值,shell将禁用邮件检查。MAPFILE
当没有提供变量名时,创建一个数组变量来保存由
mapfile
内置程序读取的文本。OLDPWD
前一个工作目录,由
cd
内建程序设置。OPTERR
如果设置为1,Bash就会显示由
getopts
内置命令产生的错误信息。OSTYPE
一个描述Bash所运行的操作系统的字符串。
PIPESTATUS
一个数组变量(见6.7 数组),包含最近执行的前台管道(可能只包含一条命令)中的进程退出状态值的列表。
POSIXLY_CORRECT
如果Bash启动时这个变量在环境中,那么在读取启动文件之前,Shell会进入POSIX模式(见6.11 Bash的POSIX模式),就像提供了--posix调用选项一样。 如果它在Shell运行时被设置,Bash会启用POSIX模式,就像命令一样
set -o posix
当shell进入POSIX模式时,如果这个变量还没有被设置,它就会设置这个变量。
PPID
shell的父进程的进程ID。这个变量是只读的。
PROMPT_COMMAND
如果这个变量被设置,并且是一个数组,那么在打印主提示符(
$PS1
)之前,每个设置元素的值都被解释为要执行的命令。 如果这个变量被设置,但不是一个数组变量,那么它的值将被用作要执行的命令。PROMPT_DIRTRIM
如果设置为大于0的数字,该值将作为扩展
\w
和\W
提示字符串转义时要保留的尾部目录组件的数量(见6.9 控制提示符)。 删除的字符将用省略号替换。PS0
这个参数的值会像
PS1
一样展开,在读取命令后和执行命令前由交互式shell显示。PS3
这个变量的值被用来作为
select
命令的提示。如果没有设置这个变量,select
命令的提示语是‘#?’PS4
这个参数的值像
PS1
一样被扩展,扩展后的值是在设置-x选项时(见1 Set 内置程序),在必要时,扩展后的值的第一个字符会被复制多次,以表示多层次的指令。 默认值是‘+’。PWD
当前的工作目录,由
cd
内置程序设置。RANDOM
每次引用这个参数时,它都会扩展为一个0到32767之间的随机整数。如果
RANDOM
没有被设置,它就会失去它的特殊属性,即使它随后被重置。READLINE_ARGUMENT
给予Readline命令的任何数字参数,该命令在调用时使用‘bind -x’(见4.2 Bash的内置命令)进行了定义。
READLINE_LINE
Readline行缓冲区的内容,用于‘bind -x’(见4.2 Bash的内置命令)。
READLINE_MARK
mark(保存的插入点)在Readline行缓冲区中的位置,用于‘bind -x’(见4.2 Bash的内置命令)。 插入点和标记之间的字符通常被称为region。
READLINE_POINT
插入点在Readline行缓冲区中的位置,用于‘bind -x’(见4.2 Bash的内置命令)。
REPLY
read
内置程序的默认变量。SECONDS
这个变量扩展为shell启动后的秒数。对这个变量的赋值将计数重置为赋值,扩展后的值成为赋值加上赋值后的秒数。 shell调用时的秒数和当前时间总是通过查询系统时钟来确定。 如果
SECONDS
没有被设置,它将失去其特殊属性,即使它随后被重置。SHELL
这个环境变量扩展为shell的完整路径名。 如果在shell启动时没有设置,Bash就会将当前用户登录shell的完整路径名分配给它。
SHELLOPTS
一个用冒号分隔的启用的shell选项的列表。列表中的每个词都是
set
内置命令的-o选项的有效参数(见1 Set 内置程序)。SHELLOPTS
中出现的选项是由’set -o’报告为‘on’的选项。 如果Bash启动时环境中存在这个变量,在读取任何启动文件之前,列表中的每个shell选项将被启用。这个变量是只读的。SHLVL
每次启动一个新的Bash实例时,都会递增一个。这是对Bash shell嵌套程度的统计。
SRANDOM
这个变量每次被引用都会扩展为一个32位的伪随机数。在支持/dev/urandom或
arc4random
的系统上,随机数发生器不是线性的,所以每个返回的数字与前面的数字没有关系。无法为随机数生成器设定种子,所以对这个变量的赋值没有影响。 如果SRANDOM
没有被设置,它将失去其特殊属性,即使它随后被重置。TIMEFORMAT
该参数的值用作格式字符串,指定如何显示以
time
保留字为前缀的管道的时间信息。 ‘%’字符引入了一个转义序列,该序列被扩展为一个时间值或其他信息。 转义序列及其含义如下;大括号表示可选部分。%%
一个字面意义上的‘%’。
%[p][l]R
经过的时间,以秒为单位。
%[p][l]U
在用户模式下花费的CPU秒数。
%[p][l]S
在系统模式下花费的CPU秒数。
%P
CPU的百分比,计算为(%U+%S)/ %R。
可选的p是指定精度的数字,即小数点后的小数位数。 值为0会导致不输出小数点或小数。 最多可以指定小数点后的三个位置;p大于3的值会改为3。如果没有指定p,会使用值3。
可选的
l
指定更长的格式,包括分钟,形式为MMmSS.FFs。p的值决定是否包括分数。如果这个变量没有被设置,Bash的行为就像它有一个值一样
$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS'
如果该值为空,则不显示任何计时信息。 在显示格式字符串时,会添加一个尾部的新行。
TMOUT
如果设置为大于0的值,
TMOUT
将被视为read
内置程序(见4.2 Bash的内置命令)的默认超时。 如果输入来自终端,select
命令(见5.2 条件性结构)在TMOUT
秒后仍未到达,则终止该输入。在一个交互式的shell中,该值被解释为在发出主提示后等待一行输入的秒数。 如果没有完整的输入行,Bash在等待该秒数后终止。
TMPDIR
如果设置了,Bash会使用它的值作为一个目录的名称,在这个目录中Bash为shell使用而创建临时文件。
UID
当前用户的数字真实用户ID。这个变量是只读的。