如何强制 Gnu screen 加载我的 bash .profile

如何强制 Gnu screen 加载我的 bash .profile

我有 ~/.bash_profile,我希望每次创建新的 GNU 屏幕时都调用它,以便我的所有别名都能在 GNU 屏幕上工作,就像在终端中工作一样。

此时我的 ~/.screenrc 如下所示。

hardstatus on
hardstatus alwayslastline
hardstatus string "%{.bW}%-w%{.rW}%n %t%{-}%+w %=%{..G} %H %{..Y} %m/%d %C%a "

答案1

shell -$SHELL

将上面的行添加到您的~/.screenrc,这将使屏幕启动时使用登录 shell,它将加载您的~/.bash_profile

答案2

一些 Mac 应用程序依赖于 .bash_profile,而另一些则依赖于 .bashrc。我还没有想出任何特定规则来知道哪个应用程序正在加载,但为了保持一致性,这是我的 .bash_profile:

if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

答案3

Debian 和 Ubuntu(至少)在其标准配置中有一个/etc/profile.d/目录中任何包含以 结尾的文件.sh来源于/etc/配置文件

这对于添加配置非常实用,但会让用户认为这是删除新设置的适当位置,而事实并非总是如此。

我不明白为什么他们没有做同样的事/etc/bash.bashrc,我希望他们将来会这样做,但与此同时,我自己也做了:

  1. 在以下位置创建新目录/etc/bash.bashrc.d/

  2. 类似于/etc/配置文件,在末尾添加以下几行/etc/bash.bashrc

    if test -d /etc/bash.bashrc.d/; then
        for bashrc in /etc/bash.bashrc.d/*.sh; do
            test -r "$bashrc" && . "$bashrc"
        done
        unset bashrc
    fi
    
  3. 从现在开始,将非交互式 shell 所需的文件放入/etc/bash.bashrc.d/而不是/etc/profile.d/

这样,对现有文件唯一需要的更改是在/etc/bash.bashrc

我认为这是用户抱怨他们的个人资料无法加载的主要原因,但实际上他们的个人资料可能没有需要待加载。

也许你可以读关于这个主题。

答案4

我通过将 ~/.bash_profile 的所有内容移至 ~/.bashrc 解决了这个问题。显然,screen 在每个窗口之前都会调用 ~/.bashrc。– Nadal 2010 年 5 月 6 日 21:22

这条评论是正确的答案。

相关内容