J'ai un Makefile qui exécute un outil qui prend un peu de temps ; ça me permet de remplacer la commande utilisée :
make TOOL=alternative-tool
J'aimerais ignorer cette étape dans le Makefile, donc je recherche une commande qui se termine avec le statut 0 et qui a des effets secondaires négligeables.
Évidemment, je pourrais simplement utiliser true , mais c'est un peu déroutant :
make TOOL=true
Cela se lit comme si je vouloir pour exécuter l'outil, mais je ne le fais pas.
Existe-t-il un exécutable installé par défaut qui n'est pas /bin/true qui sort avec le statut 0, et qui a un nom accrocheur et facile à saisir ?
Réponse acceptée :
Même si vous avez demandé quelque chose qui n'est "pas /bin/true ", remplaçant true avec le nom complet /bin/true pour montrer que c'est le true programme plutôt qu'une autre signification de "vrai" est probablement la meilleure solution.
Votre préoccupation est que le true dans
make TOOL=true
semble être autre chose qu'un nom de commande. Mais si vous écrivez
make TOOL=/bin/true
alors c'est sans ambiguïté une commande. Quelqu'un pourrait mal lire TOOL=true pour signifier qu'un autre outil quelque part est prévu, mais pas une telle erreur de lecture de TOOL=/bin/true est probable.
Je ne sais pas quand : , qui est une commande interne du shell mais pas une commande externe, fonctionnera. Henning Makholm a signalé que cela semble fonctionner. Mais je pense que cela ne fonctionne pas dans toutes les situations, et vous avez constaté que cela ne fonctionnait pas pour vous.
Quant à un alias de shell, vous ne pouvez pas l'utiliser car l'expansion d'alias n'est pas effectuée dans les arguments que vous transmettez à une commande, et les makefiles n'utilisent pas non plus les alias de shell précédemment définis. Même si make exécute vos commandes dans un nouveau shell, ce shell n'aura pas l'alias (et ne l'utilisera pas même s'il l'avait, car ce serait un shell non interactif, où l'expansion d'alias n'est pas automatiquement activée).