环境模块的 loading/unloading 是可交换的/可结合的吗?

Is loading/unloading of environment modules commutative / associative?

我正在使用环境模块:http://modules.sourceforge.net/

load/unload 命令是可交换的还是结合的? 或者,是否有可能,例如如果我做 load X load Y 结果会和我做的不一样 load Y 其次是 load X?

我可以将这些命令引起的 "state" 视为加载了哪些模块的列表吗?或者这些命令的顺序重要吗?

模块文件加载顺序很重要。例如,模块文件 XY 可以通过在其前面添加或附加路径元素来更改相同的环境变量。

如果 modulefile X/path/to/directoryX 前置到 PATH 变量并且 modulefile Y/path/to/directoryY 前置到 PATH,加载 X 那么 Y 将优先于 /path/to/directoryY 目录中的二进制文件(因为此目录将是 PATH 变量中的第一个元素)而不是 /path/to/directoryX 中的二进制文件。当先加载 Y 然后 X 时,优先级将转到 /path/to/directoryX.

中的二进制文件

如果在两个目录中都有一个名为 foo 的二进制文件可用,则在本例中最后加载的模块的目录中调用时会找到它。

为了帮助遇到这种情况的用户,模块文件可以表达依赖关系以确保其他模块文件先于它们加载(预先要求,prereq)或确保其他模块文件在加载时不加载(conflict).