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 文件。
- Windows 10 git==2.19.2.windows.1 bash==4.4.19(2)-发布
- Arch Linux git==2.19.2 bash==4.4.23(1)-release
两者都是全新 OS 安装。
到目前为止,我最好的 猜测 是在 windows 而不是 linux 下操作时执行不同的 shell 交互语义。我已经尝试了各种 bash 调用(--login、--norc 即我可以手动设置东西)等。这种怀疑有 3 个原因:
- 这个错误 看起来像 我们在忘记导出 variable/parameter.
时遇到的那种错误
- 两个“/etc/profile.d”源在每个平台上都不同。有些包含 git 支持,这可能是导致前面原因的原因。
- 我的bash-fu很好~10多年前,现在我生疏了。
我确定的一件事是,第一次登录 bash ("sub")shell 在两个平台上都能完美运行。
有什么想法、反馈或建议吗?
谢谢,
马特
这看起来像您的 PS1
(或执行类似功能的东西)已导出,但您的 __git_ps1
函数本身并未导出。
要导出函数,请使用 export -f __git_ps1
。
已解决。问题是由于上述 (2) 的组合(即提示的间接不同版本)和我自己在守卫中对正则表达式的错误引用。
感谢您的帮助。
在搜索 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 文件。
- Windows 10 git==2.19.2.windows.1 bash==4.4.19(2)-发布
- Arch Linux git==2.19.2 bash==4.4.23(1)-release
两者都是全新 OS 安装。
到目前为止,我最好的 猜测 是在 windows 而不是 linux 下操作时执行不同的 shell 交互语义。我已经尝试了各种 bash 调用(--login、--norc 即我可以手动设置东西)等。这种怀疑有 3 个原因:
- 这个错误 看起来像 我们在忘记导出 variable/parameter. 时遇到的那种错误
- 两个“/etc/profile.d”源在每个平台上都不同。有些包含 git 支持,这可能是导致前面原因的原因。
- 我的bash-fu很好~10多年前,现在我生疏了。
我确定的一件事是,第一次登录 bash ("sub")shell 在两个平台上都能完美运行。
有什么想法、反馈或建议吗?
谢谢,
马特
这看起来像您的 PS1
(或执行类似功能的东西)已导出,但您的 __git_ps1
函数本身并未导出。
要导出函数,请使用 export -f __git_ps1
。
已解决。问题是由于上述 (2) 的组合(即提示的间接不同版本)和我自己在守卫中对正则表达式的错误引用。
感谢您的帮助。