내가 생각하는 디렉터리가 다른 실제 디렉터리에 연결되어 있는 경우를 어떻게 감지합니까?

내가 생각하는 디렉터리가 다른 실제 디렉터리에 연결되어 있는 경우를 어떻게 감지합니까?

sshRails 서버에 들어가서 에 있다면 실제로 /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%의 시간 내에 다시 이동할 수 있습니다.

관련 정보