Me he sentido frustrado antes con las diferencias en la salida del which
comando en diferentes plataformas (Linux vs. Solaris vx. OS X), con diferentes shells posiblemente jugando también en el asunto. type
se ha sugerido como una mejor alternativa, pero ¿qué tan portátil sería?
En el pasado, he escrito funciones que analizan la salida which
y manejan los diferentes casos de uso con los que me he encontrado. Funcionan en las máquinas que uso, por lo que están bien para mis scripts personales, pero esto parece terriblemente poco confiable para el software que voy a publicar en algún lugar para que otros lo usen.
Para tomar solo un ejemplo posible, supongamos que tengo que detectar desde un script si bash y zsh están disponibles en una máquina, y luego ejecutar un comando con zsh si está presente, y con bash si zsh no es y bash es suficiente versión para no tener un error particular. La mayor parte del resto del script podría ser Bourne shell o Ruby o cualquier otra cosa, pero esto debe hacerse (AFAIK) con zsh o una versión reciente de bash.
¿Puedo contar con type
estar disponible en todas las plataformas? ¿Hay alguna otra alternativa a la which
que pueda responder fácil y consistentemente la pregunta de si está instalado un software en particular?
(Si también desea dar ideas específicamente relacionadas con el ejemplo que di, eso es genial, pero principalmente solo estoy preguntando sobre el caso general: ¿cuál es la forma más confiable de averiguar si una cosa en particular está instalada en una máquina determinada? ?)
hash
ycommand -v
.command -v
mástype
, todo lo que necesitamos es un resultado booleano. ¿A qué "técnicas comúnmente recomendadas usandohash
" se refiere?