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