我使用了很多計算集羣,這些集羣通常使用模塊系統來製作軟件包。基本上,您使用模塊命令,如module load sample_software
和sample_software
路徑被添加到$PATH
。在羣集中,可以在交互式使用和作業提交使用期間調用此命令。
我有一個安裝了PBS/Torque排隊系統的Linux盒子,這樣我就可以在沙盒中使用軟件,以便以後在集羣上使用。在這個盒子上我需要一個非常類似的模塊系統。我開始製作我的`/etc/profile.d/在目錄中稱爲modules.sh
文件看起來像這樣:
module()
{
if [ $2 == "softwareX" ]; then
PATH=$PATH:/home/me/dir/softwareX
export PATH
fi
}
我然後把下面一行在我.bash_profile
腳本:
source /etc/profile.d/modules.sh
現在,這對於下列用途非常有用:1)如果我提交了一份工作,而且我的工作腳本使用了module load softwareX
,沒有問題,工作完美無缺。 2)如果我在命令行上交互式地工作,並輸入module load softwareX
,那麼通往softwareX的路徑將加載到我的$PATH
中,並且一切正常。
但是,這不適用於以下情況:如果我製作一個簡單的bash腳本,其中包含行module load softwareX
,執行bash腳本時出現錯誤。例如,這裏是我的bash腳本:
#!/usr/bin/env bash
echo $PATH
module load softwareX
echo $PATH
當我執行此我收到錯誤script.sh: line 3L module: command not found
...和$PATH
永遠不會改變。有沒有人知道我可以如何解決這個問題在所有三種情況下工作?謝謝你的幫助!