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 .