Answers:
当Bash作为交互式登录shell启动时,它可能处理的文件之一是~/.profile
。
当它作为交互式非登录外壳启动时,它不会。它会处理/etc/bash.bashrc
(如果您的Bash版本中启用了该文件或类似文件)和 ~/.bashrc
。
您可以向其中添加以下内容~/.bashrc
(但请注意循环或值被无意更改):
. $HOME/.profile
[ -z "$SOME_VAR_SET_IN_PROFILE" ] && . ~/.profile
这取决于您如何启动外壳。就像其他人所说的那样,登录shell将加载您的配置文件(它将首先查找.bash_profile,然后尝试.profile)。如果找到其中之一,则会加载它们。非登录外壳程序(交互式或非交互式)将源.bashrc。
我建议将所有内容都放入.bashrc中。.profile / .bashrc拆分是任意的,在UNIX的早期(tty不仅仅是设备名称,而是实际的TeleType)更有意义。它旨在在“主”登录服务器时启动某些操作(例如检查邮件),而对于其他Shell则只是常规设置。在大多数Linux中,您现在要登录,而实际上是登录某些图形界面(KDE,gnome,CDE'shudder')时,您实际上并没有登录到Shell。现在,您的会话管理器会处理“ spawn登录过程”。现在已经不那么重要了。
我的建议:让您的.profile仅包含:
[ -f $HOME/.bashrc ] && . $HOME/.bashrc
作为.bashrc的第一行,通过提早跳出来运行bash脚本时,防止发生奇怪的事情:
[[ $- != *i* ]] && return
.profile
应保持bash不可知论。我建议要配置.bash_profile
负载.profile
,然后负载.bashrc
。仅将与bash无关的内容放入.profile
,PATH
和中LC_*
。把其余的放进去.bashrc
。