Categories: Shell编程

linux .bashrc 和 .bash_profile

当Bash被调用时,Bash从一组启动文件中读取和执行命令。bash_profile是在作为交互式登录shell调用时读取和执行的,而.bashrc是为交互式非登录shell执行的。

如果您在命令行上花费大量时间,则很可能需要自定义Shell环境。这可能意味着创建别名,将新目录添加到$PATH或更改shell提示符的外观。

你可能会遇到一些教程,他们说,把你的配置无论是在.bashrc.bash_profile即读取和使用bash shell执行或其他配置文件。

在本文中,我们将讨论Bash启动文件以及.bashrc.bash_profile文件之间的区别。

交互式登录和非登录shell

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

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

简而言之,交互式shell程序是读取和写入用户终端的shell程序,而非交互式shell程序是与终端不相关的shell程序,例如执行脚本时。

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

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

Bash启动文件

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

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

.bashrc和.bash_profile之间的区别

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

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

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

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

if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

大多数Linux发行版都使用~/.profile代替~/.bash_profile~/.profile所有shell都读取该文件,而~/.bash_profileBash只能读取该文件。

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

结论

.bash_profile并且.bashrc是含有被调用击时被运行shell命令文件。.bash_profile在交互式登录shell上读取和执行,而.bashrc在非登录shell上读取。

查看Bash手册以获取有关Bash启动文件的更多信息。

4.7
03
linux pkill命令
linux tee命令
嘻嘻

嘻嘻IT: 笔者是一个工作七八年的程序猿老鸟,从事涉及的技术栈主要包括PHP、Linux、Devops等,喜欢研究新技术,尝试新技术,提升技术自动化和开发效率,致力于write less,do more! 技术每年都会层出不穷,领域划分的越来越细,不可能学习所有的东西,保持对技术的好奇心,理解技术中核心思想,做一个有深度,有思想的开发!

Recent Posts

MySQL覆盖索引详解

在数据库性能优化中,索引是一个…

3分钟 ago

后端程序员必备:SQL优化的20条建议

SQL优化查询对于后端程序员来…

13分钟 ago

如何通过SSH克隆GIT仓库?

在使用git进行版本控制时,克…

55分钟 ago

Robots.txt文件详解

Robots.txt是一个位于…

1天 ago

为什么接收不到SMS-Activate的短信?

SMS-Activate是一个…

2天 ago

Linux中你必须知道的5个压缩命令

Linux系统具有丰富的包和解…

3天 ago