首页 > 编程笔记

Shell环境变量(一览表)

在前面章节中已经学习了什么是变量、什么是环境变量以及环境变量的设置等。那么在 Shell 中默认的环境变量有哪些呢?本节将为读者详细讲解。

在默认情况下,Bash Shell 定义系统的环境会使用一些特殊的环境变量。而这些变量在 Linux 系统中都已经被设定好,直接使用就可以了。

Bash Shell 是由 UNIX Bourne Shell 演变而来,因此 Bash Shell 保留了 UNIX Bourne Shell 里定义的一些环境变量。

Bash Shell 中支持的 Bourne 变量如表 1 所示。

表 1 Bash Shell中支持的Bourne变量
变 量 功 能
CDPATH 是 cd 命令的搜索路径,用“:”分隔开的目录列表
HOME 当前用户的主目录
IFS Shell 用来将文字符串分割成字段的一系列字符
MAIL 当前用户收件箱的文件名,Bash Shell 会检查是否有新文件
MAILPATH 用 “:”分隔开的当前用户收件箱的文件名列表
OPTARG getopts 命令处理的最后一个选项参数
OPTIND getopts命令处理的最后一个选项参数的索引号
PATH Shell 查找命令的目录列表,用隔开
PS1 Shell 命令行界面的主提示符
PS2 Shell 命令行界面的次提示符

Bash Shell 还使用了许多环境变量。虽然环境变量不是命令,但它们通常会影响 Shell 命令的执行,所以了解这些 Shell 环境变量很重要。表 2 列出了 Bash 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 (数字形式)

注意,并不是所有的默认环境变量都会在运行 set 命令时列出;默认环境变量并不是每一个都必须有一个值。

优秀文章