打开新终端时未执行 .bashrc

打开新终端时未执行 .bashrc

当我在 Ubuntu 12.04 中打开新的终端窗口时,代码.bashrc不会执行。我在创建文件时注意到了这一点.bash_aliases。当我打开新的终端时,别名没有显示出来。但是当我输入时,source .bashrc别名确实出现了。

.bashrc每次我打开新的终端窗口时都应该运行,对吗?

我怎样才能实现这一点?

答案1

它不一定会运行;在标准 .bashrc 的顶部有这样的注释:

# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples

我相信有一个选项可以运行 bash 终端作为登录 shell 或不作为登录 shell。在 Ubuntu 中,gnome-terminal 通常不作为登录 shell 运行,因此应该直接运行 .bashrc。

对于登录 shell(如虚拟终端),通常~/.profile会运行该文件,除非您有~/.bash_profile~/.bash_login,但它们默认不存在。默认情况下,Ubuntu 仅使用 .profile。

标准~/.profile中有这样的内容:

if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
        . "$HOME/.bashrc"
    fi
fi

如果可用,这将运行 .bashrc - 假设您的环境中存在 $BASH_VERSION。您可以通过输入命令来检查这一点echo $BASH_VERSION,它应该显示一些有关版本号的信息 - 它不应该是空白的。

答案2

在我的例子中,.bashrc加载程序行缺失了.bash_profile

# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
    . "$HOME/.bashrc"
fi

我手动添加了它并且它与我的新登录一起使用

答案3

.bash_profile保存 bash shell 的配置。当您打开终端时,它首先从 读取并执行命令~/.bash_profile。因此,您可以添加以下内容.bash_profile以根据 bashrc 设置 shell。

. ~/.bashrc

答案4

如果$BASH_VERSION未设置,请尝试使用chsh命令将您的 shell 设置为/bin/bash

我在使用 12.04 LTS 时遇到了类似的问题,结果是新用户帐户的默认 shell 设置为/bin/sh,这是导致问题的原因。

相关内容