我怎样才能让所有的 tmux 面板都有自己独特的 shell 历史记录?
How can I make all tmux panes have their own unique shell history?
前言:我当前的 tmux 配置在多个 windows 多个会话中有多个窗格。
不断出现的问题是,当我在一个 window 中工作时,我所有的历史都很好,并且在 window 的窗格之间分开,当我交换 windows/sessions 时, 该历史记录最初也是分开的,但直到我在不同的 window/session.
中输入一个命令
一旦发生这种情况,所有窗格的所有历史记录都会合并在一起,有时无法找到某个窗格的实际最后一个命令,具体取决于我进入该窗格的时间。
有什么方法可以避免这种情况并让每个窗格都有自己的 shell 历史记录?
如果您使用 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_*
文件。
前言:我当前的 tmux 配置在多个 windows 多个会话中有多个窗格。
不断出现的问题是,当我在一个 window 中工作时,我所有的历史都很好,并且在 window 的窗格之间分开,当我交换 windows/sessions 时, 该历史记录最初也是分开的,但直到我在不同的 window/session.
中输入一个命令一旦发生这种情况,所有窗格的所有历史记录都会合并在一起,有时无法找到某个窗格的实际最后一个命令,具体取决于我进入该窗格的时间。
有什么方法可以避免这种情况并让每个窗格都有自己的 shell 历史记录?
如果您使用 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_*
文件。