Ketika saya menjalankan program tanpa menentukan path lengkap ke yang dapat dieksekusi, dan Bash harus mencari direktori di $PATH
untuk menemukan biner, tampaknya Bash mengingat jalur di semacam cache. Misalnya, saya menginstal build Subversion dari sumber ke /usr/local
, lalu ketik svnsync help
pada prompt Bash. Bash menemukan biner /usr/local/bin/svnsync
untuk "svnsync" dan menjalankannya. Kemudian ketika saya menghapus instalasi Subversion di /usr/local
dan jalankan kembali svnsync help
, Bash menjawab:
bash: /usr/local/bin/svnsync: No such file or directory
Tetapi, ketika saya memulai instance baru Bash, ia menemukan dan menjalankan /usr/bin/svnsync
.
Bagaimana cara menghapus cache jalur ke file yang dapat dieksekusi?
Jawaban yang Diterima:
bash
melakukan cache path lengkap ke sebuah perintah. Anda dapat memverifikasi bahwa perintah yang Anda coba jalankan di-hash dengan type
perintah:
$ type svnsync
svnsync is hashed (/usr/local/bin/svnsync)
Untuk menghapus seluruh cache:
$ hash -r
Atau cukup satu entri:
$ hash -d svnsync
Untuk informasi tambahan, lihat help hash
dan man bash
.