【发布时间】:2010-09-25 04:41:01
【问题描述】:
我试图阻止bash 将重复的命令保存到我的历史记录中。这是我得到的:
shopt -s histappend
export HISTIGNORE='&:ls:cd ~:cd ..:[bf]g:exit:h:history'
export HISTCONTROL=erasedups
export PROMPT_COMMAND='history -a'
当我登录并且.bash_history 在内存中时,这可以正常工作。例如:
$ history
1 vi .bashrc
2 vi .alias
3 cd /cygdrive
4 cd ~jplemme
5 vi .bashrc
6 vi .alias
$ vi .bashrc
$ history
1 vi .alias
2 cd /cygdrive
3 cd ~jplemme
4 vi .alias
5 vi .bashrc
$ vi .alias
$ history
1 cd /cygdrive
2 cd ~jplemme
3 vi .bashrc
4 vi .alias
$ exit
但是当我重新登录时,我的历史文件如下所示:
$ history
1 vi .bashrc
2 vi .alias
3 cd /cygdrive
4 cd ~jplemme
5 vi .bashrc
6 vi .alias
7 vi .bashrc
8 vi .alias
我做错了什么?
编辑:从.bashrc 中删除shopt 和PROMPT_COMMAND 行并不能解决问题。
【问题讨论】:
-
你解决过这个问题吗?我的 /etc/profile 看起来像这样(在 Mac 上),我有同样的问题: # blog.macromates.com/2008/working-with-history-in-bash # ducea.com/2006/05/15/… export HISTCONTROL=erasedups export HISTSIZE=10000 export HISTTIMEFORMAT="%F-%T%t" shopt - s histappend (试图格式化这半个像样的,不容易)
-
这是编程中固有的问题,与程序员使用的特定工具有关。我很困惑这个问题会被认为是“离题”(至少有 5 人更多)。多余的 .bash_history 对我来说是一个长期的烦恼,现在已经解决了。不过,这个问题可以移到 Unix stackexchange 站点。
标签: bash command-line cygwin history