Sự khác biệt giữa PATH và LD_LIBRARY_PATH là gì?


27

Tôi đang gặp một số khó khăn để hiểu sự khác biệt giữa PATHLD_LIBRARY_PATH. Tôi có một thiết lập cài đặt cần một tệp pkg.tcl và tôi không phải là nơi để thêm đường dẫn đến nó: nó nên là PATHhay LD_LIBRARY_PATH?


Về vấn đề cài đặt của bạn, cá nhân tôi sẽ đặt cược vào TCLLIBPATH. Xin lỗi, tôi không có tranh luận. Chỉ là một gợi ý.
manatwork

Câu trả lời:


30

Các hệ thống Unix có xu hướng được tổ chức với các loại tệp khác nhau trải đều trên các thư mục khác nhau. Ví dụ, thực thi thường trong thư mục gọi là bin( /bin, /usr/bin, /usr/local/bin, ...); trong lịch sử, binlà viết tắt của nhị phân, vì các tệp thực thi là nhị phân (mã máy), nhưng cũng có thể có các tập lệnh. Vì có một số thư mục chứa các tệp thực thi và rất hữu ích để thêm và xóa các thư mục một cách nhanh chóng (ví dụ: để kiểm tra một ứng dụng đa thực thi, bạn tạm thời thêm nó vào đường dẫn tìm kiếm để thực thi), có một biến môi trường cho điều đó: PATH. Khi bạn thực hiện một chương trình bằng cách đặt tên của nó, shell sẽ tìm kiếm nó trong các thư mục được đề cập trong PATHbiến (đó là danh sách các thư mục được phân tách bằng dấu hai chấm).

Cơ chế tương tự tồn tại cho các loại tệp khác mà một số chương trình sẽ tìm kiếm theo tên. Dưới đây là một vài PATHbiến giống như điển hình (lưu ý rằng các đường dẫn ví dụ mà tôi đưa ra không chính xác những gì bạn sẽ tìm thấy trên hệ thống của mình, chỉ có ở đó để đưa ra ý tưởng).

  • PATH: thực thi (ví dụ /home/username/bin:/usr/local/bin:/usr/bin:/bin).
  • MANPATH: trang hướng dẫn (ví dụ /usr/local/man:/usr/man).
  • LD_LIBRARY_PATH: Thư viện mã nguồn gốc (trên Linux, ngoài các giá trị của biến này, con đường tìm kiếm thường chứa /usr/local/lib, /usr/lib, /libvà một vài người khác). Tên LDđến từ động l oa d er , thành phần hệ thống tải các thư viện vào các tệp thực thi được liên kết động .
  • PERL5LIB: Thư viện Perl (ví dụ /usr/local/lib/site-perl:/usr/lib/site-perl:/usr/lib/perl:/usr/share/perl).
  • PYTHONPATH: Thư viện Python (ví dụ /usr/local/lib/python:/usr/lib/python:/usr/lib/python2.6).
  • TCLLIBPATH: Thư viện TCL (ví dụ /usr/local/lib/tcltk:/usr/lib/tcltk).

Vì vậy, nếu bạn pkg.tcllà một thực thi độc lập, hãy cấp cho nó quyền thực thi và thả nó vào một nơi nào đó $PATH. Nếu đó là thư viện TCL được tải bởi chương trình TCL, hãy thả nó vào một nơi nào đó $TCLLIBPATH.


23

PATHlà để chỉ định thư mục của các chương trình thực thi. LD_LIBRARY_PATHđược sử dụng để chỉ định các thư mục của thư viện.


5
Từ quan điểm khác, PATHđược sử dụng chủ yếu bởi shell, trong khi LD_LIBRARY_PATHđược sử dụng bởi bộ tải động (thường ld-linux.so).
manatwork
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.