Bagaimana PATH Bekerja di Bash

How Does Path Work Bash



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

Di sinilah variabel lingkungan berperan, terutama variabel PATH. Variabel ini bertanggung jawab untuk memberi tahu bash di mana mencari program-program itu. Mari kita lihat cara kerja PATH dan cara melihat/memodifikasi PATH.







Variabel lingkungan dan $PATH

Dalam terminologi shell, lingkungan adalah area yang dibangun shell setiap kali memulai sesi. Untuk mengelola lingkungan, ada variabel lingkungan yang menunjukkan berbagai bagian lingkungan. Nilai dari variabel dapat berupa string, lokasi direktori, nilai atau lainnya.



PATH adalah variabel lingkungan yang melacak direktori tertentu. Secara default, variabel PATH berisi lokasi berikut.



  • /usr/bin
  • /usr/sbin
  • /usr/local/bin
  • /usr/local/sbin
  • /NS
  • /sbin
  • /snap/bin (jika Snap diinstal)

Ingin melihat direktori apa yang saat ini terdaftar di PATH? Jalankan terminal dan jalankan perintah berikut.





$dibuang $PATH

Di sini, tanda $ adalah untuk menunjukkan variabel. NS dibuang perintah mencetak nilai variabel PATH.



Sekarang, mengapa variabel lingkungan khusus ini sangat penting? Itu karena bagaimana shell dan sistem secara keseluruhan memperlakukannya. Variabel PATH menyimpan di mana executable dapat ditemukan. Setiap kali perintah dijalankan, shell mencari direktori PATH untuk file yang dapat dieksekusi target dan menjalankannya.

Misalnya, mari kita uji dengan dibuang memerintah. Di sini, saya menjalankan perintah echo.

$dibuangHalo Dunia!

Di mana file yang dapat dieksekusi dari dibuang ? Jalankan perintah selanjutnya untuk mencari tahu.

$yang dibuang

Seperti yang bisa kita lihat, dibuang executable terletak di /usr/bin/echo. Di mana lokasinya? Mari kita cari tahu.

$yang yang

Itu juga terletak di /usr/bin/which. Sebagian besar alat perintah terletak di bawah direktori /usr/bin. Di sini, bash berkonsultasi dengan PATH untuk lokasi untuk mencari executable(s) dari sebuah perintah.

Memodifikasi PATH

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

$dibuang $PATH

Perhatikan bahwa setiap direktori dipisahkan oleh tanda :.

Menambahkan direktori ke PATH

Untuk menambahkan direktori khusus ke PATH, kami akan menggunakan bantuan file bashrc. Ini adalah skrip bash khusus yang memuat bash setiap kali sesi bash baru dimulai. Perhatikan bahwa file bashrc unik untuk setiap pengguna di sistem Linux.

Buka file bashrc di editor teks. Jika file bashrc belum ada, maka editor akan membuatnya secara otomatis.

$saya datang~/.bashrc

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

$ekspor JALUR='$PATH: / '

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

Simpan file dan beri tahu bash untuk memuatnya kembali.

$sumber~/.bashrc

Mari kita verifikasi apakah jalur baru berhasil ditambahkan.

$dibuang $PATH

Voila! PATH berhasil diperbarui! Sekarang, bash juga akan mencari jalur baru untuk executable(s). Saya sudah punya naskah demo.sh di desktop. Mari kita lihat apakah bash dapat memanggilnya tanpa menentukan lokasi yang tepat.

$demo.sh

Yup, bash bisa langsung memanggilnya tanpa masalah.

Menghapus direktori dari PATH

Tidak ada cara langsung untuk menambah/menghapus direktori dari PATH. Mari saya jelaskan.

Nilai PATH sebenarnya tetap. Lalu, bagaimana dengan trik bashrc? Bashrc adalah skrip bash yang memuat bash setiap kali memulai sesi. Di bashrc, kami baru saja menyatakan bahwa nilai baru PATH akan menjadi nilai default dan direktori yang ditentukan pengguna. Sekarang, setiap kali bash dimuat, ia melihat bahwa bashrc memberi tahu untuk menetapkan nilai PATH baru dan itulah yang dilakukannya.

Demikian pula, jika kita ingin menghapus direktori dari PATH, kita harus menetapkan kembali nilai PATH yang berbeda di bashrc sehingga setiap kali bash dimulai, ia menggunakan nilai yang dimodifikasi.

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

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

Jika direktorinya adalah /home/wrong/dir, perintahnya akan terlihat seperti ini.

$dibuang $PATH | sed -Dan 's/:/home/salah/dir$//'

Di sini, bagian yang menarik adalah alat sed. Pelajari selengkapnya tentang sed di sini dan di sini . Singkat cerita, menggunakan sed, kami memodifikasi output dari dibuang memerintah. Sekarang, kita dapat menggunakan output yang dimodifikasi ini untuk mengubah nilai PATH.

Buka bashrc di editor teks dan tambahkan baris berikut. Saya sengaja menyimpan baris sebelumnya untuk membuktikan bahwa itu berfungsi.

$ekspor JALUR='$(echo $PATH | sed -e 's/:~/Desktop$//')'

Atau, Anda juga dapat mengatur nilai PATH secara manual. Ini adalah proses yang melelahkan tetapi lebih mudah dan sederhana.

$ekspor JALUR=/usr/lokal/sampah:/usr/lokal/NS:/usr/sampah:/usr/NS:/sampah:/NS:
/usr/permainan:/usr/lokal/permainan:/jepret/NS

Di sini, nilai perintah akan ditetapkan ke PATH. Simpan file dan muat ulang bashrc.

$sumber~/.bashrc

Mari kita verifikasi hasilnya.

$dibuang $PATH

Nilai PATH diperbarui!

Pikiran terakhir

Di bash, variabel PATH adalah yang penting. Program apa pun yang berjalan melalui sesi bash mewarisi variabel, jadi penting bahwa PATH hanya menyertakan direktori yang diperlukan. Menambahkan lebih banyak direktori hanya akan menambah redundansi ke sistem.

Untuk melihat semua variabel lingkungan untuk bash, jalankan perintah ini. Bagian perintah pertama akan mengembalikan semua variabel lingkungan dan bagian kedua akan mengurutkan output dalam urutan menaik.

$env | menyortir

Ingin membumbui pengalaman bash Anda? Alias ​​​​bash menawarkan cara unik untuk mempercepat dan meningkatkan segalanya. Pelajari lebih lanjut tentang alias bash .

Menikmati!