Centos 7 如何配置环境变量?在不同文件中配置有什么区别?

这里先介绍一个重要的概念:bash的运行模式。bash的运行模式分为login shell和non-login shell。

login shell和non-login shell两者有什么区别呢?
login shell:取得 bash 时需要完整的登陆流程的就称为 login shell。举例来说,我们通过 ctrl+alt+fn 登陆 tty1 ~ tty6 时,需要输入用户的账号与密码,此时取得的 bash 就称为“ login shell ”;
non-login shell:取得 bash 接口的方法不需要重复登陆的举动的就称为 non-login shell。举例来说,我们登陆 Linux 后, 右键启动的终端 Terminal或者在原本的 bash 环境下再次使用 bash 这个命令,建立的bash子进程,都称为 non-login shell。

为什么要介绍这两种bash的运行方式呢?
这是因为这两种shell启动时会加载不同的配置文件,login shell启动时会加载/etc/profile~/.bash_profile~/.bashrc。non-login shell启动时会加载~/.bashrc

而在加载~/.bashrc(实际是~/.bashrc中加载的/etc/bashrc)或/etc/profile时,都会执行如下代码片段,它会去执行/etc/profile.d目录下的所有.sh后缀的bash脚本。
在这里插入图片描述
login shell和non-login shell在启动时主要加载的配置文件如下图所示。
在这里插入图片描述
这里顺便提一下su和su -,su表示以non-login-shell的切换root用户;而su -则表示以login-shell切换root用户。大家感兴趣的可以分别以这两种方式切换用户并执行env指令查看一下环境变量,你会发现以su -方式切换的环境变量远远多于su方式。

所以,不管是login shell还是non-login shell,启动时都会加载/etc/profile.d/*.sh中的环境变量。所以我们一般会在/etc/profile.d中创建一个 my_env.sh 文件用于配置我们自己的环境变量。

在配置完环境变量后,我们可以选择重新启动一个 shell 以自动加载环境变量配置文件,也可以使用 soruce + my_env.sh 的方式加载环境变量配置文件。

为什么 soruce + my_env.sh 的方式能加载环境变量配置文件呢?
我们知道,bash脚本的执行方法分为三种:

  1. 输入bash/sh + 脚本的相对路径或绝对路径执行脚本
  2. 赋予脚本执行权限,直接输入脚本的绝对路径或相对路径执行脚本
  3. 在脚本的路径前加上 “.” 或者 source 的方式执行脚本

前两种都是在当前 shell 中打开一个子 shell 来执行脚本内容。而在脚本的路径前加上“.”或者 source的方式执行bash脚本,可以使脚本内容在当前 shell 里执行,而无需打开子 shell。开子 shell 与不开子 shell 的区别就在于环境变量的继承关系,例如在子 shell 中设置的变量,父 shell 是不可见的。

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

冰茶不冰

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

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

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

打赏作者

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

抵扣说明:

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

余额充值