[GRASS5] tcltkgrass and wish error
Glynn Clements
glynn.clements at virgin.net
Mon Aug 26 22:17:10 EDT 2002
Eric G. Miller wrote:
> > > since we get the tcltkgrass/wish questions too often,
> > > I suggest a change to tcltkgrass startup:
> > >
> > > mv $GISBASE/bin/tcltkgrass $GISBASE/etc/tcltkgrass.start
> > >
> > > new file $GISBASE/bin/tcltkgrass with contents:
> > > #!/bin/sh
> > > # the next line restarts using wish \
> > > if [ "`type -p $GRASS_WISH`" = "" ] ; then
> > > echo "wish not found. Install tcl and tk libraries."
> > > exit
> > > else
> > > exec $GISBASE/etc/tcltkgrass.start
> > > fi
> > >
> > > Are there any objections (certainly above message may be modified)?
> >
> > I doubt that this will achieve anything, other than a different error
> > message following the "I get the following error" messages.
> >
> > Even people who have installed Tcl/Tk will still get errors if wish is
> > installed as e.g. "wish8.3".
>
> It is a bug though currently.
>
> #!/bin/sh
> # the next line restarts using wish \
> exec $GRASS_WISH "$0" "$@"
>
> If $GRASS_WISH is not defined, the script goes into an endless loop.
etc/Init.sh has this at the top level:
if [ ! "$GRASS_WISH" ] ; then
GRASS_WISH=wish
export GRASS_WISH
fi
It should be impossible for GRASS_WISH to be unset within GRASS
(unless the user explicitly unsets it, in which case they deserve what
they get).
In any case, $GRASS_WISH should be quoted, i.e.
exec "$GRASS_WISH" "$0" "$@"
At least this will fail immediately (albeit with a cryptic error
message), rather than looping.
As a general principle, shell variables should almost always be
quoted.
I would guess that, if you examined all occurrences of unquoted
variables within GRASS' shell scripts, 1% of them would be unquoted
for a valid reason, and 99% because the programmer simply forgot.
--
Glynn Clements <glynn.clements at virgin.net>
More information about the grass-dev
mailing list