Bash shell có một lệnh tích hợp hash -r
để thiết lập lại bộ $PATH
đệm trong cho các tệp thực thi.
Khi nào cần thiết để sử dụng lệnh này?
Liên quan: Cách làm lại các tệp thực thi trong $ PATH bằng bash
Bash shell có một lệnh tích hợp hash -r
để thiết lập lại bộ $PATH
đệm trong cho các tệp thực thi.
Khi nào cần thiết để sử dụng lệnh này?
Liên quan: Cách làm lại các tệp thực thi trong $ PATH bằng bash
Câu trả lời:
hash
là một lệnh bash tích hợp. Bảng băm là một tính năng của bash giúp nó không phải tìm kiếm $ PATH mỗi khi bạn gõ lệnh bằng cách lưu các kết quả vào bộ nhớ.
Vì vậy, khi thông tin được lưu trữ / lưu trữ không còn được cập nhật hoặc hợp lệ, bạn có thể cần phải đặt lại.
Đọc thêm về câu trả lời hay này trên Unix stackexchange .
Nếu trước đây bạn đã chạy một chương trình trong lệnh gọi shell đó, sau đó cài đặt một phiên bản khác của nó trong một thư mục trước đó trong $PATH
danh sách tìm kiếm của bạn , bạn cần đặt lại hàm băm để nó sẽ tìm thấy nó ở vị trí mới. Nếu không, nó sẽ sử dụng bộ đệm để tìm chương trình ở vị trí cũ.
Bạn cũng cần đặt lại hàm băm nếu một chương trình được cài đặt trong 2 thư mục của bạn $PATH
và bạn xóa bản sao khỏi vị trí trước đó sau khi chạy nó. Mặt khác, nó sẽ cố gắng tìm nó ở vị trí đó và báo cáo "Không có tệp hoặc thư mục như vậy" (cá nhân, tôi nghĩ rằng nó sẽ tự động xóa hàm băm và thực hiện tìm kiếm đầy đủ khi điều đó xảy ra, nhưng nó đã không xảy ra khi tôi thử ).
Lưu ý rằng bạn thực sự không phải thiết lập lại toàn bộ hàm băm, bạn có thể sử dụng:
hash name
để buộc nó cập nhật mục nhập bộ đệm cho tên đó hoặc:
hash -d name
để xóa chỉ mục bộ nhớ cache đó. Chúng để lại tất cả các mục bộ nhớ cache khác một mình.
Bạn không cần sử dụng hash -r
sau khi sửa đổi $PATH
, nó sẽ tự động thiết lập lại khi hoàn thành.