~/.bashrc 和 ~/.bash_profile 和 /etc/bashrc 和 /etc/profile 脚本的区别和启动加载顺序

本文详细介绍了在Linux环境中,.bashrc、.bash_profile、/etc/bashrc和/etc/profile这四个脚本的区别及其加载顺序。当通过ssh连接时,bash会按顺序执行这些脚本,首先是/etc/profile,接着执行/etc/profile.d/*.sh中的所有.sh文件,然后是/etc/bashrc,最后是用户的.bash_profile和~/.bashrc。这些脚本用于设置环境变量和初始化命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/ect/profile  
此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置.

/etc/bashrc
为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.

~/.bash_profile
每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行~/.bashrc文件.

~/.bashrc
该文件包含专用于用户的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取.

~/.bash_logout
当每次退出系统(退出bash shell)时,执行该文件。     

※ 另外,/etc/profile 中设定的变量(全局)的可以作用于任何用户  而~/.bashrc等中设定的变量(局部)只能继承 /etc/profile 中的变量,他们是"父子"关系.

测试验证几个文件的执行顺序:
/etc/profile

/etc/profile.d/*.sh (在/etc/profile.d新建一个.sh文件并添加一行echo "文件路径名称" 

/etc/bashrc

/.bash_profile

 ~/.bashrc 

在几个文件的首部分别添加一行echo"文件路径名称",重新通过ssh连接 会在终端屏幕上输出相应的"文件路径名称"。

通过上述测试可知用户登录后加载配置文件的顺序:

/etc/profile==>/etc/profile.d/*.sh==>/etc/bashrc==>/.bash_profile==>~/.bashrc 

bash首先执行/etc/profile 脚本,/etc/profile脚本先依次执行 /etc/profile.d/*.sh 

随后bash会执行/etc/bashrc ~/.bash_profile 脚本, ~/.bash_profile脚本会执行~/.bashrc脚本,而~/.bashrc脚本会执行脚本
至此,所有的环境变量和初始化设定都已经加载完成。

bash随后会调用terminfo和inputrc,分别完成终端属性和键盘映射的设定。  





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值