我正在开发一个运行 Fedora 9 的 x86 目标。
每当我重新启动它时,我的历史记录都会返回到某个状态,并且在重新启动之前我没有在会话中执行的命令。
我必须更改什么才能更新重新启动之前的历史记录?
如果我按键盘上的向上或向下箭头,然后修改我的历史记录中的某些内容,它就会永远改变。即使我按 Ctrl-C 然后尝试再次调出它,它仍然会改变——我已经在我的历史记录中丢失了那个条目。
我怎样才能防止这种情况发生?
我喜欢保留很多历史,所以我histappend在我的.bashrc. 大多数情况下,一切正常,历史记录是由许多 shell 附加而成的。然而,每隔一段时间,我会启动一个新的 shell 并发现我已经丢失了整个历史——而且它通常只包含来自最后一个 shell 的一些退出命令(即它不仅仅是覆盖而不是附加)。因此,我怀疑它是在 shell 退出时发生的,而不是在其他一些进程杀死.bash_history文件时发生的。支持这个结论,我的提示中有历史命令编号,而且我从未见过它们跳下来。
有人遇到过类似的问题吗?或者甚至只是有关于如何追踪问题的建议?
我不知道这是否符合预期,但我的历史记录不会跨会话保存。这就是说,如果我关闭窗口,那么当我再次打开它时,历史记录是空的。我怎样才能跨会话坚持它?
以下是您询问的命令的输出:
set -o | grep history
history on
$ grep -i history ~/.bashrc ~/.bash_profile ~/etc/bash.bashrc ~/etc/profile ~/.profile
/cygdrive/c/cygwin/home/car/.bashrc:# Make bash append rather than overwrite the history on disk
/cygdrive/c/cygwin/home/car/.bashrc:# History Options
/cygdrive/c/cygwin/home/car/.bashrc:# Don't put duplicate lines in the history.
/cygdrive/c/cygwin/home/car/.bashrc:# export PROMPT_COMMAND="history -a"
grep: /cygdrive/c/cygwin/home/car/etc/bash.bashrc: No such file or directory
grep: /cygdrive/c/cygwin/home/car/etc/profile: No such file or directory
/cygdrive/c/cygwin/home/car/.profile:if [ "x$HISTFILE" == "x/.bash_history" ]; then
/cygdrive/c/cygwin/home/car/.profile: HISTFILE=$HOME/.bash_history
$ ls -la ~/ | grep history -> no output
$ echo $HISTFILE …Run Code Online (Sandbox Code Playgroud) 我已将 bash 设置为将历史记录保存到文件中。每当 bash [正确] 退出时,它就会执行此操作。由于有时 bash 无法正确退出,因此历史记录会丢失。
所以问题是我可以设置 bash 来更频繁地保存历史记录吗?
bash 版本:GNU bash,版本 4.1.5(1)-release (i486-pc-linux-gnu)
当我运行时history,我得到一个命令列表。然而,它似乎并不完整,即使在给定的时间段内也是如此。(感觉它没有连续覆盖过去的 N 个命令 - 感觉缺少一些。)此外,history不同终端选项卡中的输出不同。这是因为在选项卡关闭之前历史记录不会写入磁盘吗?这是否解释了为什么某些命令似乎会丢失,因为它们被关闭选项卡覆盖了?
我在 OSX 10.8 上是为了它的价值。