bash – 替换重要的符号链接’安全’

前端之家收集整理的这篇文章主要介绍了bash – 替换重要的符号链接’安全’前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想从bash脚本中更改符号链接的目标。问题是,符号链接是非常重要的(这是/ bin / sh,即),我将以以下方式做到:

>新的目标将在删除旧的后立即可用,即不会有事情会注意到它消失,
>在中间不会有变更失败,即删除符号链接用户,也不会有新的。

我想到了两种方法。使用普通的ln:

ln -fs /bin/bash /bin/sh

或使用mv:

ln -s /bin/bash /bin/sh.new
mv /bin/sh.new /bin/sh

哪一个更适合我的需要?是否有可能其中一个会尝试替换符号链接目标而不是符号链接本身?

重命名(mv)是一个原子操作;创建新的符号链接不是(删除旧的符号链接;创建新的符号链接)。所以你应该使用mv:
$ ln -s new current_tmp && mv -Tf current_tmp current

这是一个blog post讨论这个。另外,如果你担心会发生什么,为什么不先尝试一个非关键的符号链接呢?

猜你在找的Bash相关文章