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

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

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

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

ただし、シェルに何かを入力してEnterキーを押すたびに、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'

関連情報