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