环境模块包用于动态修改用户环境(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发布于 2016-04-19 20:22:32
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发布于 2016-04-20 02:41:14
您还可以调用bash的登录实例,以便/etc/profile.d/modules.sh在登录时自动成为source-ed:
ssh mynode "bash -lc 'module load gcc-6.0; gcc --version'"https://stackoverflow.com/questions/36728685
复制相似问题