Bash命令历史记录不起作用


13

会话之间的命令历史记录未保存。我正在使用guake,并且该会话的历史记录工作正常。

我注意到.bash_history有一些我在sudo -s模式下执行的命令,然后再次尝试了相同的命令,并且保存了会话中的所有命令,所以我尝试了chmod 777 .bash_history

现在,旧命令显示在会话开始时,但是没有保存新命令

提前感谢


2
所以...您到底想完成什么?您似乎没有在这里问问题:/
Thomas Ward

4
模式777是不必要的,尤其与“可执行”标志无关(默认模式为600)。在~/.bash_history您退出时(达到被写入新的命令,你可以使用history命令)。但我看不出这个问题太..
Onedinkenedi

Answers:


16

这些命令不可见,因为Bash仅在退出shell后将历史记录保存到.bash_history文件中,而Guake很少发生这种情况。有一个简单的解决方法可以使Bash在每个命令之后附加历史记录(而不是覆盖文件)

shopt -s histappend
PROMPT_COMMAND="history -a;$PROMPT_COMMAND"

4
真棒。希望我在5年前就知道这一点。
HDave 2012年

8

相关的,通常是如何解决的,如果您在拥有.bash_history文件之前对命令执行了sudo操作,则该文件将由root而非您的用户所有。



2

也可能是root:root拥有您的.bash_history(ROOT不应该是所有者,您的用户应该是所有者!),在这种情况下,您需要:

#chown user:user .bash_history

如果您做sudo bash很多,这显然可能发生!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.