如何在 bash 脚本中使用“模块加载程序/1.1”?

如何在 bash 脚本中使用“模块加载程序/1.1”?

使用CentOS 7.x,用户“加载”软件执行程序的正确方式是通过命令行运行:

module load program/1.1

通过 bash 脚本运行此命令的正确方法是什么(例如,将作业提交到计算集群等)?一个人可以做

source module load program/1.1

还有哪些其他选择?

答案1

shell 脚本只是要运行的命令列表,几乎就像您在命令行中键入它们一样。所以正确的做法是:

module load program/1.1

...就像您在命令行中运行一样。请注意,如果这给出了未找到的命令,您可能需要获取源$MODULESHOME/init/<shell>(设置module命令)。

module命令实际上是一个 shell 函数,这就是它能够操纵当前 shell 环境的方式。

source做了一些不同的事情:它本质上是将源脚本复制并粘贴到您的脚本中。因此,如果源脚本定义了函数,您就可以调用它们。如果它设置了变量,即使是未导出的变量,您也可以看到它们。

现在,如果您想编写一个加载一堆模块以在交互式 shell 中使用的脚本,那么从您的交互式 shell你需要来源你的脚本, 但不是module。这模块常见问题解答解释了这一点。

答案2

我遇到了类似的问题,最终意识到我需要正确的 shebang 和 call 函数。因此,对于未来的用户,分三步:

1)用作#!/bin/bash你的shebang

2)添加module load program/1.1到你的脚本中

./yourscript.sh3)使用or运行脚本,bash yourscript.sh但 NOTsh yourscript.sh因为这不起作用

相关内容