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_COMMAND
segue uma forma de registrar o histórico.
export PROMPT_COMMAND='echo $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//") >> $HOME/my_bash_history'