2010-02-01 9 views
50

Auf einem Linux-System was ist /bin/true?Was ist/bin/true

+0

/foo/bar || true (funktioniert, wenn/bin/true) im Pfad ist. Obwohl sie nicht als solche gekennzeichnet sind, erklärt diese Frage etwas, das in Shell-Skripten, Makefiles usw. nützlich ist. –

+0

http://forums.thedailywtf.com/forums/t/3779.aspx –

+0

Sie können sich [den Quellcode von ihnen] ansehen (https://askubuntu.com/questions/454117/why-is) -bin-true-so-eine-große-Datei-wie-würde-ich-finde-den-Quellcode); da war ich neugierig. –

Antwort

54

/bin/true ist ein Befehl, 0 (a Wahrheitswert in der Schale) zurückgibt.

Sein Zweck ist es, an Stellen in einem Shell-Skript zu verwenden, wo Sie normalerweise ein Literal wie "true" in einer Programmiersprache verwenden würden, aber die Shell nur einen Befehl ausführen wird.

/bin/false ist das Gegenteil, das ungleich Null (ein falscher Wert in der Shell) zurückgibt.

19

Aus der Manpage:

true - do nothing, successfully 

true returns a status 0. 
+15

Irgendwie finde ich das lustig. Erfolgreich nichts tun, lol. – syaz

+30

SyaZ: Sie können auch durch die Beschreibung von 'false (1)' amüsiert werden: "nichts tun, erfolglos". – camh

0

Einfach gesagt, es ist ein Programm, das 0 zurückgibt. Manchmal müssen wir diesen Wert erhalten, um das Skript lesbarer zu machen.

7

Hinweis, es ist nicht nur dumm oder optisch nett. Es hilft zum Beispiel, ein Programm zu beenden, ohne die End-Handler zu aktivieren, die beim Ausführen von Multi-Threading- oder Gabel-Programmen versagen könnten. Wie in Perl:

0

Ich habe gesehen, es verwendet, um eine Systemoperation zu denken, dass ein Befehl ausgeführt wurde, wenn es nicht getan hat. Wenn ein Befehl fehlerhaft ist, z. B. Schleifen, können Sie ihn durch einen Symlink auf 'wahr' setzen, um den Master-Job auszuführen. Nur eine gute Idee, wenn der ersetzte Job nicht wesentlich ist.