Dynamic Symlinks


10

ฉันสร้างแอปของฉันสำหรับสถาปัตยกรรมที่แตกต่างกันและต้องการสร้าง "ไดนามิก symlink" ซึ่งพาฉันไปยังรุ่นที่ถูกต้องตามตัวแปร

หากเครื่องที่ฉันเข้าสู่ระบบในขณะนี้คือ x86 ดังนั้น symlink ควรพาฉันไปที่งานสร้างนั้น

ตัวอย่างล้อเลียนของสิ่งที่ฉันต้องการจะทำ:

$ uname -i
x86_64

$ ls -ltr 
lrwxr-xr-x  1 dogbane gg     4 Feb 16 15:40 mylink -> @sys/
drwxrwxr-x  2 dogbane gg  2048 Feb 16 15:40 x86_64/
drwxrwxr-x  2 dogbane gg  2048 Feb 16 15:40 i386/

$ cd mylink

$ pwd -P
~/x86_64

เป็นไปได้ไหม

ฉันรู้ว่าฉันสามารถใช้ได้cd $(uname -i)แต่ต้องการบางสิ่งที่ง่ายกว่านี้


คุณคุ้นเคยกับ OpenAFS หรือไม่ เพราะมันใช้ @sys ด้วยวิธีนั้นแม้ใช้ '@sys' ถ้าเป็นเช่นนั้นคุณกำลังมองหาทางเลือกสำหรับ OpenAFS หรือไม่?
jsbillings

@jsbilling ฉันต้องการทราบว่าสิ่งนี้เป็นไปได้ในระบบไฟล์มาตรฐานโดยไม่มี AFS ฉันเคยทำงานกับ AFS มานานแล้วและสามารถทำสิ่งนี้ได้ด้วยเหตุนี้ฉันจึงถาม
dogbane

ฉันคิดได้มาก ฉันรู้ว่าไม่มีระบบไฟล์อื่นที่มี 'วิเศษ' symlink นอกเหนือจากการตั้งค่า vfs.generic.magiclinks ของ NetBSD ( daemon-systems.org/man/symlink.7.html )
jsbillings

มีสภาพแวดล้อมดังกล่าวสำหรับ Ruby และ Perl เพื่อให้คุณสามารถเลือกเวอร์ชันที่จะใช้เมื่อคุณทำการทดสอบ คุณอาจพบแรงบันดาลใจบางที่rvm.io/rubies
เจนนี่ D

คำตอบ:



2

ลิงก์สัญลักษณ์เป็นแบบสแตติกระบบไฟล์เพิ่งเก็บสตริงและการเข้าถึงลิงก์สัญลักษณ์จะถูกเปลี่ยนเส้นทางไปยังไฟล์ที่มีชื่อ (สัมพันธ์กับตำแหน่งของ symlink) คือสตริงนั้น

มันง่ายที่จะเขียนระบบไฟล์FUSE ที่เปิดเผย symlink แบบไดนามิกดังกล่าว แต่ฉันไม่รู้ว่ามีอยู่แล้ว


2

ฉันคิดว่านี่เป็นไบนารีดังนั้นฉันจะทำกับผู้ประเมินตัวแปร PATH กว่า symlink

PATH=$PATH:/base/$ARCH/bin.

หากคุณกำลังใช้เครื่องมือเช่น cfengine หรือหุ่นเชิด symlink ไปยังไดเรกทอรีที่เหมาะสมสามารถสร้างขึ้นตามสถาปัตยกรรมระบบ


1

หากคุณต้องการให้ไวยากรณ์พิมพ์ง่ายกว่า:

cd $(uname -i)

คุณสามารถวางไว้ในตัวแปรเช่น:

 s=`uname -i` 

ในสคริปต์การเข้าสู่ระบบของคุณดังนั้นคุณสามารถทำได้

 cd $s

เมื่อคุณต้องการซีดี


0

symlink เป็นไฟล์ที่มีธงพิเศษซึ่งมีเส้นทางบางส่วนและเส้นทางนี้ตีความเช่นนี้ดังนั้นคุณจึงไม่สามารถทำให้ symlink หนึ่งชี้ไปยังตำแหน่งอื่นในลักษณะนั้น แต่คุณยังอาจเขียนสคริปต์ที่จะเรียกใช้บิลด์ที่เป็นเจ้าของ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.