Linux真小白入门教程第十一集——环境变量

对于Linux来说,很多程序和脚本都要通过环境变量来获取系统的信息存储临时数据配置信息

bash shell有一个叫做环境变量的特性来保存有关shell会话和工作环境的信息,它允许你在内存中存储数据,以便shell脚本能够访问到他们,这也是持久存储数据的简便方法。

bash shell 中环境变量分两类:全局环境变量和局部环境变量(不同Linux发行版本上,其专有的环境变量有可能会不一致)

 

全局环境变量对于shell会话和所有生成的子shell都是可见的,而局部环境变量则只对创建它的shell可见。这使得全局环境变量对那些所创建的子shell 想要获取到父shell信息的程序来说,非常有用。

Linux系统在开始bash回话时,就设置了一些全局环境变量(基本上全部使用大写字母,以区别普通用户的环境变量)

env或printenv命令可以查看全局变量

(登录方式也会影响到所设置的环境变量)

 

但是如果要显示个别环境变量的值,只能使用printenv

或者也可以使用echo,这是需要在变量前面加美元符号$

加上$符号,不仅仅是要显示变量当前的值,他能够让变量作为命令行参数

比如:

 

局部环境变量:

只能在定义他们的进程中可见,Linux系统也默认定义了标准的局部环境变量。

set命令可以显示为某个特定进程设置的所有环境变量(包括全局和局部以及用户自定义变量)(Linux没有只显示局部环境变量的命令)

注意大小写区分全局和局部变量哦~

 

set、printenv、env命令之间的差异很细微,set会显示出所有局部、全局以及自定义变量,而且是按照字母顺序进行排序。而env和printenv命令是不会排序的,也不会输出局部和自定义变量。

 

 

设置用户自定义变量

可以在bash shell中直接设置自己的变量,启动bash shell后(或者执行了一个shell脚本),就能创建在这个shell 进程内可见的局部变量了。使用echo命令

通过等号给环境变量赋值,值可以是数值或是字符串

如果是带有空格的字符串,那么必须用双引号来界定字符串的头尾

没有单引号的话,bash shell会以为下一个词是另一个要执行的命令

(所有的系统的环境变量名均使用大写字母,这是bash shell的标准惯例。所以创建用户变量或者shell脚本时,请使用小写字母以区分开来

记住:子shell本身的环境变量在它自己的子shell中不可见,退回上一层shell后,才可使用。(没有继承关系,完全私有

 

如果一个进程设定了一个全局环境变量,那么其创建的子进程,是对其子进程可见的创建全局环境变量的方法是先创建一个局部环境变量,然后再把它导出到全局环境中

export命令可以完成这项任务 ,明显在子shell中可以正确显示my_variable变量。

 

然而修改子shell 中全局环境变量并不会影响到父shell中该变量的值

如上所示,改变仅在子shell中生效。

 

子shell甚至无法使用export 命令改变父shell中全局环境变量的值(依然不变)。

 

使用unset命令可以删除已存在的环境变量

unset my_variable

使用$是要用到变量

不带$是要操作变量),记住区别(printenv是一个例外)。

在处理全局环境变量时,仅在子shell中删除,其仍然在父shell中生效。

 

一些默认的shell环境变量

默认情况下,bash shell会用一些特定的环境变量来定义系统环境,下面是一小部分例子。

记住并不是每个默认的环境变量都对应有值,也可能为空

 

设置PATH环境变量

当在shell命令行界面输入一个外部命令时,shell必须搜索系统来找到对应的程序,PATH环境变量定义了用于进行命令和程序查找的目录。

和Windows的PATH基本一致,只是Linux使用:冒号进行分隔Windows使用;分号进行分隔。

将可执行程序的目录放入PATH,即可执行或者使用。

通常使用的方法:

PATH = $PATH:.

使用单点符,将当前目录加入到PATH环境变量,并且这个修改只能持续到shell退出或者系统重启。

那么如何持久化环境变量呢~不同的shell启动方式,对应在系统不同的启动文件中,将环境变量加入到对应的启动文件(修改)之后,才能完成持久化的修改。(但是更新Linux版本后,所有文件都会跟着更新,定制的设置就不会再存在最好是在/etc/profile.d文件中创建一个以.sh结尾的文件,把所有的新的或者修改过得全局环境变量都设置在这个文件中

在大多数发行版中,存储个人用户永久性bash shell变量的地方是$HOME/.bashrc文件。这一点适用于所有类型的shell进程。

 

环境变量还有一个特点就是可以作为数组使用,可以存储多个值的变量,可以单独引用还可以作为一个数组来使用。

要给某个环境变量设置多个值,把值放在括号中,值与值之间用空格分隔。

my_variable = (a,b,tow,God)

要引用一个单独的数组元素,就必须用代表它在数组中位置的数值作为索引值。

echo ${my_variable[2]}

记得索引值从0开始

要显示整个数组,则使用*号

echo ${my_variable[*]}

也可对数组中的值进行修改

my_variable[2] = today

使用unset删除某个值时,只能对值进行删除,位置上为空。

unset my_variable

即可删除整个数组

(数组不经常用到,因为一方面比较麻烦,一方面移植性也不好)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MISAYAONE

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值