Yanıtlar:
Bir symlink aslında verdiğiniz yolu bir dize olarak saklar¹. Bu, bağlantınızın ~/mylink" ." (bir karakter) içerdiği anlamına gelir . Bağlantıya eriştiğinizde, bu yol, bağlantıyı yaptığınız zamanki yerine bağlantının nerede olduğuna göre yorumlanır.
Bunun yerine, bağlantıda istediğiniz gerçek yolu saklayabilirsiniz:
ln -s "$(pwd)" ~/mylink
(çalışma dizini adı) çıktısını komut satırınıza koymak için komut değiştirme özelliğini kullanarak pwd. lntam yolu görür ve daha sonra doğru yeri gösterecek şekilde sembolik bağınıza kaydeder.
¹ Aşağı yukarı.
Kullanmalısın:
ln -s "$(cd . && pwd)" ~/mylink
veya:
ln -s "$(pwd -P)" ~/mylink
geçerli çalışma dizini için doğru sonucu almak. Bu soruda olduğu gibi içinde çalışırken değiştirilebilir .
$PWD(o $(pwd -P)anki dizinin standart yolu) kullanmak yerine ( oraya ulaşmak için kullandığı yol) kullanmak istiyor . Eğer $PWDgeçerli dizine artık puan, o zaman hiç orada söylüyor $(pwd -P)ya sonraki dakikada irade.
"$PWD"Mevcut direcory taşındığında hala eski değere sahip olduğunu görebilirsiniz . PWDsadece siz cdveya kabuk tarafından başlatıldığında ayarlanır .
cdmarka garanti edilmez $ PWD veya pwd çıktısı mevcut dizine giden yolu gösterir. Gerçekleşmesi muhtemel olmayan bir şeye karşı korumaya çalışıyorsunuz, ancak ilk çözümde bu mutlaka etkili değil ve ikincisinde bu davranışı değiştiriyor.
mv yaptıktan sonra yaparsa ln, aynı durumda kalırsınız. Öte yandan, eğer öyleyse cd /long/logical/path/to/some/directory, bağlantının /vg0/lv1/user2/app4(kanonik yol) işaret etmesini istemezsiniz çünkü bağlantı /long/logical/path/to/some/directorybaşka bir yere işaret ettiğinde yanlış yere işaret eder.
"$PWD"POSIX kabuklarında ve~0içindezsh.