[GRASS-user] Allow setting environment variables in grass_env_file

Ken Mankoff mankoff at gmail.com
Sun Dec 3 05:37:57 PST 2017


Dear GRASS List,

In the grass72 startup script, in the function:

def bash_startup(location, location_name, grass_env_file):

These lines exist:

        for line in readfile(env_file).splitlines():
            if not line.startswith('export'):
              f.write(line + '\n')


If I comment out the 2nd line (and fix the indentation for the 3rd line because this is Python), then I can add "export DYLD_LIBRARY_PATH=..." in either ~/.grass.bashrc or ~/.grass7/bashrc and this fixes various GRASS issues on OS X relating to the temporal framework.

Can a GRASS developer explain to me why the startup scripts ignores EXPORT statements from the GRASS init file? Is there a problem if I change this behavior? Should I submit an patch to change this behavior permanently for computers other than my own?

In more detail, this is not an issue with Fink installations, but is with MacPorts. Fink installs an OS X Application: GRASS.app. Deep in the app I found a Makefile that seems to tell GRASS.app to respect "GRASS_LD_LIBRARY_PATH". The Macports version does not install an app, and does not respect the GRASS_LD_LIBRARY_PATH variable. For some reason, shell-level LD_LIBRARY_PATH and DYLD_LIBRARY_PATH 's are also not respected (perhaps due to SIP?).

I've switched from Fink to MacPorts because the Fink installation (on my system) has a GDAL issue and I cannot use 'r.external'. The MacPorts version allows me to use 'r.external', but I cannot use the temporal framework now, unless I edit out the line in the grass72 script.

Thanks,

  -k.


More information about the grass-user mailing list