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