首页 > 安全资讯 >

Linux中将局部变量转换成环境变量

17-05-31

当用户创建一个变量之后,这个变量只能在该用户目前工作的Shell环境中使用,一旦离开了当前的shell环境,该变量就失效了。只有环境变量才能不仅在当前的shell环境中生效,而且还可以在它的所有子shell中生效。

当用户创建一个变量之后,这个变量只能在该用户目前工作的Shell环境中使用,一旦离开了当前的shell环境,该变量就失效了。只有环境变量才能不仅在当前的shell环境中生效,而且还可以在它的所有子shell中生效。如果想在当前的shell和它的每一个子shell中使用自定义的变量,就必须将这个自定义的变量转换成环境变量,语法如下:

export 变量名

你可以把当前工作的shell看成一个主程序,将它的子shell看成这个主程序的一些子程序。而环境变量就相当于全局变量,因此环境变量可以在主程序和它的所有子程序中使用。

下面通过首先定义局部变量,之后再将其环境变量的例子来进一步解释将局部变量升级为环境变量的具体操作。下面还是使用DOG1_COLOR和DOG2_COLOR这两个自定义的变量,首先应该使用以set开始的组合命令来查看要创建的变量是否存在:

goddog@promote:~$ set | grep DOG

确认不存在后,创建这一变量,并将它的值设定为black:

goddog@promote:~$ DOG1_COLOR=black

使用以set开头的组合命令查看变量DOG1_COLOR和它的值:

goddog@promote:~$ set | grep DOG

DOG1_COLOR=black

这里最好不要直接使用set测试,因为这样会显示太多毫不相关的变量。

确认DOG1_COLOR已经存在后,使用su命令切换到其他用户,我这里就切换到firefox,使用以set开始的组合命令来查看变量DOG1_COLOR和它的值:

goddog@promote:~$ su firefox

firefox@promote:/home/goddog$ set | grep DOG

系统执行完以上命令没有任何显示结果出现,这表明在firefox用户的环境中根本没有DOG1_COLOR这个变量,也就是firefox这个用户无法使用goddog用户的变量DOG1_COLOR。这也就证明了局部变量只在当前的shell中有效。这里由于是在goddog用户中使用su命令切换到firefox用户,所以goddog用户使用的shell称为主(parent)shell,而firefox用户使用的shell称为子(child)shell。

相关文章
最新文章
热点推荐