关键字变量
就是bash内部预设值的一些变量。这些变量的变量名都是大写。
1 | # man bash | grep -A311 'The following variables are set by the shell' |
grep是一个字符串搜索程序。
这里是在man bash的输出中搜索 ‘The following variables are set by the shell’这个字符串。
-A311 意思是把这个字符串及其下面的311行都打印出来。
正好就使我们要找的内容。
全部的关键字变量都在这里。大概过一遍就好。不用全部记住。
但是一下几个还是要求记一下的。
变量名 | 说明 |
---|---|
BASHPID | 当前shell PID,和$$有不同。比如在进程中的几种情况下会不一样。 |
HISTFILE | 保存历史命令列表文件的路径 |
HISTFILESIZE | 保存在HISTFILE中的最大项 |
HISTSIZE | 保存在历史聊表中的最大项 |
HOME | 当前用户的家目录 |
IFS | 字段分隔符 |
LANG | 没有用LC_*变量特别设置是的区域目录 |
LC_* | 用locale命令可以看到相关变量 |
用户邮件保存地址 | |
PS1 | SHELL主提示符。在我的测试机上是:[root@vm-101 ~] |
PS2 | SHELL辅助提示符 |
PS3 | select的提示符 |
PS4 | BASH调试符 |
OLDPATH | 上次待过的路径 |
PPID | 父进程ID |
HOMENAME | 主机名 |
UID | 当前用户ID |
USER | 当前用户名 |
PATH | 外部命令搜索路径 |
SHELL | 当前用户用的shell |
LDPATH | 一系列用冒号隔开的目录,动态链接器将在这些目录里查找库文件 |
MANPATH | 一系列用冒号隔开的目录,命令man会在这些目录里搜索man页面 |
重头戏一般都是在最后。最后一个PATH变量很重要。
以上变量都可以配置在bash的配置文件中。主要是/etc/profile和~/.bash_profile这两个文件。
一个是系统全局生效,一个是当前用户生效。
查看当前系统中的环境变量
1 | # printenv 或者 |
小小的总结
到这里,大家已经对bash有一个比较总体的感觉了。写一个不复杂的100-1000行的脚本应该没有问题。
但是复杂的,需要一些高技巧的脚本,可能还不够。
下面我们在针对以下特殊要求,特殊场景,再来提升下。