Khi nào nên khởi động lại các tệp thực thi trong $ PATH với bash?


9

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


1
... ví dụ như khi bạn có một chương trình mà bạn vừa biên dịch lại ... có cùng tên ... có thể ở một con đường khác ...
Hastur

@Hastur: Tôi không chắc nếu bạn nhận xét là một câu hỏi hoặc một tuyên bố. Nếu tuyên bố, xin vui lòng gửi như là một câu trả lời.
kevinarpe

Câu trả lời:


7

hashlà 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 .


4

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 $PATHdanh 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 $PATHvà 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 -rsau khi sửa đổi $PATH, nó sẽ tự động thiết lập lại khi hoàn thành.


Điểm hay về phần cài đặt và điểm trong đường dẫn của bạn.
kevinarpe
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.