On 3/25/15 3:02 PM, Christoph Anton Mitterer wrote:
> On Wed, 2015-03-25 at 14:48 -0400, Chet Ramey wrote:
>> The history file truncation code already skips lines that look like history
>> timestamps. Look at history.c:history_truncate_file().
> Ah? Hmm was that only recently introduced?
> I'm having bash4.3 with patches up to including 33. And this time I
> looked whether Debian added any of it's goodness ;-)
>
>
> When I set e.g. in .bashrc:
> HISTSIZE=50
> HISTFILESIZE=50
> HISTTIMEFORMAT=$'%c\t'
Here's what happens. The history timestamp code depends on the setting of
the history `comment character' -- that's the `#' that it uses to denote
the start of a timestamp entry. The history comment character disables
history expansion for every subsequent character on a line.
When you start bash, and source your .bashrc, the history comment character
is not set. You haven't set it in .bashrc, I assume, and it doesn't
acquire its default value until later on in the interactive shell
initialization process. Since that's not set, the lines beginning with
`#[digit]' are not recognized as timestamps and treated as ordinary history
entries.
You can fix this by assigning to histchars before setting HISTFILESIZE:
histchars='!^#'
Those are the defaults.
Chet
--
``The lyf so short, the craft so long to lerne.'' - Chaucer
``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, ITS, CWRU [email protected] http://cnswww.cns.cwru.edu/~chet/