在 lua 中加载模块文件时获取 shell 脚本

问题描述 投票:0回答:2

我正在编写一些 .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,我只是希望自动完成功能在加载模块时起作用。

欢迎任何帮助,谢谢!

module lua hpc spack
2个回答
0
投票

Lmod 支持通过 source_sh 函数获取 shell 脚本:

https://lmod.readthedocs.io/en/latest/260_sh_to_modulefile.html#using-source-sh


0
投票

我已经用这个功能成功做到了。

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/

感谢大家的帮助:)

© www.soinside.com 2019 - 2024. All rights reserved.