LMOD TCL 在加载模块时执行 bash 脚本

Posted

技术标签:

【中文标题】LMOD TCL 在加载模块时执行 bash 脚本【英文标题】:LMOD TCL execute bash script while loading module 【发布时间】:2019-02-21 08:43:36 【问题描述】:

有一个小问题可以帮助我。在我们的新集群上,我们使用 LMod 作为环境模块系统。

为 OpenFOAM 创建一个模块 TCL 脚本,需要加载一个系统相关的 bashrc 文件。

这是我在另一个模块系统上使用的 TCL 脚本,它工作正常。我无法在 Lmod 中执行“源”命令行,这里缺少什么?

    #%Module1.0#####################################################################
##
## modules software/openfoam_v1812
##
## /opt/software/openfoam/openfoamv1812/OpenFOAM-v1812

proc ModulesHelp   
        global version modroot

        puts stderr "software/OpenFOAM-v1812 - sets the Environment for OpenFOAM-v1812 (openfoam.com)"


module-whatis   "Sets the environment for using OpenFOAM-v1812"

# for Tcl script use only

set     VERSION         v1812
set     OpenFOAM_PATH    /opt/software/openfoam/openfoam$VERSION/OpenFOAM-$VERSION
set     FOAM_INST_DIR    /opt/software/openfoam/openfoam$VERSION

puts stdout "source /opt/software/openfoam/openfoam$VERSION/OpenFOAM-$VERSION/etc/bashrc;"

【问题讨论】:

【参考方案1】:

我不是专家,但我最近遇到了一个类似的问题,在我的例子中是在模型中激活 Anaconda Python。就我而言,解决方案是在 LMod 中使用“执行”命令

https://lmod.readthedocs.io/en/latest/050_lua_modulefiles.html

有文档:

execute cmd=”<any command>”,modeA=“load”

以特定模式运行任何命令。例如执行 cmd=”ulimit -s unlimited”,modeA=“load” 将运行命令 ulimit -s unlimited 作为加载模块的最后一件事。

希望对你有帮助

【讨论】:

以上是关于LMOD TCL 在加载模块时执行 bash 脚本的主要内容,如果未能解决你的问题,请参考以下文章

Linux系统环境变量加载过程

tcl加载许多过程时所用的时间

十八.固化命令

执行tcl脚本怎么让tk窗口弹出来

检测 NODE.JS 脚本是通过 bash(unix)/cmd(windows)直接调用还是导入(ESM 模块加载器)[重复]

bash启动时加载配置文件过程