正如上图所示:BASH_ENV环境变量没有设置值。这种非交互式shell 一般通过启动一个子shell来执行。如果父shell是登录shell,那么可以从/etc/profile,/etc/profiled/*.sh和$HOME/.bashrc文件中继承这些变量。如果父shell中的变量是局部变量时,那么子shell无法继承。如果不启动子shell, 变量已存在于当前shell中,就算不设置BASH_ENV,也可以使用当前的局部和全局变量。
交互式与非交互式二者区别:读取的配置文件不同,交互式bash必然读取~/.bashrc文件;非交互式bash读取的是环境变量BASH_ENV(通常情况下)所指定的配置文件。
二. 环境变量持久化
上面了解了各种shell进程对应的环境文件,找出永久性环境变量就容易多了。可以利用这些文件来创建自己的永久性全局变量或局部变量。全局变量是对所有用户都需要使用的变量,可以将新的变量或修改过的变量设置放在/etc/profile文件中,但升级了发行版该文件也会更新,所以这点要注意 (对所有用户)。
最好是在/etc/profile.d目录中创建一个以.sh结尾的文件,把所有新的变量或修改过的变量全部放在此文件中(对所有用户)。
对于存储个人用户永久性bash shell变量的地方是$HOME/.bashrc文件。这一点适用于所有类型的shell进程(仅对当前用户)。
下面来演示给mysql工具包路径,添加到PATH全局变量中:
(1)在虚拟根目录下输入mysqldump 工具,提示未找到命令,如下图所示:
(2)找到mysqldump工具包的位置,路径是/usr/local/mysql/bin。如下图所示:
(3) 查看现有PATH的路径列表,以冒号分隔的默认有5个路径。如下图所示:
(4) 在$HOME/.bash_profile文件中加入一个PATH全局变量值,路径为/usr/local/mysql/bin。如下图所示:
(5) exit退出终端或shutdown后重新开机,在虚拟根目录下输入mysqldump 工具,PATH设置的mysql工具包路径永久生效。如下图所示:
再切换到mysql用户下,PATH的设置也是生效的,说明是跨用户生效的。
在root用户下,使用子shell, PATH的设置也是生效的,说明跨进程,已设置成了全局变量。
(6) 最后在看下PATH路径,/usr/local/mysql/bin 已添加了
Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx