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终端仿真器可能会执行相同的操作,但大多数都不会这样做。
这里更多。