
openSUSE Tumbleweed tiene
test -s ~/.alias && . ~/.alias || true
como el contenido de su ~/.bashrc
.
La forma en que entiendo la parte a la izquierda || true
es que
- se comprueba si
~/.alias
existe y tiene un tamaño mayor que cero. - y, si se cumplen las condiciones, se obtiene el archivo.
Entonces ¿por qué es || true
necesario?
GNU bash, versión 5.0.16(1) (x86_64-suse-linux-gnu)
Respuesta1
|| true
es útil en contextos donde no nos importa si el comando falla; en este caso particular, si ~/.alias
no existe, test -s
fallará con un código de salida distinto de cero, pero no queremos que eso tenga ninguna otra consecuencia. || true
garantiza que la lista completa de comandos (incluido el abastecimiento ~/.alias
) siempre salga con un estado exitoso.
Esto sería particularmente relevante si se .bashrc
incluyera 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 ~/.alias
causara un error.
Ver también¿Por qué es útil el patrón "comando || verdadero"?
Respuesta2
Esto || true
garantiza que todo el comando devuelva un estado de "Éxito", incluso si ./.aliases
devuelve un estado distinto de cero (fallo).
Útil si está utilizando set -e
(salir en caso de error).