Shell环境变量(一览表)
在前面章节中已经学习了什么是变量、什么是环境变量以及环境变量的设置等。那么在 Shell 中默认的环境变量有哪些呢?本节将为读者详细讲解。
在默认情况下,Bash Shell 定义系统的环境会使用一些特殊的环境变量。而这些变量在 Linux 系统中都已经被设定好,直接使用就可以了。
Bash Shell 还使用了许多环境变量。虽然环境变量不是命令,但它们通常会影响 Shell 命令的执行,所以了解这些 Shell 环境变量很重要。表 2 列出了 Bash Shell 中常用的默认环境变量。
在默认情况下,Bash Shell 定义系统的环境会使用一些特殊的环境变量。而这些变量在 Linux 系统中都已经被设定好,直接使用就可以了。
Bash Shell 中支持的 Bourne 变量如表 1 所示。Bash Shell 是由 UNIX Bourne Shell 演变而来,因此 Bash Shell 保留了 UNIX Bourne Shell 里定义的一些环境变量。
变 量 | 功 能 |
---|---|
CDPATH | 是 cd 命令的搜索路径,用“:”分隔开的目录列表 |
HOME | 当前用户的主目录 |
IFS | Shell 用来将文字符串分割成字段的一系列字符 |
当前用户收件箱的文件名,Bash Shell 会检查是否有新文件 | |
MAILPATH | 用 “:”分隔开的当前用户收件箱的文件名列表 |
OPTARG | getopts 命令处理的最后一个选项参数 |
OPTIND | getopts命令处理的最后一个选项参数的索引号 |
PATH | Shell 查找命令的目录列表,用隔开 |
PS1 | Shell 命令行界面的主提示符 |
PS2 | Shell 命令行界面的次提示符 |
Bash Shell 还使用了许多环境变量。虽然环境变量不是命令,但它们通常会影响 Shell 命令的执行,所以了解这些 Shell 环境变量很重要。表 2 列出了 Bash Shell 中常用的默认环境变量。
变 量 | 功 能 |
---|---|
BASH | 调用 Shell 的完整文件名 |
BASHOPTS | 启用 Bash Shell 的选项列表 |
BASHPID | 当前 Bash Shell 的进程 ID |
BASH_ALIASES | 含有当前所用别名的关联数组 |
BASH_ARGC | 当前子函数或 Shell 脚本中的参数总数的数组变量 |
BASH_ARCV | 当前子函数或 Shell 脚本中的参数的数组变量 |
BASHCMDS | 关联数组,包括 Shell 执行过的命令的所在位置 |
BASH_COMMAND | 当前正在被执行的命令名 |
BASH_ENV | 如果设置,每个 Bash 脚本都会尝试在运行前执行由该变量定义的起始文件 |
BASH_EXECUTION_STRING | 在 Bash -c 命令行选项中用到的命令 |
BASH_LINENO | 含有脚本中每个命令的行号的数组变量 |
BASH_REMATCH | 只读数组,含有与指定的正则表达式匹配的文本元素的数组 |
BASH_SOURCE | 含有 Shell 中已声明函数所在源文件名的数组变量 |
BASH_SUBSHELL | 当前 Shell 生成的子 Shell 数目 |
BASH_VERS INFO | 含有当前运行的 Bash Shell 的主版本号和次版本号的数组变量 |
BASH_VERS ION | 当前运行的 Bash Shell 的版本号 |
BASH_XTRACEFD | 当设置一个有效的文件描述符整数时,跟踪输出生成,并与诊断和错误信息分离开文件描述符必须设置 -x 启动 |
COLUMNS | 当前 Bash Shell 实例使用的终端的宽度 |
COMP_CWORD | 变量 COMP_WORDS 的索引值,COMP_WORDS 包含当前光标所在的位置 |
COMP_KEY | 调用 Shell 函数补全功能的按键 |
COMP_LINE | 当前命令行 |
COMP POINT | 当前光标位置相对于当前命令起始位置的索引 |
COMP_TYPE | 一个整数值,表示所尝试的补全类型,完成 Shell 函数的补全 |
COMP_WORDBREAKS | 在进行单词补全时用作单词分隔符的一组字符 |
COMP_WORDS | 含有当前命令行上所有单词的数组变量 |
COMPREPLY | 含有由 Shell 函数生成的可能补全代码的数组变量 |
COPROC | 占有未命名的协程的 I/O 文件描述符的数组变量 |
DIRSTACK | 含有目录栈当前内容的数组变量。 |
EMACS | 如果设置了该环境变量,则 Shell 认为其使用的是 emacs Shell 缓冲区,同时禁止进行编辑功能 |
ENV | 如果设置了该环境变量,每个 Bash 脚本在运行之前都会执行由该环境变量所定义的起始文件 |
EUID | 当前用户的有效用户 ID (数字形式) |
FCEDIT | fc 命令使用的默认编辑器 |
FIGNORE | 用分隔的后缀名列表,在文件名补全时会被忽略 |
FUNCNAME | 当前执行的 Shell 函数的名称 |
FUNCNEST | 当设置成非 0 值时,嵌套函数的最髙层级 |
GLOBIGNORE | 以分隔的模式列表,定义了在进行文件名扩展时要忽略的文件名集合 |
GROUPS | 含有当前用户属组列表的数组变量 |
histchars | 控制历史记录展幵的字符(最多可有 3 个字符) |
HISTCMD | 当前命令在历史记录中的编码 |
HISTCONTROL | 控制哪些命令留在历史记录列表中 |
HISTFILE | 保存 Shell 历史记录列表的文件名(默认是 .Bash_history ) |
HISTFILESIZE | 保存在历史文件中的最大行数 |
HISTIGNORE | 以分隔的模式列表,用来决定哪些命令会被忽略 |
HISTSIZE | 最多在历史文件中保存多少条命令 |
HISTIMEFORMAT | 如果设置且非空,用作格式化字符,决定历史文件条目的时间戳 |
HOSTFILE | 含有Shell在补全主机名时读取的文件的名称 |
HOSTNAME | 当前主机的名称 |
HOSTTYPE | 当前运行Bash Shell的机器 |
IGNOREEOF | Shell在退出前必须收到连续的EOF字符的数量。如果这个值不存在,则默认是1 |
INPUTRC | readline初始化文件名(默认是.inputrc ) |
LANG | Shell的语言环境分类 |
LC_ALL | 定义一个语言环境分类,它会覆盖LANG变量 |
LC_COLLATE | 设置对字符串值排序时用的排序规则 |
LC_CTYPE | 决定在进行文件名扩展和模式匹配时,如何解释其中的字符 |
LC_MESSAGES | 决定解释前置美元符($)的双引号字符串的语言环境设置 |
LC_NUMERIC | 决定格式化数字时所使用的语言环境设置 |
LINENO | 脚本中当前执行代码的行号 |
LINES | 定义了终端上可见的行数 |
MACHTYPE | 用“cpu-公司-系统”格式定义的系统类型 |
MAILCHECK | Shell 查看邮件的频率(以 s 为单位,默认值是 60s) |
MAPFILE | 含有 mapfile 命令所读入文本的数组,当没有给出变量名的时候,使用该环境变量 |
OLDPWD | Shell之前的工作目录 |
OPTERR | 设置为1时,Bash Shell会显示getopts命令产生的错误 |
OSTYPE | 定义了 Shell所在的操作系统 |
PIPESTATUS | 含有前台进程退出状态列表的数组变量 |
POSIXLY_CORRECT | 如果设置了该环境变量,Bash 会以 POSIX 模式启动 |
PPID | Bash Shell 父进程的 PID |
PROMPT COMMAND | 如果设置该环境变量,在显示命令行主提示符之前会执行这条命令 |
PS3 | select命令的提不符 |
PS4 | 如果使用了 Bash 的 -x 选项,在命令行显示之前显示的提示符 |
PWD | 当前工作目录 |
RANDOM | 返回一个 0〜32767 的随机数,对其赋值可作为随机数生成器的种子 |
READLINE_LINE | 当使用 bind -x 命令时,保存了 readline 行缓冲区中的内容 |
READLINE_POINT | 当使用 bind -x 命令时,当前 readline 行缓冲区的插入点位置 |
REPLY | read 命令的默认变量 |
SECONDS | 自从 Shell 启动到现在的秒数,对其赋值将会重置计时器 |
SHELL | Bash Shell 的全路径名 |
SHELLOPTS | 已启用 Bash Shell 选项列表,用“”分隔开 |
SHLVL | 表明 Shell 的层级,每次启动一个新的 Bash Shell 时该值增加1 |
TIMEFORMAT | 指定 Shell 显示的时间值的格式 |
TMOUT | select 和 read 命令在没输入的情况下等待多久(以 s 为单位)。默认值为零,表示无限长 |
TMPDIR | 如果设置成目录名,Shell 会将其作为临时文件目录 |
UID | 当前用户的真实用户 ID (数字形式) |
声明:《Linux系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。注意,并不是所有的默认环境变量都会在运行 set 命令时列出;默认环境变量并不是每一个都必须有一个值。