Я выполнил команду ниже в оболочке BASH.
export PROMPT_COMMAND='echo "$BASH_COMMAND" >> $HOME/my_bash_history'
но каждый раз, когда я печатаю что-то в оболочке и нажимаю Enter, я просто получаю еще одну строку в файле 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
echo "$BASH_COMMAND" >> $HOME/my_bash_history
кто-нибудь знает, почему это происходит?
решение1
Как отметил Руи, «Всё, что находится внутри, 'не оценивается». Или, как указано в руководстве BASH,
Заключение символов в одинарные кавычки сохраняет буквальное значение каждого символа внутри кавычек.
В качестве решения, сопровождающего ответ, один из способов записи истории PROMPT_COMMAND
приведен ниже.
export PROMPT_COMMAND='echo $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//") >> $HOME/my_bash_history'