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

Jeff Chapin chapinjeff at gmail.com
Fri Mar 21 08:52:40 CDT 2014


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


More information about the Cialug mailing list