云网牛站
所在位置:首页 > Linux教程 > 在Linux系统中.bashrc和.bash_profile文件的区别

在Linux系统中.bashrc和.bash_profile文件的区别

2020-05-11 12:04:27作者:李泽稿源:云网牛站

在本文中,我们将讨论Bash启动文件以及.bashrc和.bash_profile文件之间的区别。如果您在Linux命令行上花费大量时间,则很有可能需要自定义Shell环境,这可能意味着创建别名,将新目录添加到$PATH或更改Shell提示符的外观。您可能阅读过一些Linux教程,他们说要把您的配置放到.bashrc、.bash_profile或bash shell读取和执行的另一个配置文件中,本文就为您讲解这方面的内容。

在Linux系统中.bashrc和.bash_profile文件的区别

 

交互式登录和非登录Shell(Interactive Login和Non-Login Shell)

调用时,Bash从一组启动文件中读取并执行命令,读取什么文件取决于Shell是作为交互式登录Shell还是非登录Shell调用。

Shell可以是交互式的或非交互式的。

简而言之,交互式Shell是可以读写用户终端的Shell,而非交互式Shell是不与终端相关联的Shell,例如执行脚本时。

交互式Shell程序可以是登录Shell程序,也可以是非登录Shell程序。

当用户通过ssh或本地远程登录到终端时,或者使用--login选项启动Bash时,将调用登录Shell程序。从登录Shell调用交互式非登录Shell,例如在Shell提示符下键入bash或打开新的Gnome终端选项卡时。

 

Bash启动文件

当作为交互式登录Shell调用时,Bash查找/etc/profile文件,如果该文件存在,它将运行文件中列出的命令,然后Bash按照列出的顺序搜索~/.bash_profile、~/.bash_login和~/.profile文件,并从找到的第一个可读文件中执行命令。

当Bash作为交互式非登录Shell程序被调用时,它从~/.bashrc读取并执行命令(如果该文件存在并且可读)。

参考:什么是bashrc配置文件,如何对其进行编辑

 

.bashrc和.bash_profile之间的区别

当Bash作为交互式登录shell调用时,将读取并执行.bash_profile,而对于交互式非登录shell执行.bashrc。

使用.bash_profile运行仅应运行一次的命令,例如自定义$PATH环境变量。

将每次启动新Shell时应运行的命令放在.bashrc文件中,这包括您的别名和函数、自定义提示、历史记录自定义等等。

通常,~/.bash_profile包含以下类似于.bashrc文件源的行,这意味着每次您登录到终端时,两个文件都被读取并执行。

if [ -f ~/.bashrc ]; then

 . ~/.bashrc

fi

大多数Linux发行版都使用~/.profile而不是~/.bash_profile,所有Shell程序都读取~/.profile文件,而Bash仅读取~/.bash_profile文件。

如果系统上没有任何启动文件,则可以创建它。

 

结论

.bash_profile和.bashrc是包含shell命令的文件,这些命令在调用Bash时运行。.bash_profile在交互式登录shell上读取和执行,而.bashrc在非登录shell上读取和执行。

 

相关主题

将.bashrc文件恢复到Ubuntu中的默认设置

精选文章
热门文章