Я пытался найти ~/.bash_history
свои последние команды во время сеанса терминала, но их просто не было. Я думаю, это потому, что у меня открыто несколько сеансов терминала.
Есть ли способ, которым я могу синхронизировать (т.е. синхронизировать-выдвинуть или записать-синхронизировать) текущую историю команд сеанса терминала в файл bash_history (не закрывая сеанс и не теряя эту среду)?
(По идее это было бы отдаленно похоже на то, как sync
команда сохраняет модификации файловой системы в некоторых системах.)
Я полагаю, я мог бы настроить bash для сохранения истории нескольких сеансов, но возможность помещать текущий буфер истории по-прежнему будет полезна в сценариях, когда вы работаете на новой машине, и вы случайно забыли настроить bash так, как вам этого хотелось бы ,
источник
history -a
встроенную команду оболочки, но теперь я получаю «отказано в доступе» к.bash_history
файлу.Ответы:
Добавьте эту строку к
.bashrc
:Откройте новый терминал и проверьте.
объяснение
history -a
добавляет новые строки истории в файл истории.history -n
говоритbash
читать строки, которые не читаются из файла истории в текущий список истории сеанса.PROMPT_COMMAND
: содержимое этой переменной запускается как обычная команда передbash
приглашением показа. Поэтому каждый раз, когда вы выполняете команду,history -a; history -n
выполняется и вашаbash
история синхронизируется.источник
history -a
в терминале с неизмененным Bashrc тоже.export PROMPT_COMMAND="${PROMPT_COMMAND};history -a; history -n"
${PROMPT_COMMAND}
пусто, это дает ошибку из-за опережающего;
export PROMPT_COMMAND="${PROMPT_COMMAND}${PROMPT_COMMAND:+;}history -a; history -n"