.profile .bash_profile和.bashrc之间的功能区别是什么?


Answers:


151

.bash_profile.bashrc是特定于的bash,而.profile许多shell在缺少其特定于shell的配置文件时会读取它们。(.profile由原始的Bourne外壳使用。) .bash_profile.profile由登录外壳和一起读取.bashrc;子壳只读.bashrc。(在工作控制和现代窗口系统之间,.bashrc它本身并没有得到太多使用。如果使用screentmux,则屏幕/窗口通常运行子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兼容外壳以及适用于该特定外壳的其他扩展。


58

。轮廓

.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加载。


1
这回答了我关于Mac OS X的问题
杰克·多伦多

38

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

这里更多。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.