ฉันเคยผิดหวังมาก่อนด้วยความแตกต่างของเอาต์พุตจากwhich
คำสั่งข้ามแพลตฟอร์มที่แตกต่างกัน (Linux กับ Solaris vx. OS X) ด้วยกระสุนที่แตกต่างกันอาจจะเล่นในเรื่องนี้เช่นกัน type
ได้รับการแนะนำว่าเป็นทางเลือกที่ดีกว่า แต่มันจะเป็นแบบพกพาได้อย่างไร
ในอดีตฉันได้เขียนฟังก์ชั่นซึ่งแยกวิเคราะห์ผลลัพธ์which
และจัดการกรณีการใช้งานที่แตกต่างกันที่ฉันพบ พวกเขาทำงานในเครื่องที่ฉันใช้และก็โอเคสำหรับสคริปต์ส่วนตัวของฉัน แต่ดูเหมือนว่าไม่น่าเชื่อถืออย่างยิ่งสำหรับซอฟต์แวร์ที่ฉันจะโพสต์ที่อื่นเพื่อให้ผู้อื่นใช้
ในการใช้ตัวอย่างที่เป็นไปได้เพียงอย่างเดียวสมมติว่าฉันต้องตรวจจับจากสคริปต์ว่า bash และ zsh มีอยู่ในเครื่องหรือไม่จากนั้นเรียกใช้คำสั่งด้วย zsh หากมีอยู่และทุบตีถ้า zsh ไม่ได้และ bash นั้นเพียงพอ เวอร์ชันที่ไม่มีข้อผิดพลาดเฉพาะ ส่วนที่เหลือของสคริปต์อาจเป็น Bourne shell หรือ Ruby หรืออย่างอื่น แต่สิ่งนี้สิ่งหนึ่งที่ต้องทำ (AFAIK) ด้วย zsh หรือ bash เวอร์ชันล่าสุด
ฉันสามารถนับtype
ได้ว่ามีอยู่ในแพลตฟอร์มหรือไม่ มีทางเลือกอื่นwhich
ที่สามารถตอบคำถามได้อย่างง่ายดายและต่อเนื่องว่ามีการติดตั้งซอฟต์แวร์บางส่วนหรือไม่?
(ถ้าคุณต้องการให้ความคิดที่เกี่ยวข้องกับตัวอย่างที่ฉันให้มาโดยเฉพาะนั้นยอดเยี่ยม แต่ฉันแค่ถามถึงกรณีทั่วไป: วิธีที่น่าเชื่อถือที่สุดในการตรวจสอบว่ามีการติดตั้งสิ่งใดในเครื่องที่กำหนดหรือไม่ ?)
hash
command -v