История Баш
Любые новые команды, которые были введены в активном терминале, могут быть добавлены в файл .bash_history
с помощью следующей команды:
history -a
Единственная сложная для понимания концепция - каждый терминал имеет свой собственный список истории bash (загружается из файла .bash_history
при открытии терминала).
Если вы хотите , чтобы потянуть любую новую историю , которая была написана другими терминалами во время жизни этого активного терминала, вы можете добавить содержимое .bash_history
файла в список истории активного Баша
history -c;history -r
Это очистит текущий список истории, поэтому мы не получим повторный список и добавим файл истории в (теперь пустой) список.
Решение
Вы можете использовать переменную bash PROMPT_COMMAND
для выдачи команды с каждым новым приглашением (каждый раз, когда вы нажимаете ввод в терминале)
export PROMPT_COMMAND='history -a'
Это запишет каждую команду в файл истории по мере ее поступления.
Результат
Теперь любой новый терминал, который вы открываете, будет иметь историю других терминалов без необходимости exit
этих других терминалов. Это мой любимый рабочий процесс.
Больше точности
Допустим (по какой-то причине) у вас есть два терминала, которые вы используете одновременно, и вы хотите, чтобы история отражалась между ними для каждой новой команды.
export PROMPT_COMMAND='history -a;history -c;history -r'
Основным недостатком здесь является то, что вам может потребоваться нажать Enter, чтобы повторно запустить PROMPT_COMMAND, чтобы получить последнюю историю из противоположного терминала.
Вы можете понять, почему этот более точный вариант, вероятно, излишний, но он подходит для этого варианта использования.