PROMPT_COMMAND を使用してカスタム bash 履歴ファイルにエコーする

PROMPT_COMMAND を使用してカスタム bash 履歴ファイルにエコーする

BASH シェルで以下のコマンドを実行しました。

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

しかし、シェルに何かを入力してリターンを押すたびに、my_bash_history ファイルに次の行が 1 行追加され、次の内容が記入されます。

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'

関連情報