会话之间的命令历史记录未保存。我正在使用 guake,会话历史记录运行正常。
我注意到.bash_history我在模式下执行了一些命令sudo -s
并再次尝试了相同的命令,并且会话中的所有命令都已保存,因此我尝试了:
chmod 777 .bash_history
现在,旧命令会出现在会话开始时,但没有新命令被保存。
答案1
命令不可见是因为 Bash 仅在 shell 退出后才将历史记录保存到 .bash_history 文件中,而 Guake 很少发生这种情况。一个简单的解决方法让 Bash 在每条命令后附加历史记录(而不是覆盖文件)
shopt -s histappend
PROMPT_COMMAND="history -a;$PROMPT_COMMAND"
答案2
相关的,通常这种情况被破坏的原因是如果你在拥有 .bash_history 文件之前使用 sudo 执行命令,那么它将由 root 而不是你的用户创建。
答案3
看http://mywiki.wooledge.org/BashFAQ/088如何避免丢失历史记录,以及这样做的副作用的解释。
答案4
也可能是 root:root 拥有您的 .bash_history(ROOT 不应该是所有者,您的用户应该是所有者!),在这种情况下您需要:
#chown user:user .bash_history
如果你做了很多事情,这显然就会发生sudo bash
!