ฉันมีปัญหาบางอย่างในการทำความเข้าใจความแตกต่างระหว่างและ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เกี่ยวกับปัญหาการติดตั้งของคุณส่วนตัวผมจะเดิมพัน ขออภัยฉันไม่มีข้อโต้แย้ง เพียงคำใบ้