You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash连续执行相同命令时history漏记单条命令问题咨询

结论1:连续重复命令漏记是Bash历史的默认预期行为

这完全是Bash历史模块的标准逻辑,和你用的at命令没有关系,核心控制参数是HISTCONTROL环境变量:

  • 绝大多数Linux发行版的默认Bash配置中,HISTCONTROL会被设置为ignoreboth,这个值是两个规则的简写:
    • ignorespace:开头带前置空格的命令不写入历史,对应你平时用前置空格执行查询命令不会被记录的现象
    • ignoredups:连续执行的完全相同的命令,仅第一条会被写入历史,后续紧邻的重复命令直接被忽略,和你观测到的“仅漏记连续重复的1条pomo,中间执行过其他命令后再跑pomo就会正常记录”的现象完全吻合
  • 如果需要调整这个规则,你可以修改bash配置文件(~/.bashrc或~/.bash_profile)中的HISTCONTROL赋值:
    • 只保留忽略前置空格的规则、关闭连续重复去重:export HISTCONTROL=ignorespace
    • 关闭所有历史过滤规则,所有执行过的命令都记录:export HISTCONTROL=""
结论2:at的/bin/sh警告和历史漏记无关

at命令输出的commands will be executed using /bin/sh只是个提示信息,说明你提交到at队列的定时任务会调用/bin/sh解释执行,这个逻辑完全在at自己的进程内运行,不会修改你当前交互Bash的任何配置,更不可能影响历史记录逻辑。你复现时atq查不到任务是独立的其他问题,和本次历史记录漏记没有关联。

快速自验证方法

你可以直接在当前终端执行以下命令复现这个逻辑,不需要依赖pomo别名:

# 查看当前生效的HISTCONTROL配置
echo $HISTCONTROL
# 连续执行两次完全相同的测试命令
echo test_duplicate_history
echo test_duplicate_history
# 查看最近5条历史,会发现仅第一条测试命令被记录
history | tail -n 5

执行后你就能看到和之前pomo命令完全一致的漏记现象,直接验证规则逻辑。

内容的提问来源于stack exchange,提问作者Michele Ancis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 23:30:51