Beberapa Instalasi dan Memahami $ PATH

17

Saya memiliki Git versi lama yang diinstal di:

/usr/bin/

Baru-baru ini saya mengunduh versi yang lebih baru ke:

/usr/local/bin

Saat saya mengetik:

which git

Saya mendapatkan lokasi versi lama. Saya percaya bahwa ini hanya karena / usr / bin / muncul sebelum / usr / local / bin dalam variabel $ PATH saya dan karenanya versi lama dari git 'ditemukan' terlebih dahulu.

Untuk menguji ini, saya mengganti nama versi lama dari git menjadi "git_old". Sekarang ketika saya mengetik:

which git

Saya mendapatkan lokasi versi yang lebih baru, seperti yang diharapkan. Tapi ketika saya mengetik:

git --version

Saya mendapatkan kesalahan berikut:

-bash: /usr/bin/git: No such file or directory

Saya hanya ingin tahu mengapa komputer saya kembali mencari di lokasi lama untuk Git?

pengguna1551817
sumber

Jawaban:

30

Bash cache path lengkap ke executables sehingga tidak harus melihat $PATHsetiap waktu.

Anda dapat melihat apa yang ada di cache menggunakan hashperintah:

deltik@node51 [~]$ hash
hits    command
   1    /usr/bin/git

Tembolok ini dapat dihapus dengan hash -r:

deltik@node51 [~]$ hash -r
deltik@node51 [~]$ hash
hash: hash table empty

Sumber daya tambahan

Deltik
sumber
2
wtf saya tidak pernah tahu ini, luar biasa.
djsmiley2k dalam kegelapan
1
Sebagian besar shell lain melakukan hal yang sama, tetapi tidak semua digunakan hash -runtuk memuat ulang cache. Penyanyi, seperti SSH, gunakan rehashsebagai perintah sebagai gantinya.
Moshe Katz
PATH = $ PATH harus menghapus cache. hash -r tidak diperlukan.
jrw32982 mendukung Monica