Символы не экранируются в HISTTIMEFORMAT

Я установил свой первый двойной загрузочный линукс пару дней назад. Пока я настраивал свой терминал, я пришел с этой проблемой. В то время как экранирование корректно работает в переменной 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`

Но я все равно хочу знать, почему не работает первый метод?

1
задан 12 March 2021 в 19:36

1 ответ

У вас есть его наоборот: некоторые эвакуирующие последовательности интерпретируются в PS1 (ср. Руководство по Bash, 6.9 Управление подсказкой ). Это особенное для быстрого переменных, а другие переменные не получают такое же лечение.

HistTimeFormat просто используется в качестве входа в STRFTIME (2) , что ничего не знает об этих эвакументах. Таким образом, вам нужно что-то еще, чтобы интерпретировать эхотные последовательности (вроде Echo , в данном случае).

1
ответ дан 18 March 2021 в 23:26

Другие вопросы по тегам:

Похожие вопросы: