当我启动 XTerm 时,我的 .bashrc 没有获取来源

当我启动 XTerm 时,我的 .bashrc 没有获取来源

我的~/.bashrchttps://pastebin.com/VA7RLA2E

我的~/.Xresourceshttps://pastebin.com/qSF1z0w4

如何让 XTerm.bashrc在启动时自动获取源代码?目前,每当我打开新的 XTerm 窗口时,它都不会源~/.bashrc.

我的操作系统是 Ubuntu 18.04。

答案1

在你的~/.Xresources文件中,有一行

xterm*loginShell: true

这将使 XTerm 作为登录 shell 启动 shell 会话。当bash作为登录 shell 运行时,它会读取您的文件,但除非显式读取,否则~/.bash_profile不会读取~/.bashrc(该文件由非登录交互式会话读取)。~/.bash_profilesource

您有两个选择:

  1. 删除指定~/.Xresourcesshell 应该是登录 shell 的行。您可能必须退出图形登录会话才能重新读取该文件并使更改生效。
  2. 让您的~/.bash_profile文件成为source您的~/.bashrc文件,同时确保您的~/.bashrc文件不会~/.bash_profile同时获取该文件(这将创建无限循环)。

    如何执行此操作的示例(这将添加到文件中~/.bash_profile):

    if [ -o interactive ] && [ -f ~/.bashrc ]; then
       source ~/.bashrc
    fi
    

    您可能需要对/etc/profilevs执行类似的操作,或者如果您的系统尚未执行此操作,则无论/etc/bash.bashrc该系统位于您的系统上还是任何位置。bashrc然而,正如/etc/profile所有类似 Bourne 的 shell 所读取的那样,而不仅仅是bash,它需要进行一些调整:

    if [ -n "$BASH" ] &&
       [ "$BASH" != /bin/sh ] &&
       [ -o interactive ] &&
       [ ! -o posix ] &&
       [ -f /etc/bash.bashrc ]
    then
      source /etc/bash.bashrc
    fi
    

答案2

我会做以下事情:

  • 确保 .bashrc 位于您的主文件夹中
  • 确保它归您所有

    xterm -e bash --rcfile /home/someuser/.bashrc
    

相关内容