shell配置文件的加载顺序

admin 2025年4月7日23:52:24评论9 views字数 1364阅读4分32秒阅读模式
当使用 windows 版的 git 时,默认 home 目录是没有 .bashrc 文件的。当我们手动创建一个 .bashrc 文件时,新开的 shell 环境系统会提示:
shell配置文件的加载顺序
提示信息为:
WARNING: Found ~/.bashrc but no   ~/.bash_profile,  ~/.bash_login or  ~/.profile.This looks like an incorrect setup.A ~/.bash_profile that loads ~/.bashrc will be created for you.
这是新版本的 win git 升级后的功能,老版本 win git 不会提示你缺文件。这会导致你创建了 .bashrc 文件,但 shell 不会自动加载。
新增加的自动补全 ~/.bash_profile 配置文件的功能,实际上遵守了 shell 的配置文件加载顺序。
精简版的 win git 自带的 shell 会先加载 ~/.bash_profile,然后由 ~/.bash_profile 分别加载 ~/.profile 和 ~/.bashrc 。
其中 ~/.bash_login 和 ~/.profile,windows 版的 git 不会自动创建,如果缺文件就不加载。实际上只有 .bash_profile 和 .bashrc 两个文件是必须的。
不同发行版的入口 shell 配置文件稍有不同。其中 win 版 git 自带的 shell 使用的是 CentOS/RHEL 的模式:
默认使用 .bash_profile 作为入口,然后手动加载 .bashrc
而 Ubuntu/Debian 的模式为:
默认使用 ~/.profile 作为入口,然后手动加载 .bashrc
原生 linux 系统的 shell 加载过程如下:

** Shell 配置文件加载顺序**

登录 Shell 的初始化流程

  1. 系统级配置

    • /etc/profile → 加载全局配置。
    • /etc/profile.d/*.sh → 加载所有 .sh 脚本。
  2. 用户级配置(按优先级顺序,仅加载第一个存在的文件)

    • ~/.bash_profile → 优先执行(如果存在)。
    • ~/.bash_login → 次优先。
    • ~/.profile → 最后(如果前两者不存在)。
  3. 退出登录 Shell 时

    • 执行 ~/.bash_logout(如果存在)。
以上是“登录shell”的加载过程。除了交互式 shell 还有非交互式 shell 和 “非登录shell”。
一般通过远程终端(比如 ssh)访问 shell,这时使用的是“登录shell”的初始化流程(需要密码)。而已经进入到系统里面了,使用虚拟终端工具打开shell,此时不需要登录(不需要密码)。这时使用的是“非登录shell”初始化流程。
“非登录shell”初始化流程比较简单,它仅读取 ~/.bashrc 。因为它的父进程已经完成了“登录shell”的初始化流程,所以它只会读取~/.bashrc中的别名和函数。
最后一类是非交互式 Shell (Non-Interactive Shell),比如使用 bash ./script.sh 调用脚本。它仅读取$BASH_ENV环境变量指向的文件(默认不加载任何配置文件)。这里讨论的都是 bash 程序的行为,许多都是系统预装的,它的初始化流程实际上是写死在bash程序的代码里的,
全文完。

原文始发于微信公众号(生有可恋):shell配置文件的加载顺序

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年4月7日23:52:24
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   shell配置文件的加载顺序https://cn-sec.com/archives/3925376.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息