Trước đây tôi đã thất vọng với sự khác biệt về đầu ra từ which
lệnh trên các nền tảng khác nhau (Linux so với Solaris vx. OS X), với các vỏ khác nhau cũng có thể ảnh hưởng đến vấn đề này. type
đã được đề xuất như là một thay thế tốt hơn, nhưng làm thế nào di động sẽ được?
Trước đây, tôi đã viết các hàm phân tích đầu ra which
và xử lý các trường hợp sử dụng khác nhau mà tôi gặp phải. Chúng hoạt động trên các máy tôi sử dụng, và các tập lệnh cá nhân của tôi cũng không sao, nhưng điều này dường như không đáng tin cậy cho phần mềm mà tôi sẽ đăng ở đâu đó cho người khác sử dụng.
Để lấy một ví dụ có thể, giả sử tôi phải phát hiện từ tập lệnh xem bash và zsh có khả dụng trên máy không, và sau đó chạy lệnh với zsh nếu có, và với bash nếu zsh không và bash là đủ phiên bản để không có một lỗi cụ thể. Hầu hết các phần còn lại của tập lệnh có thể là Bourne shell hoặc Ruby hoặc bất cứ thứ gì khác, nhưng điều này đặc biệt phải được thực hiện (AFAIK) với zsh hoặc một phiên bản bash gần đây.
Tôi có thể tin tưởng vào type
việc có sẵn trên các nền tảng không? Có một số thay thế khác which
mà có thể dễ dàng và nhất quán trả lời câu hỏi liệu một phần mềm cụ thể được cài đặt không?
(Nếu bạn cũng muốn đưa ra các ý tưởng liên quan cụ thể đến ví dụ tôi đã đưa ra, điều đó thật tuyệt, nhưng tôi chủ yếu chỉ hỏi về trường hợp chung: cách đáng tin cậy nhất để tìm hiểu xem một thứ cụ thể được cài đặt trên một máy cụ thể ?)
hash
vàcommand -v
.