[GRASS-dev] Re: 'g.gui wxpython' won't work in wingrass as wxgui is
a shell script
Ivan Shmakov
ivan at theory.asu.ru
Sat Mar 1 14:03:38 EST 2008
>>>>> Hamish <hamish_b at yahoo.com> writes:
>>> bashisms common in GRASS
>> As Bash becomes somewhat less popular in the GNU world and being
>> replaced by other POSIX-compatible Shells, it makes sense to get rid
>> of bashisms irrespective of the platform.
> FWIW all known bashisms were removed prior to GRASS 6.2.2. This is
> mostly because Ubuntu now uses dash for /bin/sh and a lot of folks
> use Ubuntu. Anything left needing bash explicitly uses #!/bin/bash
I. e., `i.spectral', `r.mapcalculator', `r.tileset' and
`v.in.gps.babel'? Could someone please point me to the list of
the identified Shell portability issues of these scripts?
> Michael has a point in that GRASS heavily relies on UNIX shell
> scripts, which is ok for Mac (after fixing GNUisms) but not for MS
> Windows. Msys, mingw, and cygwin exist but are in the end all just
> different ways of putting lipstick on a pig.
>> Well, I've heard of Python, but don't know it.
> for some things it will be easier, for others not. e.g. for shell
> command scripting nothing will ever be as good as sh,
Well, for the Lisp family of the languages a syntax extension
mechanism is an inherent feature. Thus, nothing really prevents
a Lisp from deciphering something like the following:
(like-a-shell
(| (run "g.mlist" "type=rast" "pattern=2008-\\*-temperature")
(for-each-line r
(let ((s (concat r "-celsius")))
(run "r.mapcalc" "\"$s\" = \"$r\" - 273.15")))))
Though even such a notation, resembling the Shell code rather
closely, is hardly acceptable for an interactive use. (Except
for ones using Emacs as their command line editor.)
> but for more complex programming python will be better. It's just a
> matter of choosing a compromise. e.g. for your g.mlist example sh is
> hard to beat.
But that's exactly my point -- Python is hardly an alternative
for the 1.5-liners that you type into the Shell interactively.
And depriving a GRASS user of a Shell does, in my opinion,
seriously limit the usefulness of GRASS.
Thus, while MSYS' or Cygwin's Shell (and the ``usual'' tools)
may be somewhat difficult to deploy on W32, it seems to me just
unavoidable to have them installed in order to do anything
useful with GRASS.
As an alternative, it may be that GRASS could benefit from a
Shell (et al)... implemented in Python. It's all but an
original idea. E. g., Emacs implements Eshell [1], though it
may be noted that because of Emacs Lisp Emacs dependency on the
Shell is much looser than that of GRASS.
Besides, such a Shell would have a much wider field of
applicability than just being the interactive shell for GRASS.
I guess, that may make such a project to attract some interest
from the general Python community.
> But for something complex like r.in.wms or v.in.garmin, sh just isn't
> the right tool for the job.
> for a quick primer see: 10 minutes Python tutorial for programmers of
> other languages http://www.poromenos.org/tutorials/python
[1] http://www.gnu.org/software/emacs/manual/html_mono/eshell.html
More information about the grass-dev
mailing list