为什么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
源文件。