答案1
当 Bash 作为交互式登录 shell 启动时,它所启动的一个文件可能过程是~/.profile
。
当它作为交互式非登录 shell 启动时,它不会这样做。它会处理/etc/bash.bashrc
(如果该文件或类似文件在您的 Bash 版本中启用)和 ~/.bashrc
。
您可以将以下内容添加到您的~/.bashrc
(但要小心循环或值被无意中更改):
. $HOME/.profile
答案2
这有点取决于你如何启动 shell。正如其他人所说,登录 shell 将加载你的配置文件(它将首先查找 .bash_profile,然后尝试 .profile)。如果它找到其中一个,它将加载它们。非登录 shell(交互式或非交互式)将获取 .bashrc。
我建议将所有内容放入 .bashrc 中。.profile/.bashrc 的拆分有点随意,在 UNIX 的旧时代更有意义,那时 tty 不仅仅是一个设备名称,而是一个真正的 TeleType。它旨在在“主”登录到服务器时启动某些操作(如检查邮件),以及为其他 shell 执行常规设置。在大多数 Linux 中,您现在登录时,您实际上并不是登录到 shell,而是登录到某个图形界面(KDE、gnome、CDE“shudder”)。“生成登录进程”现在由您的会话管理器负责。现在它不再那么重要了。
我的建议:让你的 .profile 仅包含以下内容:
[ -f $HOME/.bashrc ] && . $HOME/.bashrc
作为 .bashrc 的第一行,通过提前跳出来防止运行 bash 脚本时发生奇怪的事情:
[[ $- != *i* ]] && return