Bash 命令历史记录不起作用

Bash 命令历史记录不起作用

会话之间的命令历史记录未保存。我正在使用 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

相关内容