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).