使用 PROMPT_COMMAND 回显自定义 bash 历史文件

使用 PROMPT_COMMAND 回显自定义 bash 历史文件

我在 BASH shell 中执行了以下命令。

export PROMPT_COMMAND='echo "$BASH_COMMAND" >> $HOME/my_bash_history'

但每次我在 shell 中输入一些内容并按回车键时,我都会多得到一行 my_bash_history 文件,其中包含:

echo "$BASH_COMMAND" >> $HOME/my_bash_history
echo "$BASH_COMMAND" >> $HOME/my_bash_history
echo "$BASH_COMMAND" >> $HOME/my_bash_history
echo "$BASH_COMMAND" >> $HOME/my_bash_history
echo "$BASH_COMMAND" >> $HOME/my_bash_history
echo "$BASH_COMMAND" >> $HOME/my_bash_history

有人知道为什么会这样吗?

答案1

正如 Rui 所指出的,“里面的任何东西'都不会被评估”。或者,正如 BASH 手册所述,

将字符括在单引号中可保留引号内每个字符的字面值。

作为伴随答案的解决方案,记录历史的一种方法如下PROMPT_COMMAND

export PROMPT_COMMAND='echo $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//") >> $HOME/my_bash_history'

相关内容