Используйте PROMPT_COMMAND для вывода на экран пользовательского файла истории bash

Используйте PROMPT_COMMAND для вывода на экран пользовательского файла истории bash

Я выполнил команду ниже в оболочке 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'

Связанный контент