Git PS1 & Bash 子外壳问题(Windows vs Linux)

Git PS1 & Bash Subshell Issue (Windows vs Linux)

在搜索 google、bash 联机帮助页和 SO 上的其他问题后,我找到了类似的帖子,但我未能确定此特定问题的原因。

我已经在本地安装了git-prompt.sh。 bash --login shell 一切正常。这对 Windows 和 Linux 来说都是一件好事。

然而,一旦我执行 bash subshell(例如,以便我可以临时修改我的环境等),我得到错误:

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

此问题不会发生在Windows。

需要注意的是,我通过 git 设置了我的点文件。出于这个原因,我可以在 windows 和 linux 上 运行 我的配置,它们都有完全相同的 git-prompt.sh 文件。

两者都是全新 OS 安装。

到目前为止,我最好的 猜测 是在 windows 而不是 linux 下操作时执行不同的 shell 交互语义。我已经尝试了各种 bash 调用(--login、--norc 即我可以手动设置东西)等。这种怀疑有 3 个原因:

  1. 这个错误 看起来像 我们在忘记导出 variable/parameter.
  2. 时遇到的那种错误
  3. 两个“/etc/profile.d”源在每个平台上都不同。有些包含 git 支持,这可能是导致前面原因的原因。
  4. 我的bash-fu很好~10多年前,现在我生疏了。

我确定的一件事是,第一次登录 bash ("sub")shell 在两个平台上都能完美运行。

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

谢谢,

马特

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

要导出函数,请使用 export -f __git_ps1

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

感谢您的帮助。