我在 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'