背景:"$HOME"
CLIユーティリティを使用して、LinuxおよびUnixの環境変数の場所を使用して、ユーザーのホームディレクトリにいくつかのステータスを保存します。プログラムはJenkinsジョブ内のシェルスクリプトで実行されます。異なるプログラム入力を使用して両方のジョブを実行するたびに、プログラムの状態が$HOME
ディレクトリに保存されるため、競合が発生します。
実行中のジョブからユーティリティを分離しようとしたが、限られ$HOME
たテストに適しているように見える環境変数を変更する方法を考えました。
if [ -d "newhome" ]; then
echo "newhome dir already exists"
rm -r newhome
fi
mkdir newhome
old_home="$HOME"
HOME="./newhome"
# rest of shell script is here
HOME="$old_home"
同じユーティリティを使用する複数のジョブがある場合も、同じジョブが複数回同時に実行される場合もあります。この変化は、他の環境、他の職業などに影響を与えますか?それとも別の方法を使用する必要がありますかchroot
?
答え1
スクリプトが実際にスクリプト内の静的文字列を削除するというnewhome
事実以外は、この回避策に深刻な問題はありません。
newhome
同じスクリプトを実行する同時プロセスがある場合、ディレクトリを削除することは問題になります。これは、古いプロセスがまだディレクトリを使用している間に新しいプロセスによってディレクトリが削除される可能性があるためです。