Как вы делитесь историей между терминалами в Zsh?

29

Как этого добиться, чтобы каждая введенная команда была видимой в истории каждого открытого терминала?

Когда открыто несколько терминалов, история не передается, то есть то, что вы ввели в историю одного терминала, не отображается в другом. Подумайте об альтернативе Bash PROMPT_COMMAND="history -a"(которая сохраняет историю до появления подсказки).

MJB
источник
См. Также связанные и расширенные вопросы и ответы: superuser.com/questions/446594/…
пояснительный

Ответы:

36

Следующие параметры будут применимы:

  • Чтобы сохранить каждую команду перед ее выполнением (это отличается от истории bash -a):

    setopt inc_append_history
    
  • Для чтения файла истории при каждом вызове истории, а также функций из inc_append_history:

    setopt share_history
    

Они могут быть установлены в вашем .zshrcфайле.

Связано с bash:

MJB
источник
4
«SHARE_HISTORY: эта опция импортирует новые команды из файла истории, а также приводит к добавлению введенных вами команд в файл истории (последняя похожа на указание INC_APPEND_HISTORY, которую следует отключить, если эта опция действует ).» (Из ручного выделения), т.е. только опция INC_APPEND_HISTORY будет делать то, что вы хотите.
artfulrobot
3
На самом деле, только опция SHARE_HISTORY будет делать то, что вы хотите. Фраза «которая должна быть отключена, если эта опция действует» означает «[INC_APPEND_HISTORY] должна быть отключена, если включена опция [SHARE_HISTORY]». Я проверял это на Zsh 5.1.1 на Ubuntu Xenial.
Линус Арвер
1
@opert правильно: setopt share_historyэто то, что достигнет желаемого результата. @MJB Вы хотели бы отредактировать свой ответ, чтобы удалить упоминание setopt inc_append_history? Это скрывает фактический ответ.
добр
Имена нечувствительны к регистру и подчеркивания игнорируются, поэтому, если выsetopt | grep histполучитеincappendhistoryиsharehistory.
Пабло А
4

Если вы используете удивительный OhMyZSH Робби Рассела, он позаботится об этом и многом другом.

См. Https://github.com/robbyrussell/oh-my-zsh/blob/master/lib/history.zsh

Это включает в себя setopt inc_append_history.

james_womack
источник
Это его / ее / его. Важно для работы с оболочкой.
Сис Тиммерман
@CeesTimmerman исправлено, спасибо. Это важно для общения в целом, я верю. Что вы имели в виду под «Важно для работы с оболочкой»?
james_womack
1
Опечатка в оболочке может повредить всю систему.
Сис Тиммерман