Vài ngày trước tôi hài lòng với câu trả lời của mình. Tôi cũng biết rằng whichlệnh không được sử dụng để kiểm tra xem một lệnh có tồn tại hay không. Bây giờ tôi không hài lòng với câu trả lời của mình và tôi đề cập đến câu trả lời tuyệt vời này .
Với một whichlệnh đơn giản :
which foo.sh
Hoặc một typelệnh:
type foo.sh
Và bạn có thể tác động đến điều này theo thứ tự các đường dẫn trong $PATHhoặc thông qua một đường dẫn tuyệt đối khi tập lệnh bắt đầu, EG
/home/user/scripts/foo.sh
Thí dụ
Nếu PATH được định nghĩa như dưới đây
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
Và bạn bắt đầu một tập lệnh hoặc một cái gì đó trong /usr/local/binvà trong /usr/bin, tập lệnh /usr/local/bincó mức độ ưu tiên cao hơn.
bashvàzshcũng có tíchtypehợp; thay vào đózshwhich, khác vớibash, là một tích hợp (và không/usr/bin/which)