用于存储虚拟终端的 bash 设置的文件

用于存储虚拟终端的 bash 设置的文件

当您在 Linux 机器上按下 [ALT+F1...F6] 时,您通常会看到“虚拟终端”。当我通过 Debian 机器上的虚拟终端登录时 - bash 不会实现 $HOME/.bashrc 和 $HOME/.profile 文件中的设置!我必须使用哪个文件来放置虚拟终端的 bash 设置?

我尝试调试这个:

    $ strace  -e open  bash --login 2>&1 | grep -P "\.bash|profile"

    open("/etc/profile", O_RDONLY|O_LARGEFILE) = 3
    open("/etc/profile.d/", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 3
    open("/etc/profile.d/bash_completion.sh", O_RDONLY|O_LARGEFILE) = 3
    open("/home/ruslan/.bash_profile", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
    open("/home/ruslan/.bash_login", O_RDONLY|O_LARGEFILE) = 3
    exit
    open("/home/ruslan/.bash_logout", O_RDONLY|O_LARGEFILE) = 3
    open("/etc/bash.bash_logout", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)

~/.profile——不存在!

答案1

当你的计算机启动时,它开始在里面并检查文件(例如/etc/inittab)以查找要启动的进程。通常此文件包含几行,如下所示。

c5:5:respawn:/sbin/agetty 57600 tty2 xterm-256color

粗略翻译:
在运行级别 5(多用户模式)下,在控制台 2(ALT-F2)上启动 agetty(登录进程)。如果进程终止(例如,在您注销后),则启动一个新进程(respawn)。

如果你登录该agetty,那么你将启动一个登录shell。这可以是bash。它可以是另一个 shell. (您可以使用 设置默认 shell chsh)。

如果你将 bash 配置为默认 shell,那么它将启动 bash 并查找这些位置:(注意,在调用 bash 时会检查这些文件特别是作为登录 shell

  • /etc/配置文件
  • 的〜/ .bash_profile
  • 〜/ .bash_login
  • 〜/ .profile

如您所见,这包括您之前提到的 $HOME/.profile,但不包括 $HOME/.bashrc

在这种情况下,非登录 shell,bash 检查/etc/bashrc~/.bashrc


bash -l我认为最后一部分回答了你的问题。(用或 测试bash --login)。

相关内容