使用 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'

相關內容