Я установил свой первый двойной загрузочный линукс пару дней назад. Пока я настраивал свой терминал, я пришел с этой проблемой. В то время как экранирование корректно работает в переменной PS1
, оно не работает в переменной HISTTIMEFORMAT
.
WHITE="\e[97m"
BOLD="\e[1m"
RESET="\e[0m"
PS1="$BOLD[\A - @\h:$WHITE\W\e[m]\n\\$ $RESET"
HISTTIMEFORMAT="$WHITE[%F %T] $RESET"
Один из способов обойти это - использовать echo
и -e
следующим образом
HISTTIMEFORMAT=`echo -e $WHITE[%F %T] $RESET`
Но я все равно хочу знать, почему не работает первый метод?
У вас есть его наоборот: некоторые эвакуирующие последовательности интерпретируются в PS1
(ср. Руководство по Bash, 6.9 Управление подсказкой ). Это особенное для быстрого переменных, а другие переменные не получают такое же лечение.
HistTimeFormat
просто используется в качестве входа в STRFTIME (2)
, что ничего не знает об этих эвакументах. Таким образом, вам нужно что-то еще, чтобы интерпретировать эхотные последовательности (вроде Echo
, в данном случае).