Answers:
.bash_profile和.bashrc是特定于的bash,而.profile许多shell在缺少其特定于shell的配置文件时会读取它们。(.profile由原始的Bourne外壳使用。)   .bash_profile或.profile由登录外壳和一起读取.bashrc;子壳只读.bashrc。(在工作控制和现代窗口系统之间,.bashrc它本身并没有得到太多使用。如果使用screen或tmux,则屏幕/窗口通常运行子shell而不是登录shell。)
其背后的想法是,一次性安装由.profile(或特定于外壳的版本)完成,每个外壳的内容由完成.bashrc。例如,您通常只希望在每个会话中加载一次环境变量,而不是每次在会话中启动子Shell时都使它们变臭,而您总是希望使用别名(别名不会像环境变量那样自动传播)。
其他值得注意的shell配置文件:
/etc/bash_profile(fallback /etc/profile)是在用户.profile进行系统级配置之前读取的,并且同样/etc/bashrc在子shell中读取(该版本没有回退)。包括Ubuntu在内的许多系统还使用/etc/profile.d包含shell脚本的目录,这些脚本是.(source)-from的/etc/profile;这些片段是每个外壳的,*.sh适用于所有Bourne / POSIX兼容外壳以及适用于该特定外壳的其他扩展。
。轮廓
.profile适用于与Bash环境变量PATH和朋友等不特别相关的事物,并且应随时可用。
例如,.profile在启动图形桌面会话时也应加载。
.bashrc
.bashrc用于配置交互式Bash用法,例如Bash aliases,设置您的收藏夹editor,设置Bash prompt等等。
.bash_profile
.bash_profile是用于确保中的.profile和.bashrc都已加载login shells。
例如,.bash_profile可能很简单
. ~/.profile
. ~/.bashrc
如果您忽略.bashrc,则只会.profile加载。
根据bash手册页,.bash_profile对于登录Shell .bashrc执行,而对于交互式非登录Shell执行。
那么,什么是登录或非登录外壳?
当您通过控制台登录(键入用户名和密码)时,无论是坐在计算机上还是通过ssh:远程.bash_profile执行,都会在初始命令提示符之前配置您的shell。但是,如果您已经登录计算机并在Gnome或KDE中打开一个新的终端窗口(xterm),则会.bashrc在窗口命令提示符之前执行。.bashrc当您通过输入/bin/bash终端启动新的bash实例时也会运行该命令。
终端窗口准则的一个例外是Mac OS X的Terminal.app,它默认为每个新的终端窗口运行一个登录shell,.bash_profile而不是调用.bashrc。其他GUI终端仿真器可能会执行相同的操作,但大多数都不会这样做。
这里更多。