Ok. Based on some of the dicussion, here is what I have come up with.
Add a new variable $maxima_objdir (Lisp: *maxima-objdir*). This is
where maxima will store object files (fasls).
By default it is initialized to the value of $maxima_userdir (Lisp:
*maxima-userdir*). However, if you set the environment variable
MAXIMA_OBJDIR, that will be used instead.
And there will be a new function MAXIMA-OBJDIR that will return
*maxima-objdir*. If MAXIMA-OBJDIR is given any arguments, they are
assumed to be subdirectories of *maxima-objdir*, and MAXIMA-OBJDIR will
return a pathname with those directories appended. For example
(maxima-objdir "share" "minpack") will return something like
"/home/toy/.maxima/share/minpack".
I also added a convenience function MAXIMA-LOAD-PATHNAME-DIRECTORY that
returns the directory part of the *LOAD-PATHNAME*. GCL doesn't have
*LOAD-PATHNAME*, but does have SYS:*LOAD-PATHNAME*, so this function
hides that difference. (This is useful in defsystems if all of the
files in a system are relative to the location of the defsystem file
itself.)
I have not decided what to do with maxima (script) or maxima-local. I
think I'll leave them as is for now.
How does that sound?
Ray