¿Cuál es el propósito de "|| true" en .bashrc de Tumbleweed?

¿Cuál es el propósito de "|| true" en .bashrc de Tumbleweed?

openSUSE Tumbleweed tiene

test -s ~/.alias && . ~/.alias || true

como el contenido de su ~/.bashrc.

La forma en que entiendo la parte a la izquierda || truees que

  • se comprueba si ~/.aliasexiste y tiene un tamaño mayor que cero.
  • y, si se cumplen las condiciones, se obtiene el archivo.

Entonces ¿por qué es || truenecesario?


GNU bash, versión 5.0.16(1) (x86_64-suse-linux-gnu)

Respuesta1

|| truees útil en contextos donde no nos importa si el comando falla; en este caso particular, si ~/.aliasno existe, test -sfallará con un código de salida distinto de cero, pero no queremos que eso tenga ninguna otra consecuencia. || truegarantiza que la lista completa de comandos (incluido el abastecimiento ~/.alias) siempre salga con un estado exitoso.

Esto sería particularmente relevante si se .bashrcincluyera set -e, aunque eso sería inusual para un script de inicio de shell.

Otra forma de escribir esto sería

if test -s ~/.alias; then . ~/.alias; fi

pero eso saldría con un código de salida distinto de cero si el abastecimiento ~/.aliascausara un error.

Ver también¿Por qué es útil el patrón "comando || verdadero"?

Respuesta2

Esto || truegarantiza que todo el comando devuelva un estado de "Éxito", incluso si ./.aliasesdevuelve un estado distinto de cero (fallo).

Útil si está utilizando set -e(salir en caso de error).

información relacionada