Ho un Makefile che esegue uno strumento che richiede un po' di tempo; mi permette di sostituire il comando utilizzato:
make TOOL=alternative-tool
Vorrei saltare quel passaggio nel Makefile, quindi sto cercando un comando che esca con lo stato 0 e che abbia effetti collaterali trascurabili.
Ovviamente, potrei semplicemente usare true
, ma è un po' confuso:
make TOOL=true
Si legge come se io voglio per eseguire lo strumento, ma non lo faccio.
Esiste un eseguibile installato di default che non sia /bin/true
che esce con lo stato 0 e che ha un nome accattivante e facile da digitare?
Risposta accettata:
Anche se hai chiesto qualcosa che "non è /bin/true
“, sostituendo true
con il nome completo /bin/true
per mostrare che è il true
programma piuttosto che qualche altro significato di "vero" è probabilmente la soluzione migliore.
La tua preoccupazione è che il true
in
make TOOL=true
sembra essere qualcosa di diverso dal nome di un comando. Ma se scrivi
make TOOL=/bin/true
allora questo è inequivocabilmente un comando. Qualcuno potrebbe leggere male TOOL=true
significa che è previsto qualche altro strumento da qualche parte, ma nessuna lettura errata di TOOL=/bin/true
è probabile.
Non sono sicuro di quando :
, che è una shell incorporata ma non un comando esterno, funzionerà. Henning Makholm ha riferito che sembra funzionare. Ma penso che non funzioni in tutte le situazioni e hai scoperto che non ha funzionato per te.
Per quanto riguarda un alias di shell, non è possibile utilizzarlo perché l'espansione dell'alias non viene eseguita negli argomenti che si passano a un comando, né i makefile fanno uso di alias di shell precedentemente definiti. Anche se make
esegue i tuoi comandi in una nuova shell, quella shell non avrà l'alias (e non lo userebbe anche se lo avesse, perché sarebbe una shell non interattiva, in cui l'espansione dell'alias non è abilitata automaticamente).