ฉันมียูทิลิตี้ที่ประกอบด้วยไดเรกทอรีคู่ที่มีสคริปต์ทุบตีและไฟล์สนับสนุนที่จะนำไปใช้กับเครื่องหลายเครื่องในไดเรกทอรีที่แตกต่างกันในแต่ละเครื่อง สคริปต์ต้องสามารถอ้างอิงพา ธ ที่สัมพันธ์กับตัวเองดังนั้นฉันจึงต้องสามารถรับพา ธ ไปยังไฟล์ที่ถูกเรียกใช้งานในปัจจุบัน
ฉันรู้dirname $0
สำนวนที่ใช้งานได้อย่างสมบูรณ์แบบเมื่อสคริปต์ของฉันถูกเรียกใช้โดยตรง น่าเสียดายที่มีความปรารถนาที่จะสามารถสร้างการเชื่อมโยงไปยังสคริปต์เหล่านี้จากไดเรกทอรีที่แตกต่างกันโดยสิ้นเชิงและยังคงมีการทำงานแบบลอจิกการทำเส้นทางแบบสัมพัทธ์
ตัวอย่างของโครงสร้าง driectory โดยรวมมีดังนี้:
/
|-usr/local/lib
| |-foo
| | |-bin
| | | |-script.sh
| | |-res
| | | |-resource_file.txt
|-home/mike/bin
| |-link_to_script (symlink to /usr/local/lib/foo/bin/script.sh)
ฉันจะอ้างอิงอย่างน่าเชื่อถือได้/usr/local/lib/foo/res/resource_file.txt
จากscript.sh
ว่ามันถูกเรียกโดย/usr/local/lib/foo/bin/script.sh
หรือ~mike/bin/link_to_script
?