Підказка_команда для перезавантаження з .bash_history


8

Моє .bashrcмістить наступне:

HISTSIZE=30000
PROMPT_COMMAND="history -a"
export HISTSIZE PROMPT_COMMAND

Що я помічаю:

  • .bash_history Чи отримати додається.
  • історія даного термінального сеансу не включає записи, додані з інших термінальних сеансів

Бажана поведінка полягає в тому, щоб .bash_historyперезавантажити після будь-якої команди на будь-якому терміналі. Який спосіб досягти цього? Імовірно, це було б зміною до PROMPT_COMMAND?

Відповіді:


13

history -aКоманда додає тільки до файлу історії. Це не впливає на будь-який сеанс оболонки, якщо ви також не читали з нього. Отже, ви шукаєте:

PROMPT_COMMAND="history -a; history -r"

Як пояснено в help history:

  -r    read the history file and append the contents to the history
        list

Таким чином, ви спочатку додасте історію вашої поточної оболонки до неї, $HISTFILEа потім прочитаєте з неї, імпортуючи історію, додану з будь-якого іншого екземпляра оболонки, у поточну.

Зауважте, що якщо ви запускаєте команду в одному терміналі, вона не з’явиться в історії іншого, поки ви не запустите команду в другому. $PROMPT_COMMANDЗапускаються до того, як підказка відображаються, тому , якщо другий термінал просто відкрити і сидять там, він не буде читати нову команду в першому , поки ви біжите що - то в другому і нова підказка відображаються.


Я додав history -rзараз - і це вирішує проблему: спасибі. Афа "працює щось нове" - "нове" щось таке history | tail -n 100, що робилося належним чином.
javadba
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.