在这两种情况下,PS1='\\ $ '
和都会PS1='\\\\ $ '
在视觉上产生相同的提示。\ $
为什么?这是一个错误还是记录的行为?
在 bash 5.2.021 和 dash 0.5.12 上测试。我只在 bash 中观察到它,但在 dash 中没有观察到。
答案1
不错的收获。这看起来像是一个错误解码提示字符串在 parse.y 中。
从 PROMPTING 部分中man bash
,它指出这\\
被视为反斜杠。所以\\\\
应该被视为两个反斜杠字符,但在某些时候解码提示字符串调用另一个合并反斜杠的函数,因此这两个反斜杠字符被合并为一个。简而言之,每 4 个连续的反斜杠PS1
都会合并为 1 个(当然,只要代码中的逻辑保持不变)。
如果您确实希望提示打印两个连续的反斜杠,则需要再添加 2 个或 4 个反斜杠(PS1='\\\\\\ $ '
或PS1='\\\\\\\\ $ '
)。
您可以使用以下命令打开错误请求bashbug
工具(用于向维护人员报告 Bash 中的错误的实用程序)。