Tengo un Makefile que ejecuta una herramienta que tarda un poco; me permite reemplazar el comando utilizado:
make TOOL=alternative-tool
Me gustaría omitir ese paso en el Makefile, así que estoy buscando un comando que salga con el estado 0 y que tenga efectos secundarios insignificantes.
Obviamente, podría usar true
, pero eso es un poco confuso:
make TOOL=true
Eso se lee como si quiero para ejecutar la herramienta, pero no lo hago.
¿Hay algún ejecutable instalado por defecto que no sea /bin/true
? que sale con estado 0, y que tiene un nombre pegadizo y fácil de escribir?
Respuesta aceptada:
Aunque haya pedido algo que "no es /bin/true
“, reemplazando true
con el nombre completo /bin/true
para mostrar que es el true
programa en lugar de algún otro significado de "verdadero" es probablemente la mejor solución.
Su preocupación es que el true
en
make TOOL=true
parece ser algo más que un nombre de comando. Pero si escribes
make TOOL=/bin/true
entonces eso es inequívocamente un comando. Alguien podría leer mal TOOL=true
para significar que se pretende alguna otra herramienta en algún lugar, pero no tal lectura errónea de TOOL=/bin/true
es probable.
No estoy seguro de cuándo :
, que es un comando interno de shell pero no un comando externo, funcionará. Henning Makholm ha informado que parece funcionar. Pero creo que no funciona en todas las situaciones, y descubrió que no funcionó para usted.
En cuanto a un alias de shell, no puede usarlo porque la expansión de alias no se realiza en los argumentos que pasa a un comando, ni los archivos MAKE hacen uso de alias de shell definidos previamente. Incluso si make
ejecuta sus comandos en un nuevo shell, ese shell no tendrá el alias (y no lo usaría incluso si lo tuviera, porque sería un shell no interactivo, donde la expansión del alias no se habilita automáticamente).