HISTTIMEFORMAT 中的字符未转义

HISTTIMEFORMAT 中的字符未转义

几天前,我安装了我的第一个双启动 Linux。当我自定义终端时,我遇到了这个问题。虽然转义在变量中可以正常工作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

你得到的是相反的:一些转义序列被解释为PS1(参见 Bash 手册,6.9 控制提示)。这对于提示变量来说是特殊的,其他变量不会得到相同的处理。

HISTTIMEFORMAT仅用作 的输入strftime(2),它对这些转义序列一无所知。因此,您需要其他东西来解释转义序列(例如echo,在本例中)。

相关内容