Saya sudah frustrasi sebelumnya dengan perbedaan dalam output dari which
perintah di berbagai platform yang berbeda (Linux vs Solaris vx. OS X), dengan cangkang yang berbeda mungkin memainkan masalah ini juga. type
telah disarankan sebagai alternatif yang lebih baik, tetapi seberapa portabel hal itu?
Di masa lalu saya telah menulis fungsi yang mem-parsing keluaran which
dan menangani berbagai kasus penggunaan yang saya alami. Mereka bekerja di mesin yang saya gunakan, dan begitu juga untuk skrip pribadi saya, tetapi ini tampaknya sangat tidak dapat diandalkan untuk perangkat lunak yang akan saya posting di suatu tempat untuk digunakan orang lain.
Untuk mengambil satu contoh saja, misalkan saya harus mendeteksi dari skrip apakah bash dan zsh tersedia pada mesin, dan kemudian jalankan perintah dengan zsh jika ada, dan dengan bash jika zsh tidak dan bash sudah mencukupi versi untuk tidak memiliki bug tertentu. Sebagian besar skrip lainnya bisa berupa Bourne shell atau Ruby atau apa pun, tetapi yang satu ini harus dilakukan (AFAIK) dengan zsh atau versi bash terbaru.
Dapatkah saya mengandalkan type
ketersediaan di berbagai platform? Apakah ada alternatif lain which
yang dapat dengan mudah dan konsisten menjawab pertanyaan apakah perangkat lunak tertentu diinstal?
(Jika Anda ingin juga memberikan ide-ide khusus yang terkait dengan contoh yang saya berikan, itu bagus, tapi saya terutama hanya bertanya tentang kasus umum: apa cara yang paling dapat diandalkan untuk mencari tahu apakah suatu hal tertentu dipasang pada mesin yang diberikan ?)
hash
dancommand -v
.command -v
lebihtype
, semua yang kita butuhkan adalah hasil boolean. Apa "teknik yang umum direkomendasikan menggunakanhash
" yang Anda maksud?