sa1*_*125 25 terminal bash shell bashrc .bash-profile
我正在设置从 IT 部门获得的新 Linux 机器,但注意到.profile在我开始新的终端会话时没有加载。当前的 shell 是Bash,尽管我从它附带的默认sh更改了它。如何让它.profile在启动时加载?
我通过访问外壳SSH:ssh myusername@remotemachine。我有管理员权限。
Den*_*son 24
当 Bash 作为交互式登录 shell 启动时,它可能处理的文件之一是~/.profile.
当它作为交互式非登录 shell 启动时,它不会。它处理/etc/bash.bashrc(如果该文件或类似文件在您的 Bash 版本中启用)和 ~/.bashrc.
您可以将以下内容添加到您的~/.bashrc(但要注意无意中更改了循环或值):
. $HOME/.profile
Run Code Online (Sandbox Code Playgroud)
Ric*_*lka 17
这有点取决于你如何启动你的 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
Run Code Online (Sandbox Code Playgroud)
作为 .bashrc 的第一行,通过提前跳出来防止在运行 bash 脚本时发生奇怪的事情:
[[ $- != *i* ]] && return
Run Code Online (Sandbox Code Playgroud)