Shell中脚本的变量
一.变量的定义
1.定义本身
变量就是内存一片区域的地址
2.变量存在的意义
命令无法操作一直变化的目标
用一串固定的字符来表示不固定的目标可以解决此问题
二.shell脚本中变量的定义方法
1.环境级别
export a=1
在环境关闭后变量失效 //当前环境生效
2.用户级别
vim ~/.bash_profile //当前用户生效
export a=1
3.系统级别
vim /etc/profile //全部生效
export a=2
vim /etc/profile.d/westos.sh //westos用户生效
export b=3
4.实验
a=1
echo $a //这个时候有1的输出
vim test.sh
echo $a
sh test.sh //这个时候输出为空,因为a的赋值只存在与当前的shell,sh test.sh是另外的shell
export a=1
sh test.sh //这个时候有输出为1,export声明变量,当前shell的所有子shell都可以识别
logout
ssh -l root 172.25.254.100
sh /mnt/test.sh //这个时候没有输出,因为shell关闭重新打开,之前的资源会被系统回收
vim ~/.bash_profile //用户环境变量配置文件
1 # .bash_profile
2
3 # Get the aliases and functions
4 if [ -f ~/.bashrc ]; then
5 . ~/.bashrc
6 fi
7
8 # User specific environment and startup programs
9
10 PATH=$PATH:$HOME/bin:/mnt
11
12 export PATH
13 export a=1
source ~/.bash_profile //使更改的信息生效
sh /mnt/test.sh //有输出
logout
ssh -l root 172.25.254.100
sh /mnt/test.sh //有输出,不会因为shell关闭重新打开,资源被回收
su - westos
sh /mnt/test.sh //没有输出,因为用户环境变量只针对与被设定过的用户生效,切换用户后失效,因为新切换的用户读取的是自己家目录中的 bash_profile
su - //切换回root才可以设置系统级别的配置
vim /etc/profile //系统级别的环境变量配置文件
vim /etc/profile.d/westos.sh //系统级别的环境变量配置文件的子配置文件
11 export a=1
su - westos
sh /mnt/test.sh //有输出,这时候每个用户都有输出
vim ~/.bash_profile
1 # .bash_profile
2
3 # Get the aliases and functions
4 if [ -f ~/.bashrc ]; then
5 . ~/.bashrc
6