87

I’m using iTerm2 (version 3) and like it. But something that it has been doing for a while that's really annoying is that the command history is shared between tabs. E.g., in your first tab, run command foo and command bar, then go to your second tab and run say Hello, and then go back to the first tab; I would like and expect the up arrow to suggest bar and then foo, but instead it will suggest say Hello.

Is there a way to correct this behavior?

Alan H.
  • 2,938

4 Answers4

139

If you are using zsh, append these two lines to ~/.zshrc after line source $ZSH/oh-my-zsh.sh

unsetopt inc_append_history
unsetopt share_history

From zshoptions(1) - Linux man page :

INC_APPEND_HISTORY

This options works like APPEND_HISTORY except that new history lines are added to the $HISTFILE incrementally (as soon as they are entered), rather than waiting until the shell exits.

SHARE_HISTORY

This option both imports new commands from the history file, and also causes your typed commands to be appended to the history file (the latter is like specifying INC_APPEND_HISTORY).

The poster has indicated that this was rather the option he was looking for:

APPEND_HISTORY

If this is set, zsh sessions will append their history list to the history file, rather than replace it. Thus, multiple parallel zsh sessions will all have the new entries from their history lists added to the history file, in the order that they exit.

harrymc
  • 498,455
19

Extra info to the perfect answer of harrymc.

This is not Iterm2 but a feature of zsh which gets activated by default if you use oh-my-zsh

(see: https://github.com/robbyrussell/oh-my-zsh/blob/master/lib/history.zsh)

So put these in your .zshrc file after source $ZSH/oh-my-zsh.sh (see harrymc's answer)

unsetopt inc_append_history
unsetopt share_history
estani
  • 898
  • 1
  • 9
  • 13
4

You can set your HISTFILE environment variable to something unique, but what I do is simply unset it in my .bashrc file:

export HISTFILE=""

but I don't care to keep my history in a file. By unsetting, history is just kept in memory.

2

For Bash users, just add these two lines into your ~/.bashrc

shopt -s histappend
PROMPT_COMMAND="history -a;history -c;history -r;$PROMPT_COMMAND"

Make sure you open a new tab for this to take effect

Io-oI
  • 9,237
morgan_il
  • 121