たとえば、リリースごとにリリースフォルダにコピーするスクリプトを処理しますrelease/version_0.0.2
。また、このバージョン(フォルダrelease/version_0.0.2
)へのシンボリックリンクを設定しましたlatest
。スクリプトを実行するには、スクリプトが含まれているフォルダーにいる必要があります(相対パスを使用した設計上の不適切な決定)。
私の問題は、このスクリプトのユーザーがほぼ常に最新バージョンを使用したいということです。そこで、彼らはlatest
作業ディレクトリに設定し、そこからスクリプトを実行します。ただし、新しいバージョンをリリースすると、古いバージョンが自動的に使用されるため、スクリプト(bashで記述)でユーザーにこの古いバージョンを使用するかどうかを尋ねてください。
私の考えは、スクリプトがから実行されているかどうかを確認することlatest
でしたが、シンボリックリンクを変更すると、スクリプトを実行したときに$ PWDが変更されますが、シェルでは変更されません。
次に例を示します。
selnx183:~> cd latest/
selnx183:~/latest> echo $PWD
/home/ejohael/latest
selnx183:~/latest> ps
PID TTY TIME CMD
11082 pts/190 00:00:00 tcsh
32527 pts/190 00:00:00 ps
selnx183:~/latest> pwdx 11082
11082: /home/ejohael/release/version_0.0.2
selnx183:~/latest> ./test
-------------------------------------------------------------------
/home/ejohael/latest
/home/ejohael/latest
/home/ejohael/latest
/home/ejohael/release/version_0.0.2
~/latest
-------------------------------------------------------------------
/home/ejohael/latest
selnx183:~/latest> rm ~/latest
selnx183:~/latest> ln -s ~/release/version_0.0.3/ ~/latest
selnx183:~/latest> echo $PWD
/home/ejohael/latest
selnx183:~/latest> ps
PID TTY TIME CMD
11082 pts/190 00:00:00 tcsh
32727 pts/190 00:00:00 ps
selnx183:~/latest> pwdx 11082
11082: /home/ejohael/release/version_0.0.2
selnx183:~/latest> ./test
-------------------------------------------------------------------
/home/ejohael/release/version_0.0.2
/home/ejohael/release/version_0.0.2
/home/ejohael/release/version_0.0.2
/home/ejohael/release/version_0.0.2
~/release/version_0.0.2
-------------------------------------------------------------------
/home/ejohael/release/version_0.0.2
selnx183:~/latest>
テストは次のようになります。
#!/bin/bash
echo `env` > log
echo "-------------------------------------------------------------------"
echo $PWD
echo `pwd`
echo `cd -L . ; pwd`
echo `cd -P . ; pwd`
echo `dirs`
echo $OLDPWD
echo "-------------------------------------------------------------------"
pushd `dirname -- $0` > /dev/null
echo `pwd -L`
popd > /dev/null
ユーザーに常に最新バージョンを使用するように強制したくはありませんが、ユーザーが最新バージョンを使用していると思ったときに、ユーザーに警告する方法を教えてください。
編集:ユーザーがrelease / version_x.xxから古いバージョンを実行しているときではなく、ユーザーが古い最新のものから実行している場合にのみこれを取得したい