bash shell启动有两种方式:
- 用户登录或输入bash命令启动的交互式shell
- 运行脚本的非交互式shell
用户登录时的默认启动shell
shell会从4个不同的文件里读取命令
1. /etc/profile,导出全局环境变量,里面还会遍历/etc/profile.d目录下的脚本
2. $HOME/.bash_profile,用户定制
3. $HOME/.bash_login,用户定制
4. $HOME/.profile,用户定制
输入bash命令启动的交互式shell
不会读取/etc/profile文件,而是读取/etc/bash.bashrc文件(不同系统不一样),该脚本也会遍历/etc/profile.d目录下的脚本
运行脚本的非交互式shell
系统执行shell脚本时就是使用这种方式,它会检查BASH_ENV环境变量指定要执行的启动文件,这个变量默认是未设置的
总结
通过了解这三种方式启动逻辑可以知道,当我们高频使用某些脚本时,且这些脚本需要依赖一些全局环境变量时,我们可以通过在/etc/profile文件里面增加export脚本,使得每次启动脚本时不再需要重新定义变量了。