Kapan harus mengulangi executable dalam $ PATH dengan bash?

9

Bash shell memiliki perintah hash -rbawaan untuk mengatur ulang $PATHcache internal untuk executable.

Kapan perlu menggunakan perintah ini?

Terkait: Cara mengulangi executable dalam $ PATH dengan bash

kevinarpe
sumber
1
... misalnya ketika Anda memiliki program yang baru Anda rekompilasi ... dengan nama yang sama ... mungkin di jalur yang berbeda ...
Hastur
@ Rushur: Saya tidak yakin apakah komentar Anda adalah pertanyaan atau pernyataan. Jika pernyataan, mohon posting sebagai jawaban.
kevinarpe

Jawaban:

7

hashadalah perintah built-in bash. Tabel hash adalah fitur bash yang mencegahnya dari harus mencari $ PATH setiap kali Anda mengetik perintah dengan menyimpan hasilnya di memori.

Jadi, ketika informasi yang di- cache / disimpan tidak lagi diperbarui atau valid, Anda mungkin perlu mengatur ulang.

Baca lebih lanjut tentang jawaban yang bagus ini di Unix stackexchange .

Cepat
sumber
4

Jika sebelumnya Anda menjalankan sebuah program dalam doa shell, dan kemudian menginstal versi lain dari itu dalam direktori sebelumnya di daftar $PATHpencarian Anda, Anda perlu mengatur ulang hash sehingga akan menemukannya di lokasi baru. Jika tidak, ia akan menggunakan cache untuk menemukan program di lokasi yang lama.

Anda juga perlu mengatur ulang hash jika program diinstal di 2 direktori di Anda $PATH, dan Anda menghapus salinan dari lokasi sebelumnya setelah menjalankannya. Kalau tidak, itu akan mencoba menemukannya di lokasi itu, dan melaporkan "Tidak ada file atau direktori" (secara pribadi, saya pikir itu harus secara otomatis menghapus hash dan melakukan pencarian penuh ketika itu terjadi, tetapi itu tidak terjadi ketika saya mencoba ).

Perhatikan bahwa Anda sebenarnya tidak perlu mengatur ulang seluruh hash, Anda dapat menggunakan:

hash name

untuk memaksanya memperbarui entri cache hanya untuk nama itu, atau:

hash -d name

untuk menghapus hanya entri cache itu. Ini meninggalkan semua entri cache lainnya.

Anda tidak perlu menggunakan hash -rsetelah memodifikasi $PATH, itu diatur ulang secara otomatis ketika ini selesai.

Barmar
sumber
Poin bagus tentang bagian instal dan titik di jalur Anda.
kevinarpe