Untuk yang tidak berfungsi, jika kita melihat ls -l
hasilnya, kita mendapatkan yang berikut:
[sparticvs@sparta test]$ ls -l build/
total 0
lrwxrwxrwx. 1 sparticvs sparticvs 6 Dec 17 16:08 client -> client
Sekarang untuk mengerti apa yang sedang terjadi di sini. Mari kita lihat perintah yang Anda panggil:
ln -s client build/client
Menurut Man Page, ada dua kemungkinan kecocokan untuk format ini
SYNOPSIS
ln [OPTION]... [-T] TARGET LINK_NAME (1st form)
ln [OPTION]... TARGET... DIRECTORY (3rd form)
Ini akan cocok pada formulir pertama (sejak yang pertama). Sekarang, "nama target" atau client
dalam kasus Anda, dapat (menurut ln
manual lengkap ) string acak. Mereka tidak harus memutuskan untuk apa pun sekarang, tetapi dapat menyelesaikan sesuatu di masa depan. Apa yang Anda buat dengan permintaan Anda adalah "tautan terjuntai" dan sistem tidak membuat Anda tidak membuatnya.
Sekarang doa kedua Anda ln -s ../client build/client
adalah apa yang disebut "symlink relatif" (seperti yang Anda catat dalam posting Anda sendiri). Ada tipe kedua dan itu adalah "symlink absolut" yang akan dipanggil dengan melakukan ln -s /home/user/client build/client
.
Ini bukan bug. Menurut manual itu menyatakan:
Saat membuat symlink relatif di lokasi yang berbeda dari direktori saat ini, resolusi symlink akan berbeda dari resolusi string yang sama dari direktori saat ini. Oleh karena itu, banyak pengguna lebih suka untuk terlebih dahulu mengubah direktori ke lokasi di mana symlink relatif akan dibuat, sehingga penyelesaian-tab atau resolusi file lainnya akan menemukan target yang sama dengan apa yang akan ditempatkan di symlink.
- dari info coreutils 'ln invocation'
Karena itu, Anda HARUS menggunakan jalur relatif atau absolut ke target.