美文网首页
linux环境变量

linux环境变量

作者: oceanfly | 来源:发表于2022-07-28 09:09 被阅读0次

可以配置环境变量的位置

在centos7中有如下几个位置可以配置环境变量:

  • /etc/profile
  • /etc/bashrc
  • ~/.bash_profile
  • ~/.bashrc
  • /etc/profile.d/*.sh

那么各个配置文件的作用和区别在哪里呢

/etc/profile

查看文件注释:

System wide environment and startup programs, for login setup

也就是说 系统级别的环境变量可以放在这里,但是不建议放在这里:

It's NOT a good idea to change this file unless you know what you
are doing. It's much better to create a custom.sh shell script in
/etc/profile.d/ to make custom changes to your environment

建议的做法是 在/etc/profile.d/中新建 custom.sh并在里面配置系统级别的environment and startup programs

/etc/bashrc

查看文件注释:

System wide functions and aliases

也就是说 系统级别的别名可以放在这里,但是不建议放在这里:

It's NOT a good idea to change this file unless you know what you
are doing. It's much better to create a custom.sh shell script in
/etc/profile.d/ to make custom changes to your environment

建议的做法是 在/etc/profile.d/中新建 custom.sh并在里面配置系统级别的functions and aliases

~/.bash_profile

User specific environment and startup programs

用户级别的环境变量放在这里

~/.bashrc

查看文件注释:

User specific aliases and functions

用户级别的别名 放在这里

总结

到这里可以做个小总结

  • 系统级别的 无论是environment and startup programs 还是functions and aliases,推荐的做法都是在 /etc/profile.d/中新建 custom.sh 并在其中配置
  • 用户级别的environment and startup programs 放在 ~/.bash_profile
  • 用户级别的aliases and functions 放在 ~/.bashrc

原理

如果只想知道怎么用 看上面的总结部分就可以了
下面聊聊这些文件起作用的细节加深理解
这些文件起作用的时机分两种情况 login shell 和 no login shell

login shell

所谓的 login shell 就是linux启动后通过终端需要输入用户名密码之后才能进入shell的情况
此时的执行步骤是:

  1. 系统加载并执行/etc/profile
  2. /etc/profile 会加载 /etc/profile.d/中的sh文件并执行
  3. 系统加载并执行~/.bash_profile
  4. ~/.bash_profile中会加载并执行 ~/.bashrc
  5. ~/.bashrc会加载并执行/etc/bashrc(思考:这里/etc/bashrc 的执行顺序为什么这么设计?)
    通过以上几个步骤 系统级别和用户级别的环境变量就加载完成了

no login shell

当登录后进入到bash中以后 再通过bash命令打开一个子bash 此时的子bash就是一个 no login shell
此时的执行步骤是:

  1. 系统加载并执行 ~/.bashrc
  2. ~/.bashrc会加载并执行/etc/bashrc
  3. /etc/bashrc 在 no login shell 的情况下会加载 /etc/profile.d/中的sh文件并执行
    这里子bash会继承父bash中的环境变量 但不会继承别名
    所以打开子bash时需要重新加载~/.bashrc 和 /etc/bashrc
    /etc/profile.d/中也可能定义了别名 所以也重新加载一遍(回答上面的思考)

重复一下结论

想在所有用户下生效的环境变量 就在 /etc/profile.d/ 中自定义
只在当前用户下生效的环境变量 就在 .bash_profile 中定义

相关文章

  • tomcat 环境变量说明

    linux 环境变量说明见此文linux环境变量说明 tomcat 环境变量说明:

  • Linux Java

    Linux配置Java环境变量 Reference [1]. Linux配置Java环境变量

  • 生信随手记2020-02-16:Linux环境变量

    Linux-常见环境变量及其作用Linux中环境变量的设置

  • 2019-01-30

    # golang环境变量 ## 1、查看环境变量 ## 2、设置环境变量 ### 2.1 linux环境 ### ...

  • Linux学习之环境变量

    转自:Linux学习之环境变量在linux中环境变量是一个重要的概念,环境变量可以由系统、用户、shell、以及其...

  • Linux 环境变量配置全攻略

    Linux 环境变量配置全攻略 Linux环境变量配置 在自定义安装软件的时候,经常需要配置环境变量,下面列举出各...

  • Linux Desktop 环境变量设置

    Linux Desktop 环境变量设置 标签(空格分隔): Linux Deabin AndroidStudio...

  • linux环境变量

    在linux下,经常会遇到环境变量问题,接下来说下环境变量是咋回事儿; linux下设置环境变量,有三种方式: 1...

  • linux命令(二)

    环境变量 在这里我说一下linux的环境变量windows的环境变量大家应该都用的很熟吧,在这里说一下linux怎...

  • Linux 常用命令

    查看linux是32位还是64位: 解压tomat: 配置JDK环境变量在linux下环境变量的配置是通过修改/e...

网友评论

      本文标题:linux环境变量

      本文链接:https://www.haomeiwen.com/subject/plgtwrtx.html