当前位置: 首页 > news >正文

多个终端查看的history不一样,如何确保多个终端会话之间的 history 一致,减少历史记录差异

问题:

在使用 Linux 系统时,history 命令显示的历史记录通常是与当前终端会话相关的。这就意味着,如果你在多个终端中打开会话,它们显示的历史记录可能不完全相同。这个问题通常是由以下原因引起的:

原因:

原因 1:每个终端的历史记录独立

默认情况下,Bash 会将历史记录存储在 ~/.bash_history 文件中。但每个终端会话在结束之前不会自动将其输入的命令写入到该文件中,而是将其缓存在内存中,直到会话结束时才将这些命令追加到文件中。因此,多个终端会话中的历史记录会相互独立,直到所有会话结束并写入到同一个文件中。

原因 2:HISTCONTROL 和 HISTSIZE 配置

Bash 提供了一些变量来控制历史记录的行为。例如,HISTCONTROL 变量可以防止重复的命令出现在历史记录中,而 HISTSIZE 控制历史记录保存的命令条数。如果多个终端设置不一致,也可能导致显示不同的历史记录。

解决方法:统一历史记录

实时更新历史记录

如果你希望每次执行命令时,都实时将命令写入 ~/.bash_history 文件,而不是等会话结束时再写入,可以在~/.bashrc中添加以下行:

# 实时同步历史记录

PROMPT_COMMAND="history -a; history -n"

然后source ~/.bashrc 

解释

  • history -a: 将当前终端的历史记录追加到 ~/.bash_history 文件。
  • history -n: 读取新的命令历史记录,确保其他终端的命令能够及时显示在当前终端中。
http://www.lryc.cn/news/502844.html

相关文章:

  • Spring Boot整合EasyExcel并行导出及Zip压缩下载
  • Docker 对 iptables 规则的自动配置,这句话是什么意思
  • 使用aarch64-unknown-linux-musl编译生成静态ARM64可执行文件
  • 【SpringBoot中出现循环依赖错误】
  • 数据仓库-基于角色的权限管理(RBAC)
  • springboot3整合javafx解决bean注入问题
  • .NET 8 Blazor Web项目中的 .razor 文件与 .cshtml 文件的本质区别
  • SpringBoot快速使用
  • 【C语言实现:用队列模拟栈与用栈模拟队列(LeetCode 225 232)】
  • 远程控制软件对比与使用推荐
  • vue canvas 绘制选定区域 矩形框
  • 【SpringCloud】OpenFeign配置时间Decode
  • Xerces-C,一个成熟的 C++ XML 解析库!
  • 6.2 MapReduce工作原理
  • 一次旧业务系统迁移收缩的经历
  • MVC配置文件及位置
  • 如何解决samba服务器共享文件夹不能粘贴文件
  • 【中工开发者】鸿蒙商城app
  • (九)机器学习 - 多项式回归
  • Qt编写区位码gb2312、机内码、国标码————附带详细介绍和编码实现
  • linux网络编程 | c | epoll实现IO多路转接服务器
  • Source Insight的使用经验汇总
  • VSCode 报错:rust-analyzer requires glibc >= 2.28 in latest build
  • Android Link to Death 使用
  • 【C++游记】string的使用和模拟实现
  • DockerUI info存在未授权访问漏洞
  • SQL,查询每天最接近指定时间的记录
  • ElasticSearch如何做性能优化?
  • 【Linux】虚拟空间布局模型地址回填数据段合并(万字详解)
  • const和修饰指针的几种用法