Bagaimana PATH Berfungsi di Bash

How Does Path Work Bash



Semasa anda mengetik perintah di terminal Linux, biasanya anda memanggil program untuk melakukan pekerjaan tertentu, misalnya, ls , CD , rm , mkdir , dll. Semua program ini terletak di suatu tempat dalam sistem fail, bukan? Bagaimana bash tahu di mana program-program ini?

Di sinilah pemboleh ubah persekitaran dimainkan, terutamanya pemboleh ubah PATH. Pemboleh ubah ini bertanggungjawab untuk memberitahu bash di mana untuk mencari program tersebut. Mari kita periksa bagaimana PATH berfungsi dan bagaimana melihat / mengubah PATH.







Pemboleh ubah persekitaran dan $ PATH

Dalam terminologi shell, persekitaran adalah kawasan yang dibangun shell setiap kali memulakan sesi. Untuk mengurus persekitaran, ada pemboleh ubah persekitaran yang menunjukkan bahagian persekitaran yang berbeza. Nilai pemboleh ubah boleh berupa string, lokasi direktori, nilai atau lain-lain.



PATH adalah pemboleh ubah persekitaran yang memantau direktori tertentu. Secara lalai, pemboleh ubah PATH mengandungi lokasi berikut.



  • / usr / tong sampah
  • / usr / sbin
  • / usr / tempatan / tong sampah
  • / usr / tempatan / sbin
  • / pagi
  • / sbin
  • / snap / bin (jika Snap dipasang)

Ingin melihat direktori apa yang kini didaftarkan di bawah PATH? Nyalakan terminal dan jalankan arahan berikut.





$membuang $ PATH

Di sini, tanda $ adalah untuk menunjukkan pemboleh ubah. The membuang arahan mencetak nilai pemboleh ubah PATH.



Sekarang, mengapa pemboleh ubah persekitaran khusus ini sangat penting? Ini kerana bagaimana shell dan sistem secara keseluruhan memperlakukannya. Pemboleh ubah PATH menyimpan tempat yang boleh dilaksanakan. Setiap kali arahan dijalankan, shell mencari direktori PATH untuk fail yang boleh dilaksanakan dan menjalankannya.

Sebagai contoh, mari kita uji dengan membuang arahan. Di sini, saya menjalankan perintah gema.

$membuangHai dunia!

Di mana fail yang boleh dilaksanakan membuang ? Jalankan arahan seterusnya untuk mengetahui.

$yang mana membuang

Seperti yang dapat kita lihat, membuang boleh dilaksanakan terletak di / usr / bin / echo. Di mana letaknya? Mari kita cari.

$yang mana yang mana

Ia juga terletak di / usr / bin / yang. Sebilangan besar alat arahan terletak di bawah direktori / usr / bin. Di sini, bash sedang menghubungi PATH untuk mencari lokasi untuk melaksanakan perintah yang dapat dilaksanakan.

Mengubah PATH

Sebelum kita mengubah nilai PATH, penting untuk memahami strukturnya. Jalankan arahan sekali lagi untuk memeriksa nilai PATH.

$membuang $ PATH

Perhatikan bahawa setiap direktori dipisahkan dengan tanda:

Menambah direktori ke PATH

Untuk menambahkan direktori khusus ke PATH, kami akan mengambil bantuan fail bashrc. Ini adalah skrip bash khas yang memuatkan bash setiap kali sesi bash baru dimulakan. Perhatikan bahawa fail bashrc adalah unik untuk setiap pengguna dalam sistem Linux.

Buka fail bashrc dalam penyunting teks. Sekiranya fail bashrc belum ada, maka editor akan membuatnya secara automatik.

$saya datang~/.bashrc

Di sini, ini adalah bashrc lalai yang disertakan dengan Ubuntu. Pergi ke fail terakhir (jika ada) dan tambahkan baris berikut.

$eksport PATH='$ PATH: / '

Di sini, nilai baru pemboleh ubah PATH akan menjadi pemboleh ubah lama bersama dengan direktori baru yang baru saja kita tambahkan.

Simpan fail dan suruh bash untuk memuatkannya semula.

$sumber~/.bashrc

Mari kita sahkan sama ada jalan baru berjaya ditambahkan.

$membuang $ PATH

Voila! PATH berjaya dikemas kini! Sekarang, bash juga akan mencari jalan baru untuk dieksekusi. Saya sudah mempunyai skrip demo.sh di desktop. Mari kita lihat apakah bash dapat memanggilnya tanpa menentukan lokasi yang tepat.

$demo.sh

Yup, bash boleh langsung memanggilnya tanpa masalah.

Mengalih keluar direktori dari PATH

Tidak ada cara mudah untuk menambah / membuang direktori dari PATH. Biar saya jelaskan.

Nilai PATH sebenarnya tetap. Lalu, bagaimana dengan muslihat bashrc? Bashrc adalah skrip bash yang memuat bash setiap kali memulakan sesi. Dalam bashrc, kami baru saja menyatakan bahawa nilai baru PATH akan menjadi nilai lalai dan direktori yang ditentukan pengguna. Sekarang, setiap kali bash memuat, bashrc memberitahu untuk menetapkan nilai PATH baru dan itulah yang dilakukannya.

Begitu juga, jika kita ingin menghapus direktori dari PATH, kita harus menetapkan kembali nilai PATH yang berbeda di bashrc sehingga setiap kali bash bermula, ia menggunakan nilai yang diubah.

Mari kita lihat contoh ini. Saya bersedia membuang direktori ~ / Desktop dari PATH.

$membuang $ PATH | sed -Dan 's /: ~ / Desktop $ //'

Sekiranya direktori itu / home / salah / dir, perintah akan kelihatan seperti ini.

$membuang $ PATH | sed -Dan 's /: / rumah / salah / dir $ //'

Di sini, bahagian yang menarik adalah alat sed. Ketahui lebih lanjut mengenai sed di sini dan di sini . Singkat cerita, dengan menggunakan sed, kami mengubah suai output membuang arahan. Sekarang, kita dapat menggunakan output yang diubah ini untuk mengubah nilai PATH.

Buka bashrc dalam penyunting teks dan tambahkan baris berikut. Saya sengaja mengekalkan garis sebelumnya untuk membuktikan bahawa ia berfungsi.

$eksport PATH='$ (gema $ PATH | sed -e 's /: ~ / Desktop $ //')'

Sebagai alternatif, anda juga boleh menetapkan nilai PATH secara manual. Ini adalah proses kerja tetapi lebih mudah dan mudah.

$eksport PATH=/usr/tempatan/sbin:/usr/tempatan/saya:/usr/sbin:/usr/saya:/sbin:/saya:
/usr/permainan:/usr/tempatan/permainan:/sekejap/saya

Di sini, nilai arahan akan diberikan kepada PATH. Simpan fail dan muatkan semula bashrc.

$sumber~/.bashrc

Mari kita sahkan hasilnya.

$membuang $ PATH

Nilai PATH dikemas kini!

Pemikiran terakhir

Dalam bash, pemboleh ubah PATH adalah yang penting. Mana-mana program yang berjalan melalui sesi bash mewarisi pemboleh ubah, jadi penting PATH menyertakan direktori yang diperlukan sahaja. Menambah lebih banyak direktori hanya akan menambah kelebihan sistem.

Untuk melihat semua pemboleh ubah persekitaran untuk bash, jalankan perintah ini. Bahagian arahan pertama akan mengembalikan semua pemboleh ubah persekitaran dan bahagian kedua akan menyusun output dalam urutan menaik.

$env | mengurut

Ingin menambahkan pengalaman bash anda? Bash alias menawarkan cara unik untuk mempercepat dan mempercepat sesuatu. Ketahui lebih lanjut mengenai alias bash .

Selamat mencuba!