Apa perbedaan antara PATH dan LD_LIBRARY_PATH?

27

Saya mengalami beberapa kesulitan memahami perbedaan antara PATHdan LD_LIBRARY_PATH. Saya memiliki pengaturan instalasi yang memerlukan file pkg.tcl dan saya tidak bisa menambahkan path ke sana: haruskah ke PATHatau LD_LIBRARY_PATH?

cindy
sumber
Mengenai masalah instalasi Anda, secara pribadi saya akan bertaruh TCLLIBPATH. Maaf, saya tidak punya argumen. Hanya sebuah petunjuk.
manatwork

Jawaban:

30

Sistem Unix cenderung diatur dengan berbagai jenis file yang tersebar di berbagai direktori. Misalnya, executables biasanya di direktori yang disebut bin( /bin, /usr/bin, /usr/local/bin, ...); secara historis, binsingkatan dari binary, karena executable adalah binari (kode mesin), tetapi bisa juga ada skrip. Karena ada beberapa direktori yang berisi file executable, dan berguna untuk menambah dan menghapus direktori dengan cepat (misalnya untuk menguji aplikasi multi-executable, Anda menambahkan sementara ke jalur pencarian untuk file executable), ada variabel lingkungan untuk itu: PATH. Ketika Anda menjalankan sebuah program dengan memberikan namanya, shell mencarinya di direktori yang disebutkan dalam PATHvariabel (itu adalah daftar direktori yang dipisahkan oleh titik dua).

Mekanisme yang sama ada untuk jenis file lain yang beberapa program akan mencari berdasarkan nama. Berikut adalah beberapa PATHvariabel mirip- khas (perhatikan bahwa jalur contoh yang saya berikan tidak persis apa yang akan Anda temukan di sistem Anda, hanya ada di sana untuk memberikan gagasan).

  • PATH: executable (misal /home/username/bin:/usr/local/bin:/usr/bin:/bin).
  • MANPATH: halaman manual (mis /usr/local/man:/usr/man.).
  • LD_LIBRARY_PATH: Kode perpustakaan asli (di Linux, selain nilai variabel ini, jalan lookup biasanya berisi /usr/local/lib, /usr/lib, /libdan beberapa orang lainnya). Nama LDberasal dari dinamis l oa d er , komponen sistem yang beban perpustakaan ke executable terkait secara dinamis .
  • PERL5LIB: Perpustakaan Perl (misalnya /usr/local/lib/site-perl:/usr/lib/site-perl:/usr/lib/perl:/usr/share/perl).
  • PYTHONPATH: Python libraries (eg /usr/local/lib/python:/usr/lib/python:/usr/lib/python2.6).
  • TCLLIBPATH: Perpustakaan TCL (mis /usr/local/lib/tcltk:/usr/lib/tcltk.).

Jadi jika Anda pkg.tcladalah executable mandiri, berikan izin eksekusi dan letakkan di suatu tempat di $PATH. Jika itu adalah perpustakaan TCL yang dimuat oleh program TCL, letakkan di suatu tempat di $TCLLIBPATH.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
23

PATHadalah untuk menentukan direktori program yang dapat dieksekusi. LD_LIBRARY_PATHdigunakan untuk menentukan direktori perpustakaan.

Manula Waidyanatha
sumber
5
Dari sudut pandang lain, PATHdigunakan terutama oleh shell, sedangkan LD_LIBRARY_PATHdigunakan oleh loader dinamis (biasanya ld-linux.so).
manatwork