2010-02-01 26 views
50

En un sistema Linux, ¿qué es /bin/true?¿Qué es/bin/true

+0

/foo/bar || true (funciona si/bin/true) está en la ruta. Aunque no está etiquetado como tal, esta pregunta explica algo que es útil en scripts de shell, makefiles, etc., por lo que no vota para cerrar. –

+0

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

+0

Es posible que desee echar un vistazo a [el código fuente de ellos] (https://askubuntu.com/questions/454117/why-is -bin-true-such-a-large-file-how-would-i-find-the-source-code); desde que tenía curiosidad –

Respuesta

54

/bin/true es un comando que devuelve 0 (un valor de verdad en la cáscara).

Su propósito es utilizar en lugares en un script de shell donde normalmente usaría un literal como "verdadero" en un lenguaje de programación, pero donde el shell solo tomará un comando para ejecutarse.

/bin/false es lo contrario que devuelve un valor distinto de cero (un valor falso en el shell).

19

Desde la página del manual:

true - do nothing, successfully 

true returns a status 0. 
+15

De alguna manera me parece gracioso. Con éxito no hacer nada, jaja. – syaz

+30

SyaZ: También te puede divertir la descripción de 'false (1)': "no hacer nada, sin éxito". – camh

0

Simplemente diciendo que es un programa que devuelve 0. A veces necesitamos obtener este valor para permitir que el script sea más legible.

7

Tenga en cuenta que no es tonto o visualmente agradable. Por ejemplo, ayuda a salir de un programa sin activar los manejadores finales, lo que podría ocasionar problemas al hacer multihebra o programas bifurcados. Al igual que en Perl:

#!/usr/bin/env perl 

exec "/bin/true"; 

END { 
    print "This wont get printed .. would have if I just 'exit' or 'die'\n"; 
} 
0

que he visto que se usa para engañar a una operación del sistema en el pensamiento de un comando se ha ejecutado cuando no lo ha hecho. Si un comando es defectuoso, por ejemplo, un bucle, puede reemplazarlo con un enlace simbólico a 'verdadero' para ejecutar el trabajo maestro. Solo una buena idea si el trabajo reemplazado no es esencial.

Cuestiones relacionadas