标签:profile shell 登录 etc -- bashrc 顺序 bash 加载
1.配置文件说明
系统级的配置文件
配置文件 |
描述 |
/etc/profile |
系统级的全局配置文件,在用户登录时由Bash首先读取(如果是登录 shell)。 |
/etc/profile.d/* |
这里面的脚本通常由/etc/profile调用,用于更灵活地进行系统级的环境变量设置和初始化任务等。 |
/etc/bashrc |
为每一个运行bash shell的用户执行此文件,当bash shell被打开时,该文件被读取,有些linux版本中的/etc目录下已经没有了bashrc文件。 |
用户级的配置文件
配置文件 |
描述 |
~/.bash_profile |
用户级的登录shell配置文件,如果存在,在用户登录时被读取。 |
~/.bash_login |
如果~/.bash_profile 不存在,Bash 会尝试查找这个文件作为用户级登录 shell 的配置文件。 |
~/.profile |
如果前两者都不存在,就执行这个文件作为用户级登录shell的配置文件。 |
~/.bashrc |
在某些情况下,如从登录shell启动一个新的交互式非登录shell,或者在~/.bash_profile (或其他登录shell配置文件)中显式调用时,这个文件会被读取执行,用于设置交互式非登录shell的环境和别名等。 |
~/.bash_login |
是一个用户级的 Bash 配置文件,主要在用户退出Bash会话(尤其是交互式登录 shell 会话)时执行。 |
2.加载顺序
shell交互式登录
stateDiagram-v2
shell登录 --> /etc/profile
/etc/profile --> /etc/profile.d/*
/etc/profile.d/* --> HOME
HOME --> ~/.bashrc : 被前序脚本触发
~/.bashrc --> /etc/bashrc : 被前序脚本触发
~/.bashrc --> shell退出 :
shell退出 --> ~/.bash_logout : 被自动触发
state HOME {
direction LR
~/.bash_profile --> ~/.bash_login : 不存在触发
~/.bash_login --> ~/.profile : 不存在触发
}
非shell交互式登录
- 1.如通过某些特殊方式启动非交互式shell并明确指定加载
~/.bashrc
。
- 2.或者从一个已经加载了
~/.bashrc
的交互式shell启动非交互式shell且有机制将当前环境传递给新的shell,可能会间接导致~/.bashrc
的部分效果在非交互式shell中体现。
stateDiagram-v2
direction LR
非交互式shell --> ~/.bashrc : 有可能被加载
非交互式shell --> /etc/bashrc : 有可能被自动加载
~/.bashrc --> /etc/bashrc : 有可能被前序脚本触发
3.示例
~/.bash_profile
#!/bin/bash
# ...其他内容
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
~/.bashrc
#!/bin/bash
# ...其他内容
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
标签:profile,
shell,
登录,
etc,
--,
bashrc,
顺序,
bash,
加载
From: https://www.cnblogs.com/lxd670/p/18410733