GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Befehl, der mit Nullstatus beendet wird (nicht /bin/true)?

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).


Ubuntu
  1. Warum zeigt /bin/sh auf /bin/dash und nicht auf /bin/bash?

  2. $home/.local/bin nicht im Pfad für Ubuntu 19.04?

  3. Warum funktioniert find -exec mv {} ./target/ + nicht?

  4. Installieren Sie Binärdateien in /bin, /sbin, /usr/bin und /usr/sbin, Interaktionen mit --prefix und DESTDIR

  5. Wie lässt sich der Befehl python3 dazu bringen, Python 3.6 anstelle von 3.5 auszuführen?

Der Befehl „make“ wurde auf Ubuntu 20.04 Focal Fossa nicht gefunden

Wie behandelt Linux mehrere aufeinanderfolgende Pfadtrennzeichen (/home////username///file)?

Ubuntu – /usr/bin/host übernimmt auch nach dem Neustart keine Änderungen an /etc/hosts?

Linux – /sbin/init existiert nicht?

Warum sind wahr und falsch so groß?

#!/bin/sh vs. #!/bin/bash für maximale Portabilität