这个 PROMPT_COMMAND 是做什么的?

What does this PROMPT_COMMAND do?

我的 Linux 系统上的 /etc/bash.bashrc 中有这个:

PROMPT_COMMAND=${PROMPT_COMMAND:+$PROMPT_COMMAND; }'printf "3]0;%s@%s:%s[=12=]7" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/\~}"'

来自 man bash 我知道它设置了一个在发出每个提示之前要执行的命令,但我想知道它到底在做什么。

将您的提示设置为现在正在执行的任何内容,此外还有 printf 将显示您的用户名@您的主机名和您当前的工作目录。您必须自己查找 3]0; 终端代码。

基本上,它会在您发出每个命令后使用 XTerm 转义序列更新终端的标题,以反映环境变量的当前值。

XTerm-compatible 终端仿真器识别的一些转义序列:

ESC]0;stringBEL — Set icon name and window title to string
ESC]1;stringBEL — Set icon name to string
ESC]2;stringBEL — Set window title to string

其中ESC是转义符(3),BEL是响铃符([=14=]7)。