Çalışmayan için, ls -l
sonuca bakarsak, aşağıdakileri elde ederiz:
[sparticvs@sparta test]$ ls -l build/
total 0
lrwxrwxrwx. 1 sparticvs sparticvs 6 Dec 17 16:08 client -> client
Şimdi burada neler olduğunu anlamak için. Aradığın komuta bakalım:
ln -s client build/client
Man Sayfasına göre, bu format için iki olası eşleşme var
SYNOPSIS
ln [OPTION]... [-T] TARGET LINK_NAME (1st form)
ln [OPTION]... TARGET... DIRECTORY (3rd form)
İlk formda eşleşecektir (ilkinden beri). Şimdi, "hedef adı" veya client
sizin durumunuzda, (tüm ln
kılavuza göre) rastgele dizeler olabilir. Şu anda hiçbir şeye çözüm bulmak zorunda değiller, ancak gelecekte bir şeye çözüm bulabilirler. Çağrınızla yarattığınız şey "sarkan bir sembolik bağlantıdır" ve sistem bunları oluşturmanızı engellemez.
Şimdi ikinci çağrınız ln -s ../client build/client
"göreceli symlink" (kendi mesajınızda belirttiğiniz gibi). İkinci bir tür var ve bu "çağrılan" mutlak bir sembolik bağlantıdır ln -s /home/user/client build/client
.
Bu bir hata değil . El kitabına göre şunları belirtiyor:
Geçerli dizinden farklı bir konumda göreli bir sembolik bağlantı oluştururken, sembolik bağlantının çözünürlüğü, aynı dizenin geçerli dizinden çözünürlüğünden farklı olacaktır. Bu nedenle, birçok kullanıcı önce dizinleri göreli symlink'in oluşturulacağı konuma değiştirmeyi tercih eder, böylece sekme tamamlama veya başka bir dosya çözünürlüğü, sembolik bağlantıya yerleştirilecek hedefle aynı hedefi bulur.
- itibaren info coreutils 'ln invocation'
Bununla birlikte, hedefe göreli veya mutlak yolu kullanmanız GEREKİR .