Verwenden Sie PROMPT_COMMAND zum Echo in eine benutzerdefinierte Bash-Verlaufsdatei

Verwenden Sie PROMPT_COMMAND zum Echo in eine benutzerdefinierte Bash-Verlaufsdatei

Ich habe den folgenden Befehl in einer BASH-Shell ausgeführt.

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

aber jedes Mal, wenn ich etwas in die Shell eingebe und die Eingabetaste drücke, erhalte ich nur eine weitere Zeile der Datei my_bash_history, die sich mit Folgendem füllt:

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

weiß jemand, warum das passiert?

Antwort1

Wie Rui betonte: „Alles darin 'wird nicht ausgewertet.“ Oder, wie es im BASH-Handbuch heißt:

Durch das Einschließen von Zeichen in einfache Anführungszeichen bleibt der Literalwert jedes Zeichens innerhalb der Anführungszeichen erhalten.

Als Lösung zur Antwort PROMPT_COMMANDfolgt eine Möglichkeit zum Aufzeichnen des Verlaufs.

export PROMPT_COMMAND='echo $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//") >> $HOME/my_bash_history'

verwandte Informationen