【发布时间】:2016-04-30 01:47:06
【问题描述】:
当我登录我的 CentOS 服务器时,我的 ~/.bashrc 文件正在被获取。这很明显,因为 1.) 我在 ~/.bash_profile 中有一条 logger "sourcing ~/.bashrc" 消息,我在 /var/log/messages 中看到了该消息;和 2.) 我的提示确实显示了我当前的工作目录,这是我的提示所独有的众多内容之一。
但是,当我 cd 进入 Git 存储库时,当前的 Git 分支并未显示:
(/home/jenkins/GitLab/testing-scripts/tests) jenkins-tests $
当我在这个 repo 中时,如果我获取我的 ~/.bashrc 文件,我会看到我的 Git 分支,正如我所预料的那样:
(/home/jenkins/GitLab/testing-scripts/tests) jenkins-tests $ . ~/.bashrc
(/home/jenkins/GitLab/testing-scripts/tests) jenkins-tests (devel)$
如果我碰巧我的分支,为了显示当前分支,我必须再次source ~/.bashrc。
我的~/.bashrc 执行来自here 的通用__git_ps1 命令。
我的~/.bash_profile 包含以下内容:
GP=~/.git-prompt.sh
if [ -f $GP ]; then
. $GP;
logger "sourced $GP";
fi
BRC=~/.bashrc
if [ -f $BRC ]; then
. $BRC;
logger "sourced $BRC";
fi
BA=~/.bash_aliases
if [ -f $BA ]; then
. $BA;
logger "sourced $BA";
fi
我的~/.bashrc 很长(颜色和别名等),但只有两条 PS1 行,一条用于 root,一条用于非 root。
if [ $(id -u) -ne 0 ];
then # You are not root
export PS1="${BLUE}(${RED}\w${BLUE}) ${NORMAL}\h ${undgrn}$(__git_ps1) ${RED}\$ ${NORMAL}"
else
export PS1="${RED}\u${BLUE}(${RED}\w${BLUE}) ${NORMAL}\h ${RED}\$ ${NORMAL}"
fi
请注意,当我更改工作目录时,提示的其余部分是如何正确格式化和更新的……但 Git 分支不会,除非我再次 source ~/.bashrc(也就是每次)。
从我所看到的所有其他方面来看,我唯一能想到的另一件事是采购/etc/bash_completion,我很早就在我的~/.bashrc 文件中这样做了。提示显示 Git 分支的事实应该表明,在功能上,一切都应该是,我想。
难倒。
有什么建议吗?
【问题讨论】:
标签: git bash centos command-prompt .bash-profile