定期保存bash历史记录


9

我设置了bash来将历史记录保存到文件中。只要bash [适当地]退出,它就会执行此操作。由于有时bash无法正常退出,因此历史记录会丢失。

所以问题是我可以设置bash来更定期地保存历史记录吗?


我正在使用Linux内核运行Debian Gnu(版本6,Squeeze)。

bash版本:GNU bash,版本4.1.5(1)-发行版(i486-pc-linux-gnu)

Answers:


8

将此保存到您的bash_profile或bashrc

shopt -s histappend

PROMPT_COMMAND="history -a;$PROMPT_COMMAND"


这仍然是有效答案吗?在我的系统中,有一个条目shopt -s histappend/etc/bash/bashrc。尽管如此,任何运行中的shell异常退出都会丢失其命令行历史记录。
Nikos Alexandris

-1

您的$ HISTFILE可能由root拥有。假设您使用bash作为登录shell。检查方法如下:

$ [ -z $HISTFILE ] && echo need to set HISTFILE || ls -l $HISTFILE
-rw------- 1 root root 36639 May 21 19:48 /home/joeb/.bash_history

HISTFILE的默认值应为〜/ .bash_history,如果看到错误“需要设置HISTFILE”,或者$ HISTFILE不是〜/ .bash_history,则应检查〜/ .profile或〜/ .bash_profile或〜/。 bashrc以确保未设置或重置错误。

通常,它仅由root拥有,因此只需将其重置:

$ chown joeb.joeb $HISTFILE
$ ll $HISTFILE
-rw------- 1 joeb joeb 36639 May 21 19:48 /home/joeb/.bash_history

注销然后登录。

$ history

应该显示由根拥有文件之前输入的最后一组命令,然后显示文件所有权更改后输入的命令。


3
由于OP表示bash正常退出时会保存历史记录,因此他的问题与权限无关。也许您的答案对于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.