刷新过期的符号链接(软链接)在Linux中。

4
有没有一种方法可以在符号链接更改或失效后刷新它?
我有一个指向链接的脚本,比如说:
/apps/myapps/release/current/....

其中current是一个符号链接,指向最新版本。

稍后我会尝试以以下方式使用此链接

apps/myapps/release/current/scripts/start.sh

但是如果我将当前目录设置为current,改变链接不会有任何影响。

为了使这个改变生效,我必须先进入apps/myapps/release目录,然后返回到scripts目录才能访问start.sh

我相信一定有更好的方法。

3个回答

10
也许。
cd `pwd`

会很完美。让我看一下:

cd /tmp
mkdir a
mkdir b
touch a/OLD
touch b/NEW
ln -snf a cur
cd cur
ls # shows OLD
ln -snf b /tmp/cur
ls # shows OLD
cd `pwd`
ls # shows NEW

3
您的问题措辞有些模糊,但从您的问题标题来看,我的答案是:

ln -f -s /apps/myapps/new/link/target mylink

所以当我更改链接时,我会使用rm删除链接,然后使用ln -s创建新链接。我看不出这会有什么不同。也许我没有表达清楚,链接已经过期了。 - Shawn Vader

1
cd `pwd`

如果你的脚本处于符号链接更新的情况下,这种方式将不能工作。我解决这个问题的方法是:

PROMPT_COMMAND="cd \`pwd\`"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接