前言:我当前的 tmux 配置在多个 session 的多个窗口中有多个 Pane 。
不断出现的问题是,当我在一个窗口中工作时,我所有的历史记录都很好,并且在该窗口的 Pane 之间是分开的,而当我交换窗口/ session 时,该历史记录最初也是分开的,但直到我进入一个在不同的窗口/ session 中执行命令。
一旦发生这种情况,所有 Pane 的所有历史记录都会合并在一起,有时无法找到某个 Pane 的实际最后一个命令,具体取决于我进入该 Pane 的时间。
有什么办法可以避免这种情况,让每个 Pane 都有自己的 shell 历史吗?
最佳答案
如果您使用的是 bash
shell,您的命令历史记录将写入由 HISTFILE
变量定义的文件,该变量默认为 ~/.bash_history
。在 tmux
Pane 中,您可以访问看起来像这样的变量 $TMUX_PANE
:
$ echo $TMUX_PANE
%3
您可以使用它来创建每个 Pane 的历史记录,方法是在您的 ~/.bashrc
文件中添加如下内容:
if [[ $TMUX_PANE ]]; then
HISTFILE=$HOME/.bash_history_tmux_${TMUX_PANE:1}
fi
这将存储 Pane 2 的历史记录,例如,在 ~/.bash_history_tmux_2
中。
这个想法的缺点是你最终会在你的主目录中得到一堆 .bash_history_tmux_*
文件。
关于bash - 我怎样才能让所有的 tmux 面板都有自己独特的 shell 历史记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55816863/