bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: A Feature Request for History


From: Bradley M. Kuhn
Subject: Re: A Feature Request for History
Date: Mon, 13 Jun 2011 13:10:21 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.2 (gnu/linux)

Jayesh Badwaik wrote at 03:18 (EDT) on Saturday:

> Every now and then I want a command from one of the instances of bash
> to be used in another instance. In that case, the history of bash is
> not that useful since it is quiet linear in nature and does not store
> history of all bash instances.

That's not entirely correct.  Bash can be configured to store history
from multiple bash instances and not overwrite.  Here's what I use in my
bashrc to accomplish this:

    HISTSIZE=1048576
    HISTFILESIZE=1048576
    set histappend=true

    LAST_HISTORY_WRITE=$SECONDS
    function prompt_command {
        if [ $(($SECONDS - $LAST_HISTORY_WRITE)) -gt 300 ]; then
            history -a
            LAST_HISTORY_WRITE=$SECONDS
        fi
        ...
    }

This makes sure that all my bash instances save their history and that I
never lose a command.  I have all my bash history going back to
2003-10-15 accessible to me.

The only feature you describe above missing with that configuration is
that existing shells won't find history commands written out
in-between.  I have a tendency to close/open bash shells, so I don't run
into that problem.

Unfortunately, having looked recently at the history code, I think
adding a feature whereby existing running shells "notice" the history
file has changed would be a large rewrite to the history code.  I think
that would be a useful optional feature, though.

> I would like to propose another method of storing the history, just
> like git stores its commits, by using the some kind of hash of the
> command.

I'm not convinced this would accomplish anything of use.  The hashes
would be quite large, and typing them would be annoying, even with tab
completion.

One thing I do is keep my bash_history file in git, by making
.bash_history a symlink to a file in a directory which is stored in
Git.  Perhaps doing that would help you keep better track of your
commands?

-- 
   -- bkuhn



reply via email to

[Prev in Thread] Current Thread [Next in Thread]