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_COMMAND
folgt eine Möglichkeit zum Aufzeichnen des Verlaufs.
export PROMPT_COMMAND='echo $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//") >> $HOME/my_bash_history'