Perhatikan bahwa ini bukan duplikat. Saya bertanya tentang menonaktifkan cache, tidak membersihkannya. Jika Anda memiliki cache untuk dihapus, maka itu jelas tidak dinonaktifkan.
Pada kesempatan yang jarang saya perhatikan cache bash dari hal-hal yang telah ditemukan di jalan, itu bukan karena itu membantu, itu karena itu sangat menjengkelkan. Sebuah contoh:
~ dc$ export PATH=$HOME/bin:$PATH
~ dc$ cat bin/which
#!/bin/bash
echo "my which"
~ dc$ which
my which
~ dc$ rm bin/which
~ dc$ which which
-bash: /Users/dc/bin/which: No such file or directory
Di shell lain ...
~ dc$ which which
/usr/bin/which
Saya yakin bahwa caching ini masuk akal di masa lalu yang bagus ketika disk lambat dan memori mahal dan terbatas sehingga Anda tidak bisa men-cache banyak - cache jalan lebih murah daripada cache semua blok disk yang diperlukan untuk menemukan perintah . Tapi hari ini itu tidak memberikan manfaat nyata dan menyebabkan lebih banyak masalah daripada memecahkannya. Ini adalah kesalahan, hampir menjadi bug.
Dan saya bahkan tidak dapat menemukan cara untuk menonaktifkannya. Ada petunjuk?
/usr/bin
tetap sepenuhnya dalam cache.set +h
untuk menonaktifkan hashing.Jawaban:
Anda bisa menghapus executable hash sebelum prompt ditarik:
Dari
help hash
:sumber
set +h
set +h
tidak ideal, karena banyak utilitas (mis. Instalasi permata ruby) memanggilhash
, menghasilkan aliran-bash: hash: hashing disabled
peringatan.Anda bisa memaksa bash untuk melakukan pencarian jalur baru jika perintah di tabel hash tidak ada lagi.
Dari manual bash:
Contoh:
sumber