La razón de este patrón es que los scripts de mantenedor en los paquetes Debian tienden a comenzar set -e
, lo que hace que el shell se cierre tan pronto como cualquier comando (estrictamente hablando, pipeline, list o comando compuesto) salga con un estado distinto de cero. Esto asegura que los errores no se acumulen: tan pronto como algo sale mal, el script aborta.
En los casos en que un comando en el script puede fallar, la adición || true
asegura que el comando compuesto resultante siempre salga con el estado cero, por lo que el script no se cancela. Por ejemplo, eliminar un directorio no debería ser un error grave (evitar que se elimine un paquete); entonces usaríamos
rmdir ... || true
ya rmdir
que no tiene una opción para decirle que ignore los errores.
||:
es otra forma idiomática de escribir esto (:
es otra entrada en la tabla integrada que apunta atrue
, pero se garantiza que será una creación incluso de vuelta a Bourne; dicho eso, para POSIX sh,true
también se garantiza que es una característica incorporada, por lo que es más brevedad que eficiencia en tiempos aún remotamente modernos).