为什么parse_git_branch只在Dockerterminal窗口中失败

为什么要在Docker快速入门terminal报告下运行一个bashterminal

bash: parse_git_branch: command not found 

在我input每个bash命令之后,而如果我直接运行terminal,它工作正常吗?

在我的〜/ .bash_profile的Mac(OS 10.9.5)中,我定义了一个函数来显示我的提示符中的git分支,当我运行terminal,而无需通过Docker快速入门terminal运行terminal时,它工作正常。

在这两种情况下(正常运行terminal,或通过Docker快速入门terminal) echo $BASH_VERSION显示相同的结果(3.2.53(1) – 释放)。

在这两种情况下,如果我cat ~/.bash_profile我看到相同的东西,并在底部函数是明确的定义:

 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快速入门terminal似乎不会启动loginshell,因此.bash_profile不会被执行。 通常情况下,您可以在.bashrc设置PS1的值,以便为所有交互式shell定义,这是大多数(所有?)Linuxterminal仿真器的启动。

在Mac OS X中,terminal仿真程序通常会启动loginshell,因为它们本身不是 shell启动的,而是由Finder启动的。

好的做法是在.bashrc设置提示符,但要在OS X下从.bash_profile源文件。