モジュールを modulefile にロードしたいと思います (依存関係を解決するため)。
マイモジュール:
#%Module########################################
##
## Modulefile
#
proc ModulesHelp { } {
puts stderr "Env for MyProg"
}
proc addPath {var val} {
prepend-path $var $val
}
module load MyOtherModule
addPath PATH /opt/MyModule/bin
MyOtherModule:
#%Module########################################
##
## Modulefile
#
proc ModulesHelp { } {
puts stderr "Env for MyOtherProg"
}
proc addPath {var val} {
prepend-path $var $val
}
addPath PATH /opt/MyOtherModule/bin
実行するmodule load MyModule
と、両方のモジュールがロードされているように見えますが、環境が正しくありません:
$module list
Currently Loaded Modulefiles:
1) MyModule 2) MyOtherModule
$echo $PATH
/opt/MyModule/bin:/usr/bin:/bin
行を追加するforeach p [array names env] { set tmp $env($p) }
か、少なくとも行set tmp $env(PATH)
の後に MyModuleを追加するmodule load MyOtherModule
と、環境が正しく変更されます。関数を使用しない場合でも問題なく動作しますaddPath
が、コマンドを直接使用します。もちろん、関数でprepend-path
もっと多くのことをしたいので、これは少し面倒です。addPath
何が起こっているのか、何が欠けているのかについてのアイデアとして誰ですか?