有人能确认在 debian lenny 下设置以下环境变量是否会导致以前的历史记录条目不被保存吗?GNU bash,版本 3.2.39(1)-release
export HISTCONTROL=ignoreboth
export HISTSIZE=500
我已将它们添加到我的/etc/bash.bashrc
但我不断收到重复的命令。
答案1
选项“ignoreboth”和“ignoredups”仅阻止将紧接在前的命令的重复项添加到历史记录中。更早的重复项不起作用。
$ echo $HISTCONTROL
ignoreboth
$ echo a
a
$ echo b
b
$ echo b
b
$ echo a
a
$ history 4
1047 echo a
1048 echo b
1049 echo a
1050 history 4
正如您所见,echo a
出现了两次,并且echo b
出现了一次。
您可能正在寻找“erasedups”选项。
$ echo $HISTCONTROL
ignoreboth:erasedups
$ echo c
c
$ echo d
d
$ echo d
d
$ echo c
c
$ history 4
1076 echo $HISTCONTROL
1077 echo c
1078 echo d
1079 history 4
这里echo c
和echo d
都只出现了一次。
答案2
尝试使用 ignoreups 而不是 ignoreboth,将其添加到 /etc/profile 文件中。
答案3
唯一地记录每个新命令是比较困难的。首先你需要添加
~/.profile
或类似内容:
HISTCONTROL=erasedups
PROMPT_COMMAND='history -w'
然后您需要添加~/.bash_logout
:
history -a
history -w