
O openSUSE Tumbleweed tem
test -s ~/.alias && . ~/.alias || true
como o conteúdo de seu ~/.bashrc
.
A maneira como eu entendo a parte à esquerda || true
é que
- há uma verificação para ver se
~/.alias
existe e tem tamanho maior que zero. - e, se as condições forem atendidas, o arquivo será originado.
Então, por que é || true
necessário?
GNU bash, versão 5.0.16(1)-release (x86_64-suse-linux-gnu)
Responder1
|| true
é útil em contextos onde não nos importamos se o comando falhar; neste caso específico, se ~/.alias
não existir, test -s
falhará com um código de saída diferente de zero, mas não queremos que isso tenha qualquer outra consequência. || true
garante que a lista completa de comandos (incluindo sourcing ~/.alias
) sempre saia com status de sucesso.
Isso seria particularmente relevante se fosse .bashrc
incluído set -e
, embora isso fosse incomum para um script de inicialização do shell.
Outra maneira de escrever isso seria
if test -s ~/.alias; then . ~/.alias; fi
mas isso terminaria com um código de saída diferente de zero se a fonte ~/.alias
causasse um erro.
Veja tambémPor que o padrão "command || true" é útil?
Responder2
Isso || true
garante que todo o comando retorne um status de "Sucesso", mesmo que ./.aliases
retorne um status diferente de zero (Falha).
Útil se você estiver usando set -e
(sair em caso de erro).