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
没有回复内容