Git PS1和Bash Subshel​​l问题(Windows与Linux)

时间:2018-11-28 21:02:25

标签: bash git git-bash dotfiles

在搜索google,bash手册页和其他有关SO的问题之后,我发现了类似的帖子,但是我无法确定导致此特定问题的原因。

我已经在本地安装了git-prompt.sh。在bash --login shell中一切都很好。在Windows和Linux上,这都是一件好事。

但是,一旦我执行了bash子shell(例如,以便我可以临时修改我的环境等),我就会收到错误消息:

$ ... <in/out of repos and all good>
$ bash
bash: __git_ps1: command not found

在Windows上不会发生此问题。

需要注意的是,我通过git设置了我的dotfiles。因此,我可以在Windows和Linux上运行我的配置,它们都具有完全相同的git-prompt.sh文件。

  • Windows 10 git == 2.19.2.windows.1 bash == 4.4.19(2)-发行版
  • Arch Linux git == 2.19.2 bash == 4.4.23(1)-发行版

这都是新安装的操作系统。

到目前为止,我最好的 guess 是,在Windows而非Linux下运行时,会执行不同的shell交互语义。我已经尝试了各种bash调用(--login,-norc即可以手动设置内容)等。这种怀疑有3个原因:

  1. 此错误看起来像是我们忘记导出变量/参数时得到的错误类型。
  2. 每个平台上的“ /etc/profile.d”源均不同。有些包含git支持,也许这是造成先前原因的原因。
  3. 大约10年前,我的bash-fu很不错,现在我生锈了。

我肯定知道的一件事是,第一个登录bash(“ sub”)shell在两个平台上均可正常运行。

有什么想法,反馈或建议吗?

谢谢

马特

2 个答案:

答案 0 :(得分:0)

这看起来像您的PS1(或执行类似功能的东西)已导出,但您的__git_ps1函数本身却未导出。

要导出功能,请使用export -f __git_ps1

答案 1 :(得分:0)

已解决。该问题是由于上述(2)的组合(即提示的间接不同版本)和我自己在警卫人员中引用正则表达式的错误报价所致。

谢谢您的帮助。