我正在编写一些 .lua 文件,用于在 HPC 系统中加载模块。
基本上,我想要创建模块的应用程序是 Spack,它有一个自动完成 shell 脚本,用于在 Linux 中使用以下命令获取它:
source /apps/spack/share/spack/setup-env.sh
我想在将 spack 模块加载到系统中时在我的 .lua 文件中运行此命令,但通过执行以下操作无法让它工作:
os.execute('source /apps/spack/share/spack/setup-env.sh')
请注意,模块加载良好,我可以毫无问题地使用 spack,我只是希望自动完成功能在加载模块时起作用。
欢迎任何帮助,谢谢!
Lmod 支持通过 source_sh 函数获取 shell 脚本:
https://lmod.readthedocs.io/en/latest/260_sh_to_modulefile.html#using-source-sh
我已经用这个功能成功做到了。
execute{cmd="source /apps/spack/share/spack/setup-env.sh", modeA={"load"}}
基本上,它在模块加载后按预期执行源代码,并且工作完美。
仅供记录:
我之前使用过这个命令,但只有自动完成命令在 spack 中起作用,当我执行 spack 加载时,我收到错误,我需要执行源代码才能获得正确的环境变量。
source_sh("bash", "/apps/spack/share/spack/spack/setup-env.sh")
错误:
==> Error: spack load requires Spack's shell support.
To set up shell support, run the command below for your shell.
For bash/zsh/sh: . /apps/spack/share/spack/
感谢大家的帮助:)