shell programming challenge

Conrad J. Sabatier conrads at cox.net
Thu Nov 25 15:30:33 PST 2004


On Thu, 25 Nov 2004 11:59:47 -0600, "Conrad J. Sabatier"
<conrads at cox.net> wrote:

> On Thu, 2004-11-25 at 10:26 -0700, Don Wilde wrote:
> > Hey, folks -
> > 
> > I need to find a way to kick off an xterm running BASH and then
> > execute a program within that xterm, but NOT close the new xterm
> > after the program finishes. Another desirable thing would be to also
> > be able to 'source in' a file of shell environment that would affect
> > the new window 
> >   and shell.
> > 
> > Here's what I've found out so far:
> > 
> > Assume we have an executable test file 'ticktock':
> > 
> > #!/bin/sh
> > for n in 1 2 3 4 5 6 7 8
> > do
> >    echo "$n MYVAR=$MYVAR"
> >    sleep 1
> >    echo -n "continue? "
> >    read reply
> > done
> > # end of ticktock
> > 
> > I want to do something like:
> > 
> > xterm -e bash <(echo ./ticktock) &
> > 
> > When I do this, the program works & interacts, but the xterm dies
> > upon completion of ticktock or INT. I also do not seem to be able to
> > use the --rcfile switch as a bash option, although I can add
> > KEY=VALUE pairs before the xterm launch.
> > 
> > Ideas? Please respond to me directly.
> 
> man xterm.  There *is* an option to keep the term open after executing
> a program.

OK, I think I've found what you're looking for:

xterm -e "/usr/local/bin/bash --rcfile bash_commands -i"

Substitute your program's startup script for "bash_commands" in the
above.  Using the "-i" switch to bash forces interactive mode, so when
the script exits, you'll be returned to the shell prompt in the xterm.
As it turns out, xterm's "-hold" switch is wholly unnecessary here.

Note that the "--rcfile" switch, being a "double-hyphened" option, must
precede the later "-i" switch in order to be recognized.

HTH

-- 
Conrad J. Sabatier <conrads at cox.net> -- "In Unix veritas"


More information about the freebsd-questions mailing list