Use PROMPT_COMMAND para ecoar no arquivo de histórico bash personalizado

Use PROMPT_COMMAND para ecoar no arquivo de histórico bash personalizado

Executei o comando abaixo em um shell BASH.

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

mas toda vez que digito algo no shell e pressiono Enter, recebo mais uma linha do arquivo my_bash_history que é preenchida com:

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

alguém sabe por que isso está acontecendo?

Responder1

Como destacou Rui, “tudo o que está dentro 'não é avaliado”. Ou, como afirma o manual BASH,

Colocar caracteres entre aspas simples preserva o valor literal de cada caractere entre aspas.

Como solução para acompanhar a resposta, PROMPT_COMMANDsegue uma forma de registrar o histórico.

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

informação relacionada