我的Linux 提示符设置:
┌─ (USERNAME@HOSTNAME PATH) ->
└─ $
是PS1
:
export PS1="\n\[\033[30;1m\]\[\033(0\]l\[\033(B\]\[\033(0\]q\[\033(B\] (\u@\h \[\033[31;1m\]\w\[\033[30;1m\]) ->\n\[\033(0\]m\[\033(B\]\[\033(0\]q\[\033(B\] \`if [ \$? = 0 ]; then echo \[\e[1\;30m\]\\$\[\e[1m\]; else echo \[\e[1\;31m\]\\$\[\e[0m\]; fi\` \[\033[0m\]"
不知何故,它不能从PuTTy可以正确显示,截图为:
设置窗户->翻译在我的 Putty 中:
- 远程字符集:->
UTF-8
- 线描字符的处理:->
Use Unicode line drawing code points
我怎样才能在 My PuTTy 中显示正确的提示?(顺便说一句,我尝试了线描字符的处理:)
使用以下方法 PuTTy Prompt 仍然无法工作:
if [ -z "$DISPLAY" ]
then
export PS1="\n\[\033[30;1m\]┌─ (\u@\h \[\033[31;1m\]\w\[\033[30;1m\]) ->\n└─ \`if [ \$? = 0 ]; then echo \[\e[1\;30m\]\\$\[\e[1m\]; else echo \[\e[1\;31m\]\\$\[\e[0m\]; fi\` \[\033[0m\]"
else
export PS1="\n\[\033[30;1m\]\[\033(0\]l\[\033(B\]\[\033(0\]q\[\033(B\] (\u@\h \[\033[31;1m\]\w\[\033[30;1m\]) ->\n\[\033(0\]m\[\033(B\]\[\033(0\]q\[\033(B\] \`if [ \$? = 0 ]; then echo \[\e[1\;30m\]\\$\[\e[1m\]; else echo \[\e[1\;31m\]\\$\[\e[0m\]; fi\` \[\033[0m\]"
fi
答案1
解决此问题的方法是停止使用“移出/移入”序列,并开始将画线字符直接作为 UTF-8 包含(就像您在示例中所做的那样):
PS1="\n\[\033[30;1m\]┌─ (\u@\h \[\033[31;1m\]\w\[\033[30;1m\]) ->\n└─ \`if [ \$? = 0 ]; then echo \[\e[1\;30m\]\\$\[\e[1m\]; else echo \[\e[1\;31m\]\\$\[\e[0m\]; fi\` \[\033[0m\]"
这里的问题是,当 PuTTY 在 UTF-8 模式下运行时,它目前不支持 ISO 2022 备用字符集序列。PuTTY 有一个愿望清单条目为此,以及解释为什么混合 UTF-8 和 ISO 2022 是不可取的。
正如评论中所说:请注意,旧版本的 Consolas 没有方框绘制字符。您必须从 Windows 8 获取 Consolas。