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
}
もちろん何もない現在の場所にあると思いますが、シンボリックリンクが別のディレクトリに移動された場合は、問題が解決されていることを丁寧にお知らせします。以前の場所と新しい場所の両方がリストされているため、何が起こっているのかを正確に知ることができます。