在命令行提示符直接执行 env、set 查看系统或环境变量。env 显示用户环境变量,set 显示 Shell 预先定义好的变量以及用户变量。可以通过 export 导出成用户变量。
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$
该变量定义了一个 6 元素的数组,用于表示当前 bash 的版本信息, 这六个元素的意义分别为:
BASH_VERSINFO0
主版本号
BASH_VERSINFO1
次版本号
BASH_VERSINFO2
补丁版本
BASH_VERSINFO3
编译版本
BASH_VERSINFO4
发行状态
BASH_VERSINFO5
硬件架构。
#!/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 调用栈中传递给 bash 的参数数量。该变量只有在 bash 开启 extdebug 选项的情况下才会设置
该数组变量存储的是每个 bash 调用栈中传递给 bash 的参数列表。该变量只有在 bash 开启 extdebug 选项的情况下才会设置
当前正在 (或马上要) 执行的命令
bash -c
选项的参数
当前正在执行函数的名称, 常用于调试
FUNCNAME 所定义的源文件,其中 ${FUNCNAME$i} 定义在 ${BASH_SOURCE$i} 文件中
脚本从运行以来经过的时间(单位为秒)。可用于调试性能。
start=$SECONDS
sleep 2
pass=$(($SECONDS - $start))
echo "$pass seconds passed"
冒号分隔的处于开状态的 shell 选项列表。该变量只能通过 set -o(打开选项)
/ set +o(关闭选项)
来设置。
Shell 嵌套的层次,第一个 shell 的 $SHLVL 为 1, 每启动一个 bash 实例就会 + 1
判断 bash 是否在 EMACS 中执行,这种情况下 bash 会禁用行编辑功能
用户信息
当前用户的有效用户 ID,它在 shell 启动时被设置,之后无法再被修改。
显示相关
定义提示符
影响 bash 行为的参数
该值为 shell 初始化文件的路径,若设置了该值则会执行该值所指定文件内的初始化命令
由冒号分隔的后缀名列表,在进行文件名补全时会忽略以这些后缀名结尾的文件名
它是由冒号分隔的模式列表,表示通配时忽略的文件名集合。
内部字段分隔符,影响 read 命令如何将行进行分成词
设定让 bash 进入 posix mode
用于设置 Shell 的过期时间,TMOUT 不为 0 时,shell 会在 TMOUT 秒后将自动退出.
同时 TMOUT 也用于作为 read 命令的默认超时时间。
它是由冒号分隔的模式列表,表示在 $PATH 中搜索命令时忽略的文件名集合。
若设置了,则 bash 在该值所指定的目录下创建临时文件
其他
--
当使用 =~ 进行正则匹配时,该数组变量存储的是整体或个分组匹配的字符串位置,其中
${BASH_REMATCH0}
整个正则表达式匹配的位置
n
第 n 个分组匹配的位置
产生一个 0-32767 之间的随机整数
read 命令默认将标准输入存入该变量, select 命令也默认将选择的序号存入该变量。
该变量是一个命令,每次显示主提示符之前都会执行该命令。
存放当前目录栈的数组,pushd 和 popd 两个内建命令需要操作该数组,同时也允许手工对该数组内的变量进行赋值从而影响 pushd 和 popd 的行为。 另外,该参数的值可以通过 dirs
命令来显示
用于为 bash 自定义补全时使用
配置 history 命令的行为
影响邮件提醒行为
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有