2

Моя Linux Prompt установлена как:

┌─ (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, скриншот:разница

Настройки Window -> Перевод в My 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

new_ps1

1 ответ1

2

Способ исправить это - прекратить использование последовательностей «сдвиг / сдвиг» и начать включать символы рисования линий непосредственно как 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 в настоящее время не поддерживает последовательности альтернативных наборов символов ISO 2022, когда он работает в режиме UTF-8. Для этого есть запись в списке желаний PuTTY, а также объяснение того, почему смешивать UTF-8 и ISO 2022 нежелательно.


Как в комментариях: обратите внимание, что в старых версиях Consolas не было символов для рисования рамок. Вам нужно будет получить Консолас из Windows 8.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .