如何在ssh命令行中使用环境模块?

时间:2016-04-19 20:22:32

标签: bash shell ssh environment-variables environment-modules

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

我想直接从module命令行使用ssh。目的是能够从前端节点上执行的bash脚本在不同节点上执行命令。我不想为每个不同的节点配置显式更新PATHLD_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

2 个答案:

答案 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.shsource

ssh mynode "bash -lc 'module load gcc-6.0; gcc --version'"
相关问题