สำหรับคนที่ไม่ได้ผลถ้าเราดูls -l
ผลลัพธ์เราจะได้สิ่งต่อไปนี้:
[sparticvs@sparta test]$ ls -l build/
total 0
lrwxrwxrwx. 1 sparticvs sparticvs 6 Dec 17 16:08 client -> client
ตอนนี้ให้เข้าใจสิ่งที่เกิดขึ้นที่นี่ ลองดูคำสั่งที่คุณเรียกว่า:
ln -s client build/client
ตามหน้า Man มีสองที่เป็นไปได้สำหรับรูปแบบนี้
SYNOPSIS
ln [OPTION]... [-T] TARGET LINK_NAME (1st form)
ln [OPTION]... TARGET... DIRECTORY (3rd form)
มันจะจับคู่กับแบบฟอร์มแรก (ตั้งแต่แรก) ตอนนี้ "ชื่อเป้าหมาย" หรือclient
ในกรณีของคุณสามารถ (ตามln
คู่มือที่สมบูรณ์) สตริงโดยพลการ พวกเขาไม่ต้องแก้ไขอะไรเลยในตอนนี้ แต่สามารถแก้ไขบางสิ่งได้ในอนาคต สิ่งที่คุณกำลังสร้างด้วยการภาวนาของคุณคือ "ห้อย symlink" และระบบไม่ให้คุณสร้างสิ่งเหล่านี้
ตอนนี้การร้องขอครั้งที่สองของคุณln -s ../client build/client
คือสิ่งที่เรียกว่า "symlink แบบสัมพัทธ์" (ดังที่คุณได้บันทึกไว้ในโพสต์ของคุณเอง) มีประเภทที่สองและที่เป็น "symlink แน่นอน" ln -s /home/user/client build/client
ซึ่งจะเรียกว่าด้วยการทำ
นี่ไม่ใช่ข้อผิดพลาด ตามคู่มือระบุว่า:
เมื่อสร้าง symlink แบบสัมพัทธ์ในตำแหน่งอื่นที่ไม่ใช่ไดเรกทอรีปัจจุบันความละเอียดของ symlink จะแตกต่างจากความละเอียดของสตริงเดียวกันจากไดเรกทอรีปัจจุบัน ดังนั้นผู้ใช้หลายคนต้องการเปลี่ยนไดเรกทอรีไปยังตำแหน่งที่จะสร้าง symlink แบบสัมพัทธ์เพื่อให้แท็บเสร็จสมบูรณ์หรือการแก้ไขไฟล์อื่น ๆ จะพบเป้าหมายเดียวกันกับสิ่งที่จะวางใน symlink
- จาก info coreutils 'ln invocation'
ที่กล่าวว่าคุณต้องใช้เส้นทางสัมพัทธ์หรือเส้นทางสัมบูรณ์ไปยังเป้าหมาย