如何使所有tmux窗格具有自己独特的外壳历史记录?

时间:2019-04-23 17:54:06

标签: bash tmux

前言:我当前的tmux配置在多个会话的多个窗口中具有多个窗格。

不断出现的问题是,当我在一个窗口中工作时,我的所有历史记录都很好,并且在该窗口的窗格之间是分开的;当我交换窗口/会话时,该历史记录也最初是分开的,但是直到我输入一个命令在另一个窗口/会话中。

一旦发生这种情况,所有窗格的所有历史记录将合并在一起,有时就无法找到某个窗格的实际最后一个命令,这取决于自从我进入窗格以来已经有多长时间了。

有什么办法可以避免这种情况,并使每个窗格都有自己的外壳历史记录?

1 个答案:

答案 0 :(得分:2)

如果使用的是bash shell,则命令历史记录将写入由HISTFILE变量定义的文件,该变量默认为~/.bash_history。在tmux窗格中,您可以访问变量$TMUX_PANE,它看起来像这样:

$ echo $TMUX_PANE
%3

您可以通过将以下内容添加到~/.bashrc文件中来使用它来创建每窗格的历史记录:

if [[ $TMUX_PANE ]]; then
  HISTFILE=$HOME/.bash_history_tmux_${TMUX_PANE:1}
fi

这会将窗格2的历史记录存储在例如~/.bash_history_tmux_2中。

该想法的缺点是,您将在主目录中得到一堆.bash_history_tmux_*文件。