bash - 我怎样才能让所有的 tmux 面板都有自己独特的 shell 历史记录?

标签 bash tmux

前言:我当前的 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/

相关文章:

linux - 将人类可读的时间范围转换为相关的秒数

linux - Bash No such file or directory 错误

linux - Bash: '$(( ))' 表示 'expr' 和 '[ ]' 表示 'test'?

bash - 简单的 tmux bash 脚本不起作用

terminal - 在 tmux 中使用 Alt-left/right 在窗口之间切换

bash - 将两个不同的输出通过管道传输到一个接受两个输入的命令中

bash - for循环多个扩展并对每个文件做一些事情

scroll - tmux 鼠标复制模式跳到底部

config - tmux : config files are not used

git - 类似 GNU screen 的 Git Bash 多 session 管理器