例如,我负责将每个版本复制到发布文件夹的脚本release/version_0.0.2
。我还为这个版本(文件夹release/version_0.0.2
)设置了一个符号链接,名为latest
. 要运行脚本,您必须位于脚本所在的文件夹中(使用相对路径的错误设计决策)。
我的问题是这个脚本的用户几乎总是希望使用最新版本。所以他们设置latest
到工作目录并从那里运行脚本。但是当我发布一个新版本时,他们会自动使用旧版本,所以希望脚本(用 bash 编写)询问用户他/她是否想使用这个旧版本。
我的想法是检查脚本是否从 运行latest
,但是当我更改符号链接时,当我运行脚本而不是在 shell 中时,$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 运行旧版本时