在我本地的bash中,我可以通过在~/.bashrc中添加以下代码,在bash命令提示符上添加git分支名称
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
export PS1="\u@\h \[\033[32m\]\w\[\033[33m\]\$(parse_git_branch)\[\033[00m\] $ "在制作docker镜像时,我将相同的代码添加到docker容器~/.bashrc中。但是,它只对当前目录进行着色,而不显示分支名称,如下所示
user@server /workspace/mydir ()我所期望的如下所示。黄色括号表示我使用的是哪个分支。
user@server /workspace/mydir (master)发布于 2021-10-29 02:03:37
这就是我在docker文件中必须做的事情,其中<<USERNAME>>应该替换为运行docker的用户:
### Setup git branch view in CLI ############
RUN echo "parse_git_branch() {" >> /home/<<USERNAME>>/.bashrc \
&& echo " git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\\\1)/'" >> /home/<<USERNAME>>/.bashrc \
&& echo "}" >> /home/<<USERNAME>>/.bashrc \
&& echo "export PS1='\u@\h \[\033[32m\]\w\[\033[33m\]\$(parse_git_branch)\[\033[00m\] $ '" >> /home/<<USERNAME>>/.basic我花了很长时间才弄清楚的是sed命令的grep中1之前需要的三个反斜杠。
我的故障排除包括查看Docker实例中的.bashrc文件。这就是我看到(\1)被()所取代的地方。因此,如果您遇到此问题,而我的修复方法对您不起作用,请检查您的.bashrc文件,看看它做了什么。
https://stackoverflow.com/questions/66112659
复制相似问题