J'ai été frustré auparavant par les différences de sortie de la which
commande sur différentes plates-formes (Linux vs Solaris vx. OS X), avec différents shells pouvant également jouer sur le sujet. type
a été suggéré comme une meilleure alternative, mais comment serait-ce portable?
Dans le passé, j'ai écrit des fonctions qui analysent la sortie which
et gèrent les différents cas d'utilisation que j'ai rencontrés. Ils fonctionnent sur toutes les machines que j'utilise, et ne conviennent donc pas à mes scripts personnels, mais cela semble terriblement peu fiable pour les logiciels que je vais publier quelque part pour que d'autres puissent les utiliser.
Pour ne prendre qu'un exemple possible, supposons que je doive détecter à partir d'un script si bash et zsh sont disponibles sur une machine, puis exécuter une commande avec zsh s'il est présent, et avec bash si zsh ne l'est pas et bash est suffisant version pour ne pas avoir de bug particulier. La plupart du reste du script pourrait être le shell Bourne ou Ruby ou toute autre chose, mais cette chose particulière doit être faite (AFAIK) avec zsh ou une version récente de bash.
Puis-je compter sur la type
disponibilité sur toutes les plateformes? Existe-t-il une autre alternative à which
laquelle peut facilement et systématiquement répondre à la question de savoir si un logiciel particulier est installé?
(Si vous voulez également donner des idées spécifiquement liées à l'exemple que j'ai donné, c'est très bien, mais je pose principalement des questions sur le cas général: quel est le moyen le plus fiable pour savoir si une chose particulière est installée sur une machine donnée ?)
hash
etcommand -v
.command -v
plustype
, tout ce dont nous avons besoin est un résultat booléen. À quelles «techniques couramment utiliséeshash
» faites-vous référence?