bash - 为什么parse_git_branch仅在Docker终端窗口中失败

为什么要在Docker Quickstart Terminal报告下运行bash终端

bash: parse_git_branch: command not found

在我键入的每个bash命令之后,但是如果直接运行Terminal则可以正常工作?

在我的Mac(OS 10.9.5)的〜/ .bash_profile中,我定义了一个在提示符下显示git分支的函数,当我运行Terminal时,它可以正常工作,除非我通过Docker Quickstart Terminal运行Terminal。

在两种情况下(正常运行Terminal或通过Docker Quickstart Terminal运行),echo $BASH_VERSION都显示相同的结果(3.2.53(1)-release)。

在这两种情况下,如果我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 Quickstart Terminal似乎没有启动登录 shell ,因此未执行.bash_profile。通常,您将在PS1中设置.bashrc的值,以便为所有交互式shell定义该值,这是大多数(全部?)Linux终端模拟器开始的工作。

在Mac OS X中,终端仿真器通常启动登录 shell 程序,因为它们本身不是从 shell 程序启动,而是由Finder启动。

好的做法是将提示设置为.bashrc,但要从OS X下的.bash_profile中获取该文件。

https://stackoverflow.com/questions/32280315/

相关文章:

docker - Bluemix上的Docker run命令不允许正确设置环境变量

docker - 在Bluemix容器上安装卷并在它们之间共享不起作用

docker - 外部服务在运行时设置的转发容器端口

hadoop - hadoop fs -mkdir:没有这样的目录

mongodb - 从BSON文件创建Hive表时,列值变为NULL

hadoop - 如何在长度大于VARCHAR(32k)的BIGSQL表中存储字符串数据

hadoop - 如何在本地获取此输出

hadoop - 如何在Java UDF中加载H20训练有素的模型

amazon-web-services - 在具有默认配置的EMR群集模式下会发生什么?

hadoop - Hive Joins可以在Apache Nifi中实现吗?