在 ubuntu 终端中,我的 .bashrc 不可用,直到我运行:source ~/.bashrc
我有一个 ~/.bash_profile,其内容如下:
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
我有一个 ~/.profile,其中包含:
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
我应该怎么做才能让 .bashrc 自动加载?我应该合并 .bash_profile 和 .profile 并删除其中一个吗?谢谢
答案1
您需要将存在于您的 中的相同逻辑添加.profile
到您的 中.bash_profile
。 .profile
如果存在则不被使用.bash_profile
,因此您的.bashrc
不会被引用。
不过,在 .bash_profile 中不需要检查您是否正在运行 bash。这已经足够了:
[[ -f ~/.bashrc ]] && source ~/.bashrc
答案2
SuperUser 上有一个很好的答案,解释了.bashrc 和 .bash_profile 之间的区别。
本质上,“配置文件”文件仅在登录时读取。您可以这样想;当您登录时,shell 使用其中一个配置文件来“设置您的配置文件”。
否则,如果您已经登录,并且启动了新的会话(打开新的选项卡/窗口或在 cli 上调用 bash),则 shell 只会读取您的“rc”文件。
我通过将大部分内容放入 .bashrc 文件中,然后从 .profile 文件中获取 .bashrc 文件来处理此问题。以下是示例:
我的.profile
文件:
source ~/.bashrc
我的.bashrc
文件:
alias g='egrep -i'
export CLICOLOR=1
export LSCOLORS=ehfxcxdxbxegedabagacad
PS1="\[\e[0;31m\]\u\[\e[0;32m\]@\[\e[0;31m\]\h\[\e[0;37m\] \w\[\e[0;39m\]"
case `id -u` in
0) PS1="${PS1}# ";;
*) PS1="${PS1}$ ";;
esac