27

В настоящее время я настроил zsh таким образом, чтобы история команд сразу распределялась между всеми сессиями.

Скажем, у меня открыт эмулятор терминала с двумя вкладками, каждая с сеансом Zsh, A1 и A2. Если я введу ls -la в A1, а затем перейду к A2 и нажму клавишу со стрелкой вверх, я увижу ls -la в командной строке.

Я хотел бы изменить это так, чтобы сеансы не делились историей команд друг с другом, хотя, когда вы начинаете новый сеанс, он получает всю предыдущую историю из всех сеансов до этого.

2 ответа2

36

Возможно, у вас есть набор INC_APPEND_HISTORY .

Параметр INC_APPEND_HISTORY от man zshoptions:

Этот параметр работает как APPEND_HISTORY, за исключением того, что новые строки истории добавляются в $ HISTFILE постепенно (как только они вводятся), а не ожидают, пока оболочка не выйдет.

Вам нужно APPEND_HISTORY:

APPEND_HISTORY Если это установлено, сеансы zsh будут добавлять свой список истории в файл истории, а не заменять его. Таким образом, для нескольких параллельных сеансов zsh все новые записи из их списков истории будут добавлены в файл истории в порядке их выхода. Файл все равно будет периодически перезаписываться, чтобы обрезать его, когда число строк вырастет на 20% по сравнению со значением, указанным в $ SAVEHIST (см. Также параметр HIST SAVE BY COPY).

Вы можете прочитать об этих опциях в man zshoptions , man zshall или онлайн здесь.

Чтобы установить их в вашем ~/.zshrc или аналогичном, вы должны иметь:

setopt APPEND_HISTORY

Имейте в виду, что, если вы используете oh-my-zsh по умолчанию, я думаю, что используется INC_APPEND_HISTORY . Я не уверен на 100%, какие вещи загружаются, но если опция oh-my-zsh переопределяет ту, которую вы установили в ~/.zshrc , вы можете поиграть с ней в ~/.oh-my-zsh/lib/history.zsh

7

Чтобы добавить к принятому ответу, если вы используете oh-my-zsh , у вас, вероятно, включена опция SHARE_HISTORY по умолчанию.

Чтобы добиться разделения между запущенными оболочками + всей историей, объединенной во вновь открытом терминале, вы должны прокомментировать или удалить следующую строку:

setopt share_history # share command history data

из ~/.oh-my-zsh/lib/history.zsh

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .