ฉันมีปัญหาบางอย่างในการทำความเข้าใจความแตกต่างระหว่างและPATH
LD_LIBRARY_PATH
ฉันมีการตั้งค่าการติดตั้งที่ต้องการ pkg.tcl ไฟล์และผมไม่ได้ที่จะเพิ่มเส้นทางไปมันก็ควรจะไปPATH
หรือLD_LIBRARY_PATH
?
ฉันมีปัญหาบางอย่างในการทำความเข้าใจความแตกต่างระหว่างและPATH
LD_LIBRARY_PATH
ฉันมีการตั้งค่าการติดตั้งที่ต้องการ pkg.tcl ไฟล์และผมไม่ได้ที่จะเพิ่มเส้นทางไปมันก็ควรจะไปPATH
หรือLD_LIBRARY_PATH
?
คำตอบ:
ระบบ Unix มีแนวโน้มที่จะถูกจัดระเบียบด้วยไฟล์ประเภทต่าง ๆ กระจายไปทั่วไดเรกทอรีที่ต่างกัน ยกตัวอย่างเช่น executables มักจะอยู่ในไดเรกทอรีที่เรียกว่าbin
( /bin
, /usr/bin
, /usr/local/bin
, ... ); ในอดีตbin
มีฐานเป็นไบนารี่เพราะไฟล์ประมวลผลเป็นไบนารี (รหัสเครื่อง) แต่สามารถมีสคริปต์ได้เช่นกัน เนื่องจากมีหลายไดเร็กทอรีที่มีไฟล์เรียกทำงานและมีประโยชน์ในการเพิ่มและลบไดเร็กทอรีที่ต้องการ (เช่นเพื่อทดสอบแอ็พพลิเคชันที่มีหลายไฟล์ที่รันได้คุณจึงเพิ่มไฟล์ชั่วคราวลงในพา ธ การค้นหาสำหรับไฟล์ปฏิบัติการ) จึงมีตัวแปรสภาพแวดล้อมสำหรับ: PATH
. เมื่อคุณรันโปรแกรมโดยให้ชื่อเชลล์ค้นหาในไดเรกทอรีที่ระบุไว้ในPATH
ตัวแปร (มันเป็นรายการไดเรกทอรีที่คั่นด้วยโคลอน)
มีกลไกแบบเดียวกันสำหรับไฟล์ประเภทอื่น ๆ ที่บางโปรแกรมกำลังค้นหาตามชื่อ นี่คือPATH
ตัวแปรที่เหมือนทั่วไปบางประการ(โปรดทราบว่าเส้นทางตัวอย่างที่ฉันให้ไม่ตรงกับสิ่งที่คุณจะพบในระบบของคุณ
PATH
: executables (เช่น/home/username/bin:/usr/local/bin:/usr/bin:/bin
)MANPATH
: หน้าคู่มือ (เช่น/usr/local/man:/usr/man
)LD_LIBRARY_PATH
: ห้องสมุดรหัสพื้นเมือง (บน Linux นอกเหนือไปจากค่าของตัวแปรนี้เส้นทางการค้นหามักจะมี/usr/local/lib
, /usr/lib
, /lib
และคนอื่น ๆ ไม่กี่) ชื่อLD
มาจากแบบไดนามิกลิตร oa งเอ้อส่วนประกอบระบบที่ห้องสมุดโหลดลงในexecutables เชื่อมโยงแบบไดนามิกPERL5LIB
: ห้องสมุด Perl (เช่น/usr/local/lib/site-perl:/usr/lib/site-perl:/usr/lib/perl:/usr/share/perl
)PYTHONPATH
: Python libraries (เช่น/usr/local/lib/python:/usr/lib/python:/usr/lib/python2.6
)TCLLIBPATH
: ห้องสมุด TCL (เช่น/usr/local/lib/tcltk:/usr/lib/tcltk
)ดังนั้นหากคุณเป็นปฏิบัติการแบบสแตนด์อโลนให้สิทธิ์ดำเนินการและวางไว้ที่ไหนสักแห่งในpkg.tcl
$PATH
ถ้าเป็นห้องสมุด TCL โหลดโดยโปรแกรม TCL, $TCLLIBPATH
วางไว้ที่ไหนสักแห่งใน
PATH
ใช้สำหรับระบุไดเรกทอรีของโปรแกรมปฏิบัติการ LD_LIBRARY_PATH
ถูกใช้เพื่อระบุไดเรกทอรีของไลบรารี
PATH
ถูกใช้เป็นหลักโดยเชลล์ขณะที่LD_LIBRARY_PATH
ถูกใช้โดยตัวโหลดแบบไดนามิก (ปกติld-linux.so
)
TCLLIBPATH
เกี่ยวกับปัญหาการติดตั้งของคุณส่วนตัวผมจะเดิมพัน ขออภัยฉันไม่มีข้อโต้แย้ง เพียงคำใบ้