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 脚本的主要内容,如果未能解决你的问题,请参考以下文章
检测 NODE.JS 脚本是通过 bash(unix)/cmd(windows)直接调用还是导入(ESM 模块加载器)[重复]