EnvironmentModulesを実際に使用するに当たって、PATH環境変数らの遷移を確認してみる
ログイン直後のbash/tcsh(csh)のパスは下記となっている(CentOS7.6)
bash
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/$USER/.local/bin:/home/$USER/bin
tcsh(csh)
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin仮に Relion-3.0-beta-2 のmodulefile が下記として
#%Module1.0
prepend-path PATH /Appl/relion-3.0-beta-2/bin
prepend-path PATH /usr/lib64/openmpi/bin
prepend-path LD_LIBRARY_PATH /usr/lib64/openmpi/libそして、eman2.22 のmodulefile が下記とした場合、
#%Module1.0
prepend-path PATH /Appl/eman2.22/bin先に Relion をmoduleコマンドでloadして、それからEMAN2をloadすると mpirun はEMAN2由来に限定されてしまう。
[saber@c ~]$ module load relion/3.0-beta-2
[saber@c ~]$ module load eman2/2.22
[saber@c ~]$ which mpirun
/Appl/eman2.22/bin/mpirun
[saber@c ~]$全体のPATHから見ると下記になる。
[saber@c ~]$ echo $PATH
/Appl/eman2.22/bin:/usr/lib64/openmpi/bin:/Appl/relion-3.0-beta-2/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
[saber@c ~]$「prepend-path」を使用しているから仕方ないのだが、逆にappend-pathで環境変数の末尾につけるとOS提供のpythonが使われる。
この辺は難しい。
単に、アプリ毎にmoduleをloadさせればいいのかな?って思っている。
なら再度relionをロードすれば..と思えるが、既にあるのでloadしてくれないです。
結局は eman2/2.22 をunload させればOKとなる。