PATH แตกต่างกันและ LD_LIBRARY_PATH แตกต่างกันอย่างไร


27

ฉันมีปัญหาบางอย่างในการทำความเข้าใจความแตกต่างระหว่างและPATH LD_LIBRARY_PATHฉันมีการตั้งค่าการติดตั้งที่ต้องการ pkg.tcl ไฟล์และผมไม่ได้ที่จะเพิ่มเส้นทางไปมันก็ควรจะไปPATHหรือLD_LIBRARY_PATH?


TCLLIBPATHเกี่ยวกับปัญหาการติดตั้งของคุณส่วนตัวผมจะเดิมพัน ขออภัยฉันไม่มีข้อโต้แย้ง เพียงคำใบ้
จัดการ

คำตอบ:


30

ระบบ 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วางไว้ที่ไหนสักแห่งใน


23

PATHใช้สำหรับระบุไดเรกทอรีของโปรแกรมปฏิบัติการ LD_LIBRARY_PATHถูกใช้เพื่อระบุไดเรกทอรีของไลบรารี


5
จากมุมมองอื่น ๆPATHถูกใช้เป็นหลักโดยเชลล์ขณะที่LD_LIBRARY_PATHถูกใช้โดยตัวโหลดแบบไดนามิก (ปกติld-linux.so)
จัดการ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.