When you run Macaulay 2, it has to find and load a sequence of startup files containing code written in the Macaulay 2 language, or it has to find a data file containing a memory dump from a previous session. Here is the way it does that.
Its first task is to discover the path to the binary file
M2 that is currently running. On some systems, that information is available from the
/proc file system. Otherwise, it examines the command name you used to run the program, which is provided to it as the argument in position number 0 on the command line. If it's not an absolute path, it searches along the path of directories mentioned in the environment variable PATH until it finds a file with the same name. If the result is a symbolic link, the link is followed. The final result is assumed to be in a directory named "
bin/", and the startup files are located relative to that. The path to the top level directory is stored in the variable
prefixDirectory, which you can examine to see whether it all worked out. For detailed information about the relative location of Macaulay 2 files, see
LAYOUT. Special arrangements are made during compilation to allow the program to be run and tested; see
buildHomeDirectory and
sourceHomeDirectory.
A possible data memory dump file may be located in the directory
lib/Macaulay2/Core/cache/ and loaded with
loaddata. If the file is present and and loading it works, then startup will be quicker. If it's absent then the necessary setup files will be loaded instead; if problems with it are encountered, it is always safe to delete it. The name of the file data dump file is of the form "Macaulay2-*-data", where "*" is replaced by the value of the environment variable name M2ARCH if present, or else is a value computed at compile time and stored in the hash table called
version and accessible as
version#"architecture".