在命令行提示符直接执行 env、set 查看系统或环境变量。env 显示用户环境变量,set 显示 Shell 预先定义好的变量以及用户变量。可以通过 export 导出成用户变量。
BASH / SHELL
BASH 和 SHELL 变量记录的是当前 shell 的路径, linux 上通常这两个变量的值都是 / bin/bash.
这两者的区别在于,不是所有的 shell 都有定义 BASH 变量,但一定有定义 SHELL 变量。
另外,当在一个 shell 中启动另一个 shell 的时候, SHELL 变量的值不会发生改变,而 BASH 变量的值会发生改变,指向新 shell 的路径。如下所示:
sh-4.4$ echo $SHELL
/bin/bash
sh-4.4$ echo $BASH
/usr/bin/sh
sh-4.4$
BASH_VERSINFO
该变量定义了一个 6 元素的数组,用于表示当前 bash 的版本信息, 这六个元素的意义分别为:
BASH_VERSINFO[0]
主版本号
BASH_VERSINFO[1]
次版本号
BASH_VERSINFO[2]
补丁版本
BASH_VERSINFO[3]
编译版本
BASH_VERSINFO[4]
发行状态
BASH_VERSINFO[5]
硬件架构。
#!/bin/bash
for((i=0;i<=5;i++));do
echo "BASH_VERSINFO[$i]=${BASH_VERSINFO[$i]}"
done
~
BASH_VERSINFO[0]=3
BASH_VERSINFO[1]=2
BASH_VERSINFO[2]=57
BASH_VERSINFO[3]=1
BASH_VERSINFO[4]=release
BASH_VERSINFO[5]=x86_64-apple-darwin18
BASH_ARGC
该数组变量存储的是每个 bash 调用栈中传递给 bash 的参数数量。该变量只有在 bash 开启 extdebug 选项的情况下才会设置
BASH_ARGV
该数组变量存储的是每个 bash 调用栈中传递给 bash 的参数列表。该变量只有在 bash 开启 extdebug 选项的情况下才会设置
BASH_COMMAND
当前正在 (或马上要) 执行的命令
BASH_EXECUTION_STRING
bash -c 选项的参数
FUNCNAME
当前正在执行函数的名称, 常用于调试
BASH_SOURCE
FUNCNAME 所定义的源文件,其中 定义在{BASH_SOURCE[$i]} 文件中
SECONDS
脚本从运行以来经过的时间(单位为秒)。可用于调试性能。
start=$SECONDS
sleep 2
pass=$(($SECONDS - $start))
echo "$pass seconds passed"
SHELLOPTS
冒号分隔的处于开状态的 shell 选项列表。该变量只能通过 set -o(打开选项) / set +o(关闭选项) 来设置。
SHLVL
Shell 嵌套的层次,第一个 shell 的 $SHLVL 为 1, 每启动一个 bash 实例就会 + 1
EMACS
判断 bash 是否在 EMACS 中执行,这种情况下 bash 会禁用行编辑功能
用户信息
EUID
当前用户的有效用户 ID,它在 shell 启动时被设置,之后无法再被修改。
显示相关
PS1 / PS2 / PS3 / PS4 / PROMPT_DIRTRIM
定义提示符
影响 bash 行为的参数
BASH_ENV
该值为 shell 初始化文件的路径,若设置了该值则会执行该值所指定文件内的初始化命令
CDPATH cd 命令的搜索路径,是一个用冒号分隔的目录列表。shell 在执行 cd 命令时会从这些指定的目录列表中寻找要进入的目标路径。
FIGNORE
由冒号分隔的后缀名列表,在进行文件名补全时会忽略以这些后缀名结尾的文件名
GLOBIGNORE
它是由冒号分隔的模式列表,表示通配时忽略的文件名集合。
IFS
内部字段分隔符,影响 read 命令如何将行进行分成词
OSIXLY_CORRECT
设定让 bash 进入 posix mode
TMOUT
用于设置 Shell 的过期时间,TMOUT 不为 0 时,shell 会在 TMOUT 秒后将自动退出.
同时 TMOUT 也用于作为 read 命令的默认超时时间。
EXECIGNORE
它是由冒号分隔的模式列表,表示在 $PATH 中搜索命令时忽略的文件名集合。
TMPDIR
若设置了,则 bash 在该值所指定的目录下创建临时文件
其他
BASH_REMATCH
当使用 =~ 进行正则匹配时,该数组变量存储的是整体或个分组匹配的字符串位置,其中
${BASH_REMATCH[0]}
整个正则表达式匹配的位置
n
第 n 个分组匹配的位置
RANDOM
产生一个 0-32767 之间的随机整数
REPLY
read 命令默认将标准输入存入该变量, select 命令也默认将选择的序号存入该变量。
PROMPT_COMMAND
该变量是一个命令,每次显示主提示符之前都会执行该命令。
DIRSTACK
存放当前目录栈的数组,pushd 和 popd 两个内建命令需要操作该数组,同时也允许手工对该数组内的变量进行赋值从而影响 pushd 和 popd 的行为。另外,该参数的值可以通过 dirs 命令来显示
COMP_CWORD / COMP_LINE / COMP_POINT / COMP_WORDS / COMPREPLY / HOSTFILE
用于为 bash 自定义补全时使用
HISTCONTROL / HISTFILE / HISTFILESIZE / HISTIGNORE / HISTSIZE
配置 history 命令的行为
MAIL / MAILCHECK / MAILPATH
影响邮件提醒行为

756

被折叠的 条评论
为什么被折叠?



