[Cialug] How to add multiple instances of bash to your bash history

Crouse crouse at usalug.net
Fri Mar 21 13:33:30 CDT 2014


I'm always trying to remember what I typed at the shell..... this just lets
me keep it forever...

in the .bashrc

PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND ; }"'echo \
               "$(history 1)" >> ~/.bash_eternal_history'


On Fri, Mar 21, 2014 at 8:52 AM, Jeff Chapin <chapinjeff at gmail.com> wrote:

> I am definitely going to spend some time playing with this this weekend.
> Thanks a bunch!
>
>
>
>
> On Thu, Mar 20, 2014 at 5:23 PM, Tim Wilson <tim_linux at wilson-home.com
> >wrote:
>
> > That was quick. :)  Ok, I'm going to include the sub-shell stuff too.  If
> > you're not interested in that, you can take that out.  A sub-shell is
> > usually a one-off type of thing.  So I don't want that history cluttering
> > up my main history.  Plus, I got used to that feature on an OS years ago,
> > and I've been able to duplicate that feature in ksh/bash.  It has the
> side
> > effect of letting you know that if you press ^D, you're going to be
> logging
> > out.  I'm sure that's happened to everyone at some point.  The
> > .bash_profile is the same.  In fact, you could get away with just setting
> > NEWWINDOW, but that requires some additional work in .bashrc since my_tty
> > is defined in the profile, so I'd leave it alone.  Here is my .bashrc:
> >
> > # The next line adds in ${_sh+$_sh.} so we know what shell level we're
> at.
> > If there isn't a number, then we're at the main shell, not a sub-shell.
> > export PS1='\[\e]0;\w\a\]\n${_sh:+$_sh.}\[\e[32m\]\u@\h
> > \[\e[33m\]\w\[\e[0m\]\n\$ '
> >
> > if [[ ${NEWWINDOW:-0} -ne 0 && $my_tty != "not a tty" ]]; then
> >     export THISWIN=1
> >     typeset -i THISWIN
> >     while [ -f $HOME/.windows/win$THISWIN ]; do
> >         THISWIN=$THISWIN+1
> >     done
> >     touch $HOME/.windows/win$THISWIN
> >     trap "rm $HOME/.windows/win$THISWIN" 0
> >     export HISTFILE=$HOME/.histories/.bash_hist.$THISWIN.0
> >     export HISTSIZE=512
> >     unset _sh
> >     unset NEWWINDOW
> > else
> >     let _sh=${_sh:-0}+1
> >     export _sh
> >     export HISTFILE=$HOME/.histories/.bash_hist.$THISWIN.$_sh
> > fi
> >
> > There have been rare occasions where I have more win* files in the
> .windows
> > directory than I should.  This is usually caused by system hang, power
> > outage, someone killing processes, etc.  In that case, I remove every
> file
> > in .windows, log out, and log back in to reset everything.
> >
> > Note, I wrote this a long time ago, so some of the code might not be the
> > best way to do it.  But, it works for me, so I've pretty much left it
> > alone.
> >
> > Oh, and remember to mkdir .histories and .windows!
> >
> >
> >
> > On Thu, Mar 20, 2014 at 4:10 PM, Jeff Chapin <chapinjeff at gmail.com>
> wrote:
> >
> > > /me raises hand
> > >
> > > I'm interested.
> > >
> > >
> > > On Thu, Mar 20, 2014 at 3:09 PM, Tim Wilson <tim_linux at wilson-home.com
> > > >wrote:
> > >
> > > > I chose a different way of doing things.  I tend to do specific
> things
> > in
> > > > specific windows.  Compile in one, look at source in another, run an
> > > > application in yet another.  For me, having co-mingled histories just
> > > > wouldn't work.  So I have it set up so that every window I open in X
> > > starts
> > > > a login shell, which runs my .bash_profile.  In .bash_profile, I have
> > the
> > > > following:
> > > > NEWWINDOW=1
> > > > LOGTTY=${LOGTTY:=`tty`}
> > > > my_tty=${LOGTTY#/dev/pty}
> > > >
> > > > Then in my .bashrc:
> > > > if [[ ${NEWWINDOW:-0} -ne 0 && $my_tty != "not a tty" ]]; then
> > > >     export THISWIN=$my_tty
> > > >     typeset -i THISWIN
> > > >     export HISTFILE=$HOME/.histories/.bash_hist.$THISWIN.0
> > > >     export HISTSIZE=512
> > > >     unset NEWWINDOW
> > > > fi
> > > >
> > > > This way, when I open that window again, I have the same history I
> did
> > > > before.  I take things a bit further by having a history per shell.
> >  That
> > > > is, if I shell out of vi, I have a different history file.  That
> gets a
> > > bit
> > > > convoluted, so I'm not showing that here.  Also, for larger machines
> > > with a
> > > > lot of users, the ttys aren't going to be 1,2,3, etc.  Instead, I
> > employ
> > > a
> > > > scheme of touch'ing a file in a directory to keep track of the number
> > of
> > > > windows I've opened.  When I close a window, a trap call is executed
> to
> > > > remove the file.  I iterate through the files to see if there's an
> > > > opening.  So if I open 3 windows, close the 2nd one, and re-open it,
> I
> > > get
> > > > the same history, even though the tty could be way different.  If
> > anyone
> > > is
> > > > interested in that, I can include that too.
> > > >
> > > >
> > > >
> > > > On Wed, Mar 19, 2014 at 11:55 PM, Adam Hill <adam at diginc.us> wrote:
> > > >
> > > > > Here is my standard history setup from ~/.bashrc
> > > > >
> > > > > export HISTSIZE=100000
> > > > > export HISTFILESIZE=50000
> > > > > export HISTCONTROL=ignoredups
> > > > > export PROMPT_COMMAND="history -a; history -n; $PROMPT_COMMAND"
> > > > >
> > > > > the -a submits your recent commands so other sessions see them, the
> > -n
> > > > > pulls the hitsory back into your session so you can see your other
> > > > > sessions' history.
> > > > >
> > > > >               -a     Append  the  ''new'' history lines (history
> > lines
> > > > > entered
> > > > >                      since the beginning of the current bash
> session)
> > >  to
> > > > >  the
> > > > >                      history file.
> > > > >               -n     Read  the history lines not already read from
> > the
> > > > > history
> > > > >                      file into the current  history  list.   These
> >  are
> > > > >  lines
> > > > >                      appended  to  the history file since the
> > beginning
> > > > of
> > > > > the
> > > > >                      current bash session.
> > > > >
> > > > > You still usually have to press return once to see your other
> > session's
> > > > > histories but it works great besides that little quirk
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > On Wed, Mar 19, 2014 at 8:35 PM, Andrew Denner <
> linux-list at upeke.com
> > >
> > > > > wrote:
> > > > >
> > > > > > As was discussed at the meeting tonight, by default bash only
> > writes
> > > > the
> > > > > > last bash session running to the history blowing away any other
> > > > > instances.
> > > > > > Per
> > > > > >
> > > > >
> > > >
> > >
> >
> http://www.aloop.org/2012/01/19/flush-commands-to-bash-history-immediately/
> > > > > >
> > > > > > If you add: "export PROMPT_COMMAND='history -a'" To your .bashrc
> > file
> > > > it
> > > > > > will append each command immediately to your bash history file
> > > > > >
> > > > > > On Tuesday, March 18, 2014, Barry Von Ahsen <vonahsen at gmail.com>
> > > > wrote:
> > > > > >
> > > > > > > screen vs. tmux vs. byobu
> > > > > > >
> > > > > > > 7pm at Alliance
> > > > > > >
> > > > > > > http://www.cialug.org/?page_id=7&event_id=1030
> > > > > > > _______________________________________________
> > > > > > > Cialug mailing list
> > > > > > > Cialug at cialug.org <javascript:;>
> > > > > > > http://cialug.org/mailman/listinfo/cialug
> > > > > > >
> > > > > > _______________________________________________
> > > > > > Cialug mailing list
> > > > > > Cialug at cialug.org
> > > > > > http://cialug.org/mailman/listinfo/cialug
> > > > > >
> > > > > _______________________________________________
> > > > > Cialug mailing list
> > > > > Cialug at cialug.org
> > > > > http://cialug.org/mailman/listinfo/cialug
> > > > >
> > > >
> > > >
> > > >
> > > > --
> > > > Tim
> > > > Required reading: http://bccplease.com/
> > > > _______________________________________________
> > > > Cialug mailing list
> > > > Cialug at cialug.org
> > > > http://cialug.org/mailman/listinfo/cialug
> > > >
> > >
> > >
> > >
> > > --
> > > Jeff Chapin
> > > President, CedarLug, retired
> > > President, UNIPC, "I'll get around to it"
> > > President, UNI Scuba Club
> > > Senator, NISG, retired
> > > _______________________________________________
> > > Cialug mailing list
> > > Cialug at cialug.org
> > > http://cialug.org/mailman/listinfo/cialug
> > >
> >
> >
> >
> > --
> > Tim
> > Required reading: http://bccplease.com/
> > _______________________________________________
> > Cialug mailing list
> > Cialug at cialug.org
> > http://cialug.org/mailman/listinfo/cialug
> >
>
>
>
> --
> Jeff Chapin
> President, CedarLug, retired
> President, UNIPC, "I'll get around to it"
> President, UNI Scuba Club
> Senator, NISG, retired
> _______________________________________________
> Cialug mailing list
> Cialug at cialug.org
> http://cialug.org/mailman/listinfo/cialug
>


More information about the Cialug mailing list