shell脚本:环境变量

佐手、 提交于 2020-02-25 15:31:21

环境变量

环境变量可以分成两种:全局变量与局部变量

linux中的全局变量是linux系统提前定义好的变量,不管是root还是普通用户登录系统,都是默认使用系统提前定义好的环境变量。

局部变量它只在当前的shell环境中有效,当进入子程序或新的子shell环境时,局部变量将无法再使用。

可以通过一个简单的例子,来理解全局和局部的区别

[root@linus ~]# echo $LANG
zh_CN.UTF-8
[root@linus ~]# bash
[root@linus ~]# echo $LANG
zh_CN.UTF-8

这是全局变量,进入新的shell环境,全局变量也不会改变。

[root@linus ~]# a=hhh
[root@linus ~]# echo $a
hhh
[root@linus ~]# bash
[root@linus ~]# echo $a

而局部变量只在当前shell环境中生效,打开一个新的shell环境,局部变量将无法使用。

区分全局和局部
对于区分全局和局部变量,除了打开新的shell环境外,还可以通过set和env命令进行区分。

首先是set,可以输出所有变量,包括局部和全局

[root@linus ~]# a=hhh
[root@linus ~]# set | grep a=h
a=hhh

而env(printenv)只显示全局变量

[root@linus ~]# a=hhh
[root@linus ~]# env | grep a=h

局部转全局

想让变量在全局生效,可以使用export命令。

export命令可以对已有变量进行转换,也可直接定义全局变量

[root@linus ~]# export a #转换已有变量
[root@linus ~]# env | grep a=h
a=hhh
[root@linus ~]# export b=ddd #直接定义全部变量
[root@linus ~]# env | grep b=d
b=ddd

不过,此种设置全局变量方式,只是把数据写入了内存中,若重启或清空缓存,设置的全局变量将不复存在。

全局变量永久生效

我们登陆系统后,就会默认打开一个shell,这是系统的主shell,其文件位于/etc/profile,对所有用户都生效。

而对于不同的用户,也有属于自己的用户shell文件,那是个隐藏文件,位于自己家目录下的.bash_profile,只对单用户生效。

编辑都很简单,直接在文件中添加内容,随后刷新一下配置文件即可。以单用户全局文件为例:

[root@linus ~]# vim .bash_profile 
[root@linus ~]# source .bash_profile 

若非所有用户都能用到,在个别用户中添加即可。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!