Mám Makefile, který spouští nástroj, který chvíli trvá; umožňuje mi nahradit použitý příkaz:
make TOOL=alternative-tool
Chtěl bych tento krok v Makefile přeskočit, takže hledám příkaz, který se ukončí se stavem 0 a který má zanedbatelné vedlejší účinky.
Samozřejmě bych mohl použít jen true
, ale to je trochu matoucí:
make TOOL=true
To zní, jako bych chtěl nástroj spustit, ale já ne.
Existuje ve výchozím nastavení nainstalovaný spustitelný soubor, který není /bin/true
který končí se stavem 0 a má chytlavý a snadno napsat název?
Přijatá odpověď:
I když jste požádali o něco, co „není /bin/true
“, nahrazující true
s celým jménem /bin/true
ukázat, že je to true
program spíše než nějaký jiný význam slova „pravda“ je pravděpodobně nejlepším řešením.
Jde vám o to, aby true
v
make TOOL=true
se zdá být něco jiného než název příkazu. Ale když píšeš
make TOOL=/bin/true
pak je to jednoznačně příkaz. Někdo si může špatně přečíst TOOL=true
to znamená, že je někde zamýšlen nějaký jiný nástroj, ale žádné takové chybné čtení TOOL=/bin/true
je pravděpodobné.
Nejsem si jistý, kdy :
, což je vestavěný shell, ale ne externí příkaz, bude fungovat. Henning Makholm oznámil, že to funguje. Ale myslím, že to nefunguje ve všech situacích a vy jste zjistili, že to nefunguje pro vás.
Pokud jde o alias shellu, nemůžete jej použít, protože rozšíření aliasů se neprovádí v argumentech, které předáváte příkazu, ani soubory makefile nepoužívají dříve definované aliasy shellu. I když make
spouští vaše příkazy v novém shellu, tento shell nebude mít alias (a nepoužil by ho, i kdyby jej měl, protože by to byl neinteraktivní shell, kde rozšíření aliasů není automaticky povoleno).