![Tmux 历史记录未保留](https://linux22.com/image/1023754/Tmux%20%E5%8E%86%E5%8F%B2%E8%AE%B0%E5%BD%95%E6%9C%AA%E4%BF%9D%E7%95%99.png)
我遇到了一个问题,当我退出 tmux 会话时,无法找到我在 tmux 终端内运行的命令。有人可以帮忙吗?
tmux
- 使用此命令运行 tmux 会话
echo "Hello"
- 在 tmux 会话中使用此命令
history
- 在这种情况下,echo "Hello"
命令存在。
exit
- 使用它退出 tmux 会话
history
- 退出 tmux 会话后运行此命令
运行此程序后,我无法获取echo "Hello"
在 tmux 会话中使用的命令。
答案1
退出终端并重新启动。现在,history
将向您显示所有这些命令,就像tmux
以前一样。
.bash_history
会话的历史记录仅在您退出会话后才提交到文件。当您开始新会话时,.bash_history
将读取该历史记录,并且命令将可用。它这样工作的原因是它允许分别评估每个会话的历史记录。
可以配置您的终端,以便立即在所有会话的历史记录中提供已发出的命令。
从这里:
将以下内容添加到您的〜/ .bashrc:
# Avoid duplicates
HISTCONTROL=ignoredups:erasedups # Ubuntu default is ignoreboth
# When the shell exits, append to the history file instead of overwriting it
shopt -s histappend # In Ubuntu this is already set by default
# After each command, append to the history file and reread it
PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND$'\n'}history -a; history -c; history -r"
了解有关 HISTCONTROL 变量的详细信息这里。
在默认的 Ubuntu 安装中,实际上单独执行这个命令就可以了:
PROMPT_COMMAND="history -a; history -c; history -r"
请注意,在您“刷新”提示后,来自不同会话的任何新命令都将在您的会话中可用:提示创建后历史记录就会更新。