正确的方式为非交互式shell来源.bashrc

时间:2019-05-05 09:07:57

标签: bash shell ssh openmpi

我一直在尝试解决问题,以便能够在多个节点上运行openmpi。

最初,我遇到问题$PATH$LD_LIBRARY_PATH变量没有通过openmpi会话从.bashrc文件进行更新,因此我手动添加了--prefix /path/to/openmpi来解决此问题。 / p>

结果是,即使anaconda路径变量也没有被加载。因此,最终我需要从我的主目录获取~/.bashrc文件。我怎样才能做到这一点?有人可以帮我吗?

更新01:

我写了一个简单的shell脚本来检查python的版本

python --version

并尝试使用openmpi在本地以及远程计算机上运行它,如下所示:

mpirun --prefix /home/usama/.openmpi --hostfile hosts -np 4 bash script

它返回

Python 2.7.12
Python 3.6.8 :: Anaconda, Inc.
Python 3.6.8 :: Anaconda, Inc.
Python 2.7.12

确认我怀疑openmpi为运行远程进程所做的任何事情都不会从〜/ .bashrc文件调用/设置适当的环境变量。来自使用多节点openmpi的人的任何帮助?

更新02:

一个简单的ssh环境grep告诉我,我的环境变量未更新,这可能是问题的原因。 (我什至试图在〜/ .ssh / environment文件中进行设置)

$ ssh remote-node env | grep -i path

似乎仅使用基本路径设置来加载/ etc / environment文件。我该如何纠正?

1 个答案:

答案 0 :(得分:1)

也许你应该这样跑。我想。 两种方法可以帮助您!

第一:

mpirun --prefix /home/usama/.openmpi --hostfile hosts -np 4 . ~/.bashrc && bash script

秒:

## 1. add this line to the script
. ~/.bashrc

## 2. run command as you do
mpirun --prefix /home/usama/.openmpi --hostfile hosts -np 4 bash script