Apa yang dilakukan jalur PATH ekspor di .bashrc?

9

Saya tidak begitu ke Linux dan saya ragu berikut mengikuti tutorial.

Saya harus memodifikasi bashrcfile. Pengaturan apa yang terkandung dalam file ini? Saya pikir ada sesuatu yang berhubungan dengan lingkungan bash shell tetapi saya tidak begitu yakin tentang hal itu.

Saya harus memasukkan baris ini:

export PATH=$HOME/.local/bin:$HOME/.local/usr/bin:$PATH

Apa tepatnya baris ini?

Saya pikir exportpernyataan itu digunakan untuk membuat variabel baru sehingga tersedia untuk program lain.

Tapi apa tepatnya garis ini? Apakah PATHnama variabel yang saya definisikan? Apa $HOME?

Apa artinya :simbol antara PATH=$HOME/.local/bindan $HOME/.local/usr/bindan $PATHbagian dalam ekspresi sebelumnya?

Apa sebenarnya arti ungkapan ini?

AndreaNobili
sumber
The: antara item adalah pemisah untuk setiap segmen. Tanpanya, jalur Anda akan terus berjalan dan tidak akan berfungsi.
Terrance
Di Ubuntu PATHmodifikasi semacam ini sudah dilakukan di dalam ~/.profilefile, jadi agak tidak konsisten untuk melakukan hal serupa di Linux ~/.bashrc. IMO yang lebih baik untuk memodifikasi kode yang sudah ada ~/.profilejika diperlukan. Saat ini ~/.profilefile default termasuk baris ini:PATH="$HOME/bin:$HOME/.local/bin:$PATH"
Gunnar Hjalmarsson
@ GunnarHjalmarsson: Ada beberapa situasi yang membuat .profile dan .bashrc berbeda. File .profile diuraikan oleh shell login dan bukan oleh subshell. Tetapi karena Anda harus tetap masuk untuk memulai subkulit, ini OK karena subkulit akan mewarisi $ PATH. File .bashrc tidak akan diuraikan oleh shell login tetapi akan diurai oleh subkulit. Perbedaannya muncul ketika Anda memiliki beberapa hal yang bukan anak-anak dari shell login (mungkin beberapa skrip otomatisasi mewah yang memanggil skrip lain seperti git commit hook) - apa pun di .profile tidak akan dibaca sehingga mereka akan diabaikan
slebetman
@slebetman: Benar, dan dalam hal desktop ada perbedaan lain yang tidak Anda sebutkan: Tidak seperti ini ~/.bashrc, ~/.profilebersumber dari manajer tampilan, jadi hanya variabel yang ditetapkan ~/.profileyang tersedia saat Anda memulai program dari lingkungan grafis. Dan itu terjadi lebih awal sehingga harus ok untuk proses autostarted untuk sesi ini.
Gunnar Hjalmarsson

Jawaban:

16

Untuk merangkum semua yang disebutkan dalam pertanyaan ini,

The exportbagian

The exportgaris berarti bahwa variabel yang Anda menyatakan setelah itu akan dapat diakses oleh proses anak. Dengan kata lain, proses akan dapat mengakses variabel yang dideklarasikan setelah exportkata kunci melalui lingkungan shell. Jadi, jika Anda melakukan sesuatu seperti export FOO="BAR"dan kemudian bersumber dari perubahan di lingkungan shell Anda, Anda bisa mengetik $FOOdan mendapatkan BAR.

The PATHbagian

Garis path sama seperti yang Anda nyatakan: itu mendeklarasikan variabel yang dinamai PATHuntuk lingkungan shell. Di lingkungan bash, PATHmemiliki tujuan khusus untuk menentukan di mana komputer mencari program. Ini memungkinkan Anda mengetik perintah khusus untuk skrip tanpa mengetik direktori lengkap. Perhatikan bahwa PATH ditandai untuk diekspor secara default, jadi baris ini tidak harus ditulis ulang. Tapi tidak sakit.

Di $HOMEdalam PATHvariabel

Di awal jalan yang ditugaskan ke PATHvariabel, $HOMEdinyatakan. Ini berarti bahwa komputer akan cukup banyak mengambil nilai yang tersimpan HOMEdan menyalinnya di depan sisa baris ketika membacanya.

Di :antara kedua jalur

Ini :sama dengan koma dalam kalimat. Itu hanya memisahkan tiga direktori. Tanpa ketiga direktori tersebut, konsol tidak akan mengenali perintah yang diterimanya. Ketiga tempat tersebut adalah tiga direktori yang paling umum digunakan untuk skrip / file perintah untuk disimpan dan oleh karena itu harus dapat diakses oleh terminal tanpa harus menuliskan path lengkap ke file.

TheOdd
sumber
Jawaban bagus! "Baris ekspor berarti bahwa variabel yang Anda deklarasikan setelah itu akan dapat diakses oleh proses anak" adalah orangtua untuk anak ini memproses terminal dari mana saya akan menjalankan perintah?
vadasambar
5

The PATHvariabel memungkinkan pesta tahu di mana untuk mencari program dieksekusi, jadi jika Anda memiliki naskah atau beberapa file executable lainnya di $HOME/.local/bin, memodifikasi PATHakan membiarkan Anda mengetik dan menjalankan file seperti yang Anda lakukan dengan lsatau df.

exporthanya berarti membuat PATHvariabel itu juga tersedia untuk program lain yang Anda jalankan dari bash.

Adapun : , itu hanya pemisah untuk setiap direktori. Itu sama dengan koma dalam daftar kata, tidak lebih.

Sergiy Kolodyazhnyy
sumber