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
. ln
tam 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 $PWD
geç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 . PWD
sadece siz cd
veya kabuk tarafından başlatıldığında ayarlanır .
cd
marka 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/directory
başka bir yere işaret ettiğinde yanlış yere işaret eder.
"$PWD"
POSIX kabuklarında ve~0
içindezsh
.