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

Tim Wilson tim_linux at wilson-home.com
Thu Mar 20 15:09:15 CDT 2014


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/


More information about the Cialug mailing list