变量的分类
- 本地变量
本地变量:当前用户自定义的变量。当前进程中有效,其他进程及当前进程的之进程无效。
- 环境变量
环境变量:当前进程有效,并且能够被子进程调用。
- env 查看当前进程有效。
- set 查询当前用户的所有变量(临时变量与环境变量)
- export 变量名=变量值 或者 变量名=变量值;export 变量名
#export A=hello 临时将一个本地变量(临时变量)变成环境变量
#env|grep ^A
A=hello
永久生效:
vim /etc/profile 或者 ~/.bashrc
export A=hello
或者
A=hello
说明:系统中有一个变量PATH,环境变量
export PATH=/usr/local/mysql/bin:$PATH
- 全局变量
- 全局变量:全局所有的用户和程序都能调用,且继承,新建的也默认能调用
解读相关配置
| 文件名 |
说明 |
备注 |
| $HOME/.bashrc |
当前用户的bash信息,用户登录时读取 |
定义别名、umask、函数 |
| $HOME/.bash_profile |
当前用户的环境变量,用户登录时读取 |
|
| $HOME/.bash_logout |
当前用户退出当前shell时最后读取 |
定义用户退出时执行的程序等 |
| /etc/bashrc |
全局的bash信息,所有用户都生效 |
| /etc/profile |
全局环境变量信息 |
系统和所有用户都生效 |
说明:以上文件修改后,都需要重新source让其生效或退出重新登录
用户登录系统读取相关文件的顺序
- /etc/profile
- $HOME/.bash_profile
- $HOME/.bashrc
- 系统变量(内置bash中变量):shell本身已经固定好了它的名字和作用
| 内置变量 |
含义 |
| $? |
上一条命令执行后返回的状态;状态值为0表示执行正常,非0表示执行异常或者错误 |
| $0 |
当前执行的程序或脚本名 |
| $# |
脚本后面接的参数的个数 |
| $* |
脚本后面所有参数,参数当作一个整体输出,每一个变量数之间可以空格隔开 |
| $@ |
脚本后面所有参数,参数是独立的,也是全部输出 |
9 |
脚本后面的位置参数,$1表示第1个位置参数,依次类推 |
{n} |
扩展位置参数,第10个位置变量必须用{}大括号括起来(2位数字以上括起来) |
| $$ |
当前所在进程的进程号,如echo $$ |
| $! |
后台运行的最后的一个进程号(当前终端) |
| !$ |
调用最后一条命令历史中的数据 |