3 votes

Appel de `command -v find` à partir de GNU Makefile

J'utilise un shell (bash, mais j'ai besoin de portabilité) et un Makefile GNU. J'ai ce code :

check_commands:
        command -v find >/dev/null
        command -v asdf >/dev/null

Comme prévu, la première commande est passée, la seconde interrompt le Makefile avec une erreur. Maintenant, j'enlève le >/dev/null . Pourquoi alors

check_commands:
        command -v find

produit l'erreur suivante ?

make: command: Command not found.

13voto

Virgile Points 3047

À en juger par un rapide coup d'œil sur job.c dans les sources de GNU make, il tente d'éviter de lancer un shell lorsqu'il le peut, c'est-à-dire lorsque la ligne de commande est suffisamment simple (de la forme cmd args sans redirection, commandes composées, etc.) et l'interpréteur de commandes est celui par défaut. Le problème est alors que command est un intégré et n'a pas d'exécutable associé, d'où le message d'erreur de make. Cela ne se produit pas lorsque vous avez > /dev/null car make considère que la commande est trop compliquée et laisse le soin à sh pour le lancer.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X