3

Environment Modules包用于动态修改用户环境(debian 包 environment-modules)。

我想module直接ssh从命令行使用。目的是能够从在前端节点上执行的 bash 脚本在不同节点上执行命令。我不想为每个不同的节点配置显式更新PATH和环境变量。LD_LIBRARY_PATH

当我直接连接到节点然后module从节点调用时,它显然正在工作:

jyvet> ssh mynode
jyvet@mynode> module load gcc-6.0
jyvet@mynode> gcc --version
gcc (GCC) 6.0.1

但是以下方法失败了:

jyvet> ssh mynode "module load gcc-6.0; gcc --version"
command not found: module
gcc-4.8 (Debian 4.8.4-1) 4.8.4
4

2 回答 2

5

module/etc/profile.d/modules.shwhich 调用/etc/profile(在 shell 启动时设置环境变量)初始化。

ssh命令执行 shell 是一个非交互式 shell,既不调用/etc/profile也不读取配置文件。

这是解决方案:

jyvet> ssh mynode "source /etc/profile; module load gcc-6.0; gcc --version"
gcc (GCC) 6.0.1
于 2016-04-19T20:22:32.180 回答
3

您还可以调用登录实例,bash以便在登录/etc/profile.d/modules.shsource自动 -ed:

ssh mynode "bash -lc 'module load gcc-6.0; gcc --version'"
于 2016-04-20T02:41:14.260 回答