如何检测我认为自己所在的目录何时链接到不同的实际目录?

如何检测我认为自己所在的目录何时链接到不同的实际目录?

如果我ssh进入我的 Rails 服务器,并且我处于/var/www/some_app/current,它实际上是一个指向(比如说)的符号链接/var/www/some_app/releases/20201015004444。如果我进行部署,则将current替换为指向(例如)的新符号链接/var/www/some_app/releases/20201023010000

然而,变化的输出pwd和价值都没有$PWD。当然,我的提示不会改变。没有任何明显的迹象表明有什么问题。一切都在嗡嗡作响,好像一切都很棒,如果我忘记了我需要更改为新的符号链接,直到出现问题或失败我才会知道我忘记更改目录。

如何轻松地将 的实际当前值current与我的实际当前目录进行比较?

答案1

readlink -f .会告诉你你在哪里实际上是,并且 readlink -f $PWD会告诉你符号链接是什么现在指向,即使那不是您所在的目录。

这可以轻松地封装在一个函数中(如果需要,您可以自动触发):

correct_current_directory() {
  [[ $(readlink -f .) = $(readlink -f $PWD) ]] || echo "Moving $PWD from $(readlink -f .) to $(readlink -f $PWD)" && cd $PWD
}

确实如此没有什么如果您位于您认为的位置,但如果您的符号链接被移动到另一个目录,它会礼貌地通知您它正在解决问题。由于它同时列出了旧位置和新位置,因此您可以确切地知道正在发生的情况,并且可以在您不想移动的罕见 0.01% 时间内移回。

相关内容