shell programming challenge
Conrad J. Sabatier
conrads at cox.net
Fri Nov 26 10:44:59 PST 2004
On Fri, 26 Nov 2004 13:57:31 +0200, Giorgos Keramidas
<keramida at ceid.upatras.gr> wrote:
> On 2004-11-25 17:30, "Conrad J. Sabatier" <conrads at cox.net> wrote:
> >
> > 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.
>
> Cool trick!
Thanks. :-)
> I was thinking something like adding the following to the local
> .bashrc:
>
> [-- .bashrc --]
>
> if [ ! X"${BASHRC_LOCAL}" = X"" ] && \
> [ -r "${BASHRC_LOCAL}" ]; then
> . "${BASHRC_LOCAL}"
> fi
>
> Then running xterm with BASHRC_LOCAL set to the path of the local bash
> script:
>
> BASHRC_LOCAL="/path/foo" xterm -e bash
>
> --rcfile is better though :-)
Yes, it's much simpler, for sure. :-)
By the way, there are some better testing constructs that eliminate
the need for using the old sh trick of "X$SOMEVAR" to avoid syntax
errors. The above expression could be written as:
if [ -n ${BASHRC_LOCAL} -a -r ${BASHRC_LOCAL} ]; then ...
Or using opposite logic:
if [ ! -z ${BASHRC_LOCAL} ...
Unix shells are just so damn cool, aren't they? :-)
--
Conrad J. Sabatier <conrads at cox.net> -- "In Unix veritas"
More information about the freebsd-questions
mailing list