Can I create a separate bash history file for each terminal profile?

I use a bash script to start gnome-terminal with multiple tabs, each tab using a different profile, working directory, and in some cases executing a command within the tab.

In this situation, I'd like for the up arrow key to retrieve commands that were used in a specific tab. Is this possible?


I suppose you can use a gnome-terminal custom command for each profile, for example

bash -c 'PROFILE=default_profile exec bash'

or

bash -c 'PROFILE=screen_profile exec screen -U'

or similar.

Then in ~/.bashrc

if [[ -n $PROFILE ]]; then
    HISTFILE=~/.bash_history."$PROFILE"
fi

As long as the tty command gives you separate results (which it certainly should in any standard Unix environment, though I've had occasional misbehaviors in cygwin with certain terminal emulators), you could use that to separate things, as well.

I have something like the following in my .bashrc:

export HISTFILE="${HOME}/.history.d/history-"`uname -n`"-"`id -nu`"-"`tty|cut -c6-`

Which may seem like overkill, but you get the idea. It splits it out out based on

  1. what machine I'm on,
  2. who I am, and
  3. what terminal I'm on.

And you could add even more if you think of things that are relevant to you.