.bashrc .bash_profile 和 .profile 文件之间的区别

如果你有使用Linux的经历,那这几个文件你肯定不陌生,这里总结一下它们的区别。

.bashrc

.bashrc 是Bash 在交互式启动时运行的 Shell 脚本,它初始化一个交互式 Shell 会话。你可以在该文件中放入任何可以在命令提示符下键入的命令。
通常,我们会在这个文件中设置环境变量、别名等。
当你每次打开新的 Bash Shell 时,它都会运行。
例如,我在我的 ~/.bashrc 文件中加入一行

echo "hello bash"

然后,运行一下

source ~/.bashrc

立马就会在你的终端中打印出 hello bash了。
.bashrc 是作为 Bash 这个Shell程序的交互式非登录配置文件的,所以,如果你使用Shell不是Bash,而是ZSH,那么同样的,它的配置文件是 .zshrc。

.profile

.profile 文件是作为整个系统 Shell 的配置文件,同样,它也可以被用来写入各种命令、环境变量、别名等。
这个文件会在每次用户登入(Log in)之后就执行一次,下面是我的默认的Ubuntu 16.04的用户的 .profile 文件内容

# ~/.profile: executed by Bourne-compatible login shells.
if [ "$BASH" ]; then
  if [ -f ~/.bashrc ]; then
    . ~/.bashrc
  fi
fi
mesg n || true

可以看到,第一行提到的 Bourne-compatible 就是最原始的 Shell
接着,我们可以看到,原来是它在后面加载了 .bashrc 文件。
你可以试试将那段代码注释掉,然后看看你在 .bashrc 中作的设置还有没有用,记得要注销重新登录。

.bash_profile

说实话,这个文件我并不怎么了解,因为在默认的用户根目录中一般没有这个文件。
.bash_profile 是 Bash 的执行登录配置文件,也就是在 Bash 运行之前(也就是 .bashrc 执行之前)执行的脚本。
它与 .bashrc 的区别在于:.bashrc 在每次运行 Bash 时都会执行一次,而 .bash_profile 只会在你的登录(例如在你远程 SSH 时输入用户名密码,或者在你使用Gnome等桌面环境时,打开 gnome-terminal、xterm等虚拟终端时)执行一次

参考