Как запретить ZSH объединять историю для всех закрывающихся вкладок?

Я использую комбинацию zsh с oh-my-zsh и iTerm2 для разработки на Mac. Я разочарован следующей проблемой:

  • N вкладок открыто
  • закрыть терминал
  • открыть его снова (с помощью параметра " Восстановить настройки окна системы")
  • история из всех ранее открытых вкладок была объединена в одну для каждой вновь открытой вкладки

Вопрос: как сохранить отдельную историю для каждой вновь открытой вкладки?

2 ответа

По https://github.com/robbyrussell/oh-my-zsh/issues/2537,

добавлять unsetopt share_history на ваш .zhsrc файл.

Если iTerm2 на самом деле просто не скрывает вкладку о закрытии и не поддерживает сессию оболочки в фоновом режиме (что, по мнению веб-сайта iTerm2, представляется возможным), невозможно полностью восстановить сессию оболочки. В вашем случае создается впечатление, что при восстановлении вкладки создается новый сеанс оболочки, что приводит к тому, что история читается HISTFILE,

Если вы хотите предотвратить любое слияние истории, вы должны убедиться, что из опций APPEND_HISTORY, INC_APPEND_HISTORY а также SHARE_HISTORY устанавливается только первый:

setopt noincappendhistory
setopt nosharehistory
setopt appendhistory

Это приведет к тому, что новые записи в истории (т. Е. Команды, запущенные во время сеанса) будут добавляться в файл истории только при выходе из оболочки. Поэтому, когда вы закрываете сеанс, следующая открытая (повторно) оболочка будет иметь строки только что закрытой оболочки в нижней части истории.


Другим вариантом может быть наличие отдельных файлов истории для каждого сеанса оболочки и использование собственного метода загрузки истории из этих файлов с помощью fc встроенный. Это будет, по крайней мере, частично зависеть от того, возможно ли провести различие между вкладками iTerm2 в рамках сеанса оболочки (например, с помощью некоторой переменной среды) и сохраняется ли это при повторном открытии вкладки.

Другие вопросы по тегам