【发布时间】:2020-11-30 17:40:17
【问题描述】:
我查看了重复的问题。没有任何效果。
我使用 Gitbash,当使用 Cygwin 时,我使用 gitbash 提示符 (/Git/etc/bash.bashrc) 来显示相同的提示符。在 Gitbash 中,提示有效。在 cygwin 中,输出行换行。例如:
[ "$python_version" ] && python_version='\[\033[95;38;5;227m\]????'"${python_version##* } "
此行在附加到 PS1 时会导致换行(仅在 cygwin 中)。 minttyrc 和颜色设置完全相同。去除我认为是问题的颜色,修复了包装。但是,我相信一切都被正确地转义了,并且由于它没有包含在 gitbash 中,我不知道问题是什么。
这里的颜色似乎是问题,因为删除它可以解决问题。但为什么?终端有什么不同?我也想知道这是否可能是提早逃生的问题,但 PyCharm 的 shellcheck 说一切都很好。
包装示例:
赛格温:
⬢14.7.0p/new ????3.8.3 (venv) ❯
GitBash(理想输出):
~/Desktop/new ????3.8.3 ⬢14.7.0 (venv) ❯
它只出现在提示符中(PS1 变量,又名PROMPT_COMMAND);不是在终端中实际输入命令时。
【问题讨论】:
-
可能是 eol 问题? (stackoverflow.com/a/39091313/6309)
-
对不起,我不太明白。那我怎么可能修复它呢?我还听说 cygwin 本身存在一些错误,并且有几个人建议不要使用它。
-
不确定,考虑到我不使用 Cygwin。我通常觉得 git bash 足够了。在您的情况下,您需要 Cygwin 提供什么?
-
某些工具,例如 g++ 和使用 ssh(如果我错了请告诉我)需要 cygwin。我了解到我可以通过 ssh 使用 bash 和
ssh -t user@host "bash -l";但是,这总是最终使用 cygwin 中的 PS1 集,我认为没有解决方案;所以我最终只是为 gitbash 复制了我的 PS1 文件,现在当我 ssh 进入时出现换行错误。 -
这些确实是使用 Cygwin 的正当理由(使用符合 POSIX 的外壳)。换行是指superuser.com/q/283236/141?