У меня есть конкретный метод для моего приглашения bash, допустим, он выглядит так:
CHAR="༇ "
my_function="
prompt=\" \[\$CHAR\]\"
echo -e \$prompt"
PS1="\$(${my_function}) \$ "
Чтобы объяснить вышесказанное, я построил свое приглашение bash, выполнив функцию, хранящуюся в строке, что было решением, принятым в результате этот вопрос . Давайте притворимся, что он работает нормально, потому что это так, кроме случаев, когда используются символы Unicode
Я пытаюсь найти правильный способ избежать символа Unicode, потому что прямо сейчас это мешает длине строки bash. Простой способ проверить, не работает ли она, - это набрать длинную команду, выполнить ее, нажать CTRL-R и ввести, чтобы найти ее, а затем нажать CTRL-A CTRL-E, чтобы перейти к началу / концу строки. Если текст искажается, значит, он не работает.
Я пробовал несколько вещей, чтобы правильно экранировать символ Unicode в строке функции, но похоже, что ничего не работает.
Специальные символы, подобные этой, работают:
COLOR_BLUE=$(tput sgr0 && tput setaf 6)
my_function="
prompt="\\[\$COLOR_BLUE\\] \"
echo -e \$prompt"
Это основная причина, по которой я сделал подсказку функциональной строкой. Эта escape-последовательность НЕ влияет на длину строки, это просто символ Юникода.