42 Linux bash shell的内部变量

内部变量是指能够对bash Shell脚本行为产生影响的变量,它们对Shell及其子Shell都有效,因此,内部变量属于环境变量的范畴,在《37 Linux的环境变量》中介绍了Linux的部分环境变量,包括PWD、OLDPWD、PATH、SHELL和USER,可以使用export对其进行设置。

Linux bash shell的内部变量包括如下,可以使用echo + $内部变量名称 来打印输出内部变量的值(以下说明都基于raspbian):

1、BASH记录了bash Shell的路径,通常为/bin/bash,内部变量SHELL就是通过BASH的值确定当前Shell的类型。

alloy@raspberrypi:~$ echo $BASH
/bin/bash
alloy@raspberrypi:~$ echo $SHELL
/bin/bash

2、BASH_SUBSHELL记录了子Shell的层次,这个变量是在bash版本3之后才出现的。

alloy@raspberrypi:~$ echo $BASH_SUBSHELL
0

3、BASH_VERSINFO是一个数组,包含6个元素,这6个元素用于表示bash的版本信息。

alloy@raspberrypi:~$ echo ${BASH_VERSINFO[0]}
4
alloy@raspberrypi:~$ echo ${BASH_VERSINFO[1]}
2
alloy@raspberrypi:~$ echo ${BASH_VERSINFO[2]}
37
alloy@raspberrypi:~$ echo ${BASH_VERSINFO[3]}
1
alloy@raspberrypi:~$ echo ${BASH_VERSINFO[4]}
release
alloy@raspberrypi:~$ echo ${BASH_VERSINFO[5]}
arm-unknown-linux-gnueabihf

或者运行一个基于循环的脚本可以看到如下的输出:

alloy@raspberrypi:~/linuxshell/chapter9$ ./bashver.sh
BASH_VERSINFO[0]=4
BASH_VERSINFO[1]=2
BASH_VERSINFO[2]=37
BASH_VERSINFO[3]=1
BASH_VERSINFO[4]=release
BASH_VERSINFO[5]=arm-unknown-linux-gnueabihf


4、BASH_VERSION是Linux系统的bash Shell版本,包含了主次版本、补丁级别、编译版本和发行状态,即BASH_VERSINFO数组从0到4的值。

alloy@raspberrypi:~/linuxshell/chapter9$ echo $BASH_VERSION
4.2.37(1)-release

5、DIRSTACK是目录栈的栈顶值,初值为空,可以使用pushd和popd来维护目标栈。

alloy@raspberrypi:~/linuxshell/chapter9$ echo $DIRSTACK
~/linuxshell/chapter9

6、GLOBIGNORE是由冒号分隔的模式列表,表示通配(globbing)时忽略的文件名集合。

7、GROUPS记录了当前用户所属的群组,Linux的一个用户可同时包含在多个组内,因此,GROUPS是一个数组,数组记录了当前用户所属的所有群组号,可以参考《32 查看Linux中的的用户组》

alloy@raspberrypi:~/linuxshell/chapter9$ echo $GROUPS
1004

8、HOSTNAME记录了主机名,可以参考《01 修改ubuntu的主机名称解决“sudo 无法解析主机名称”的错误》。

alloy@raspberrypi:~/linuxshell/chapter9$ echo $HOSTNAME
raspberrypi

9、HOSTTYPE和MACHTYPE一样,都用于记录系统的硬件架构,实际上,它们与BASH_VERSINFO[5]也是等值的。

alloy@raspberrypi:~/linuxshell/chapter9$ echo $HOSTTYPE
arm
alloy@raspberrypi:~/linuxshell/chapter9$ echo $MACHTYPE
arm-unknown-linux-gnueabihf

10、OSTYPE记录了操作系统类型。

alloy@raspberrypi:~/linuxshell/chapter9$ echo $OSTYPE
linux-gnueabihf

11、REPLY用于存放read命令从标准输入(stdin)读入的变量数据。

alloy@raspberrypi:~/linuxshell/chapter9$ read
this is a test for REPLY.
alloy@raspberrypi:~/linuxshell/chapter9$ echo $REPLY
this is a test for REPLY.

12、SECONDS记录脚本从开始执行到结束所耗费的时间,以秒为单位。

alloy@raspberrypi:~/linuxshell/chapter9$ echo $SECONDS
1021

13、SHELLOPTS记录了处于“开”状态的Shell选项(options)列表,它是一个只读变量。

14、SHLVL记录了bash Shell嵌套的层次。

15、TMOUT变量用于设置Shell的过期时间。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值