Bash常用内置变量介绍

Bash常用内置变量介绍

Bash中有很多内置变量,这些变量不仅影响Bash的相关行为,也大大的方便了用户的常见操作。**Bash内置变量大体上包括两类,一类是传统Shell所具备的,另一类就是Bash所特有的。**下文将对Bash中的一些常用内置变量的含义及作用进行介绍。

传统Shell内置变量

传统Shell的内置变量有,CDPATH、HOME、IFS、MAIL、MAILPATH、OPTARG、OPTIND、PATH、PS1、PS2,其含义和作用如下表所示:

变量名含义或作用
CDPATH由冒号分隔的一系列目录,用于cd命令的搜索路径
HOME当前用户的主目录
IFS用来分隔字段的字符,一般多用于解决目录中包含空格的问题
MAIL如果这个变量设成一个文件名或目录名并且 MAILPATH 变量没有设置,Bash在指定文件中通知用户邮件的到达。
MAILPATH一个用冒号分隔的文件名列表,shell周期性地从这个文件里检测新邮件。
OPTARGgetopts 内建命令处理的最后的选项参数的值
OPTIND最后一个由 getopts 内建命令处理的选项参数的索引号
PATH一个用冒号分隔的目录列表,shell从这些目录里寻找命令
PS1主要提示符,默认值是 “'\s-\v$ '”,控制shell的提示符显示样式
PS2次要提示符,默认值是 “'> '”,控制shell的提示符显示样式

对于以上内置变量,需要记住的是HOME、PATH和IFS,其它的在需要时查阅相关文档即可。

Bash内置变量

Bash的内置变量就有些多了,很多Bash特性的相关配置都以内置变量的形式提供用户选项。个人认为不需要知道全部,理解并记住常用且重要的几个即可。部分Bash内置变量的含义和作用见下表:

变量名含义或作用
auto_resume变量控制shell如何与用户交互和作业控制
BASH用于执行当前Bash实例的全路径
BASHOPTS冒号分隔的表示当前Bash开启的功能
BASHPID当前Bash进程的ID
BASH_ALIASESalias内置命令维护Bash内置的别名列表
BASH_ARGVBash进程的启动参数
BASH_CMDShash内置命令维护的Bash命令的哈希表
BASH_COMMANDBash当前执行的指令或即将执行的
BASH_COMPATBash对传统Shell的兼容等级
BASH_ENVBash执行脚本前的启动文件路径名
BASH_VERSION当前Bash实例的版本号
BASH_VERSINFO只读变量数组,它的成员保存这个Bash实例的版本信息
COLUMNSselect内建命令来决定打印选择列表时终端宽度
COMP_LINE当前命令行
COMP_POINT指明相对于当前命令起点的当前光标位置
COMP_WORDS由当前命令行中单个词组成的变量数组
DIRSTACK保存当前目录栈内容的变量数组
EUID当前用户的数字有效用户ID
GLOBIGNORE由冒号分隔的模板列表,描述在文件名扩展时忽略的对象
GROUPS数组变量,表示当前用户所在的组
HISTSIZE在历史列表中记录的最大命令数,默认为500
HOSTFILE包含与 /etc/hosts 格式相同的文件名,Bash需要补全主机名时读取
HOSTNAME当前主机的名字
HOSTTYPE描述运行Bash的机器型号的字符串
IGNOREEOF控制shell接收到一个 EOF 字符作为独立输入的行为
INPUTRCReadline特性的初始化文件,覆盖默认的~/.inputrc
LANG用于为任意没有特别选择用LC_开头的变量指明的设置决定场合设置
LC_ALL取代 LANG 的值并为任意其他 LC_ 变量指定一个区域种类
LC_COLLATE决定搜索文件名展开结果时使用的整理顺序,并决定在文件名展开和模式匹配里区域表达、等价类和处理序列的表现
LC_CTYPE决定在文件名展开和模板匹配里字符的解释和字符集的行为
LC_MESSAGES决定用于转换由 “$” 引导的双引号字符串的区域
LC_NUMERIC决定数字格式化的本地类别
LINENO当前执行的脚本或者Bash函数的行号
LINES内建命令 select 用来决定打印选择列表的列长度
MACHTYPE一个以标准的GNU CPU-COMPANY-SYSTEM 格式来充分描述运行Bash的系统的类型的字符串
MAILCHECKshell从 MAILPATH 或 MAIL 变量里指定的文件中检查邮件的频度(秒)
OLDPWD内建命令 cd 设置的之前的工作目录
OPTERR如果设置成1,Bash显示内建命令 getopts 生成的错误信息
OSTYPE一个描述运行Bash的操作系统的字符串
PPIDBash父进程的进程ID
PROMPT_COMMAND如果设置了,这个值解释为一个在打印每个基本提示符(PS1)之前执行的命令
PS3这个变量的值被用作 select 命令的提示符,默认值是 “#? ”
PWD内建命令 cd 设置的当前工作目录
RANDOM每次这个参数被引用时,生成一个0和32767之间的随机整数,给这个变量指定一个值作为随机数生成器的种子
SECONDS这个变量扩展为Bash运行的秒数
SHELLOPTS一个由冒号分隔的shell已经启用的选项列表
SHLVL新的Bash实例启动就增加一
TIMEFORMAT这个参数的值用来作为一个格式化的字符串用来指定以 time 保留字作为前缀的管道定时信息如何显示
UID当前用户的真实用户ID

上表列出了部分Bash内置变量,更多更全可以参考Bash官方文档。对于Bash内置变量中,需要深刻理解的就是跟区域化相关的内置变量,即LANG和LC_。

总结

Bash的内置变量较多,部分为只读。对于Bash的轻度用户,几乎没有必要知道这些;运维人员,需要做到在对Bash的特性了解的基础上,能够快速的找到自己所需要的内置变量即可。少部分及其常用的内置变量,则需要深刻理解。

转载于:https://my.oschina.net/taodf/blog/2208621

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值