环境模块包用于动态修改用户环境( 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
答案 0 :(得分:1)
module
由/etc/profile.d/modules.sh
初始化,由/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
答案 1 :(得分:1)
您还可以调用bash
的登录实例,以便在登录时自动/etc/profile.d/modules.sh
为source
:
ssh mynode "bash -lc 'module load gcc-6.0; gcc --version'"