Я использую iTerm2 (версия 3) и мне он нравится. Но вот что он делает уже некоторое время и что действительно раздражает, так это то, что история команд делится между вкладками. Например, на первой вкладке запустите команду foo
и команду bar
, затем перейдите на вторую вкладку и запустите say Hello
, а затем вернитесь на первую вкладку; я бы хотел и ожидал, что стрелка вверх предложит bar
и затем foo
, но вместо этого он предложит say Hello
.
Есть ли способ исправить это поведение?
решение1
Если вы используете zsh, добавьте эти две строки ~/.zshrc
после строкиsource $ZSH/oh-my-zsh.sh
unsetopt inc_append_history
unsetopt share_history
От zshoptions(1) - страница руководства Linux:
INC_APPEND_HISTORY
Эта опция работает так же, как APPEND_HISTORY, за исключением того, что новые строки истории добавляются в $HISTFILE постепенно (по мере их ввода), а не дожидаются завершения работы оболочки.
ПОДЕЛИТЬСЯ_ИСТОРИЕЙ
Эта опция импортирует новые команды из файла истории, а также добавляет введенные вами команды в файл истории (последнее действие аналогично указанию INC_APPEND_HISTORY).
Автор поста указал, что это именно тот вариант, который он искал:
ПРИЛОЖЕНИЕ_ИСТОРИЯ
Если это установлено, сеансы zsh будут добавлять свой список истории в файл истории, а не заменять его. Таким образом, все несколько параллельных сеансов zsh будут иметь новые записи из своих списков истории, добавленные в файл истории, в том порядке, в котором они выходят.
решение2
Дополнительная информация к идеальному ответу harrymc.
Это не Iterm2, а функция zsh, которая активируется по умолчанию, если вы используетео-мой-зш
(видеть:https://github.com/robbyrussell/oh-my-zsh/blob/master/lib/history.zsh)
Поэтому поместите их в ваш файл .zshrc после source $ZSH/oh-my-zsh.sh
(см. ответ harrymc)
unsetopt inc_append_history
unsetopt share_history
решение3
Вы можете установить для переменной среды HISTFILE какое-то уникальное значение, но я просто снимаю ее в своем файле .bashrcфайл:
export HISTFILE=""
но мне не хочется хранить свою историю в файле. При сбросе настроек история просто сохраняется в памяти.
решение4
Для Bash
пользователей просто добавьте эти две строки в свой~/.bashrc
shopt -s histappend
PROMPT_COMMAND="history -a;history -c;history -r;$PROMPT_COMMAND"
Чтобы изменения вступили в силу, обязательно откройте новую вкладку.