Ich habe ein Makefile, das ein Tool ausführt, das eine Weile dauert; es erlaubt mir, den verwendeten Befehl zu ersetzen:
make TOOL=alternative-tool
Ich möchte diesen Schritt im Makefile überspringen, also suche ich nach einem Befehl, der mit dem Status 0 beendet wird und vernachlässigbare Nebenwirkungen hat.
Offensichtlich könnte ich einfach true
verwenden , aber das ist etwas verwirrend:
make TOOL=true
Das liest sich so, als ob ich will um das Tool auszuführen, aber ich tue es nicht.
Gibt es eine standardmäßig installierte ausführbare Datei, die nicht /bin/true
ist das mit dem Status 0 endet und das einen einprägsamen und leicht einzugebenden Namen hat?
Akzeptierte Antwort:
Obwohl Sie nach etwas gefragt haben, das „nicht /bin/true
ist “ und ersetzt true
mit dem vollständigen Namen /bin/true
um zu zeigen, dass es der true
ist Programm statt einer anderen Bedeutung von „wahr“ ist wahrscheinlich die beste Lösung.
Ihr Anliegen ist, dass der true
in
make TOOL=true
scheint etwas anderes als ein Befehlsname zu sein. Aber wenn Sie schreiben
make TOOL=/bin/true
dann ist das eindeutig ein Befehl. Jemand könnte TOOL=true
falsch lesen bedeutet, dass irgendwo ein anderes Tool beabsichtigt ist, aber keine solche Fehlinterpretation von TOOL=/bin/true
ist wahrscheinlich.
Ich bin mir nicht sicher, wann :
, das ein in die Shell integrierter, aber kein externer Befehl ist, funktioniert. Henning Makholm hat berichtet, dass es zu funktionieren scheint. Aber ich denke, es funktioniert nicht in allen Situationen, und Sie haben festgestellt, dass es bei Ihnen nicht funktioniert hat.
Was einen Shell-Alias betrifft, so können Sie diesen nicht verwenden, da die Alias-Erweiterung nicht in den Argumenten durchgeführt wird, die Sie an einen Befehl übergeben, noch verwenden Makefiles zuvor definierte Shell-Aliase. Auch wenn make
Ihre Befehle in einer neuen Shell ausführt, wird diese Shell den Alias nicht haben (und würde ihn nicht verwenden, selbst wenn sie ihn hätte, weil es eine nicht interaktive Shell wäre, in der die Alias-Erweiterung nicht automatisch aktiviert ist).