qsubでlocal installしたツールを叩く
qsubで計算クラスターにジョブを投げる際、ローカルインストールしたツールを叩きたい時がよくあります。
いままでは何も考えずにスクリプトに直接絶対PATHを書いていたのですが、
ツールによってはその内部でPATHに通っている別のプログラムを呼び出しているものがあります。
例えばPerlスクリプトで個別のPerlスクリプトまとめたパイプラインツールの場合、
モジュールを一通りインストールし、満を持して
#/bin/bash ~/local/bin/perl script.pl
と叩くと、それ自体はローカルインストールしたPerlによって呼び出されますが、その中で叩かれている別のスクリプトは計算サーバのPATHのPerlで実行されてしまいます。
言われてみれば当たり前なのですが、気づかないとなんでエラーが出てるのかわからんということがあります(ありました)。
個別のスクリプトにPATHを直書きしてなんとかしたあとに気づいたのですが(アホ)、
#/bin/bash PATH=~/local/bin:$PATH perl script.pl
としておけば、qsubを投げた場合でも常に自分のlocalのツール群が呼び出されるのでいいですね。
同様に、常にWorking directoryにcdしておいてもいいと思います。たまに変なバグが出るので。