Utilice PROMPT_COMMAND para hacer eco en el archivo de historial de bash personalizado

Utilice PROMPT_COMMAND para hacer eco en el archivo de historial de bash personalizado

Ejecuté el siguiente comando en un shell BASH.

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

pero cada vez que escribo algo en el shell y presiono regresar, aparece una línea más del archivo my_bash_history que se llena con:

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

¿Alguien sabe por qué está pasando eso?

Respuesta1

Como señaló Rui, "Todo lo que hay dentro 'no se evalúa". O, como lo indica el manual de BASH,

Al encerrar caracteres entre comillas simples se conserva el valor literal de cada carácter entre comillas.

Como solución para acompañar la respuesta, a PROMPT_COMMANDcontinuación se presenta una forma de registrar el historial.

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

información relacionada