问题描述
当我在Ubuntu 12.04中打开一个新的终端窗口时,.bashrc中的代码不会执行。我在创建.bash_aliases文件时注意到了这一点。当我打开一个新终端时,别名没有出现。但是,当我键入source .bashrc
时,别名确实显示出来。
每次打开一个新的终端窗口时都应该运行.bashrc吗?
我该如何做到这一点?
最佳解决方法
它不一定是运行;在标准.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运行。使用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
来检查这一点,它应该显示有关版本号的一些信息 – 它不应该是空白的。
次佳解决方法
就我而言,.bash_profile
中只缺少.bashrc
装载线
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
我手动添加它,它与我的新登录一起工作
第三种解决方法
如果未设置$BASH_VERSION
,请尝试使用chsh
命令将shell设置为/bin/bash
。
我有一个与12.04 LTS类似的问题,结果发现新用户帐户的默认shell设置为/bin/sh
,这是导致问题的原因。
第四种方法
.bash_profile
保存bash shell的配置。当您打开终端时,它首先从~/.bash_profile
读取并执行命令。因此,您可以在.bash_profile
中添加以下内容,以根据bashrc设置shell。
. ~/.bashrc