gee*_*aur 230
.bash_profile和.bashrc特定于bash,而.profile在没有自己的特定于外壳的配置文件的情况下,许多外壳会读取它们。(.profile由原始 Bourne shell 使用。) .bash_profile或.profile由登录 shell 读取,以及.bashrc; 子shell 只读.bashrc。(在作业控制和现代窗口系统之间,.bashrc本身并没有得到太多使用。如果您使用screen或tmux,屏幕/窗口通常运行子外壳而不是登录外壳。)
这背后的想法是一次性设置由.profile(或其特定于外壳的版本)完成,每个外壳的东西由.bashrc. 例如,您通常只想在每个会话中加载一次环境变量,而不是在您在会话中启动子 shell 时让它们受到重击,而您总是想要别名(它们不会像环境变量那样自动传播)。
其他值得注意的 shell 配置文件:
/etc/bash_profile(fallback /etc/profile) 在用户的.profile系统范围配置之前被读取,同样/etc/bashrc在子 shell 中(没有后备)。包括 Ubuntu 在内的许多系统也使用一个/etc/profile.d包含 shell scriptlet的目录,这些脚本是.( source)-ed from /etc/profile; 这里的片段是每个 shell,*.sh适用于所有 Bourne/POSIX 兼容的 shell 和适用于该特定 shell 的其他扩展。
Man*_*dar 103
。轮廓
.profile用于与 没有特别关系的事物Bash,例如环境变量PATH和朋友,并且应该随时可用。
例如,.profile也应该在启动图形桌面会话时加载。
.bashrc
.bashrc用于配置交互式 Bash 用法,例如Bash aliases,设置您最喜欢的editor,设置Bash prompt等。
.bash_profile
.bash_profile是为确保无论是在事情.profile和.bashrc被加载login shells。
例如,.bash_profile可能是一些简单的东西
. ~/.profile
. ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
如果您要省略.bashrc,则只会.profile加载。
Pau*_*cci 51
根据 bash 手册页,.bash_profile为登录 shell.bashrc执行,而为交互式非登录 shell 执行。
那么,什么是登录或非登录 shell?
当您通过控制台登录(输入用户名和密码)时,无论是坐在机器上,还是通过 ssh: 远程登录.bash_profile,都会在初始命令提示符之前执行以配置您的 shell。但是,如果您已经登录到您的机器并在 Gnome 或 KDE 中打开一个新的终端窗口 (xterm),那么.bashrc它会在窗口命令提示符之前执行。.bashrc当您通过/bin/bash在终端中键入来启动新的 bash 实例时,也会运行。
终端窗口指南的一个例外是 Mac OS X 的 Terminal.app,它默认为每个新的终端窗口运行一个登录 shell,.bash_profile而不是调用.bashrc. 其他 GUI 终端仿真器可能会做同样的事情,但大多数不会。
更多在这里。