Qual é o propósito de "|| true" no .bashrc do Tumbleweed?

Qual é o propósito de "|| true" no .bashrc do Tumbleweed?

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 ~/.aliasexiste e tem tamanho maior que zero.
  • e, se as condições forem atendidas, o arquivo será originado.

Então, por que é || truenecessá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 ~/.aliasnão existir, test -sfalhará com um código de saída diferente de zero, mas não queremos que isso tenha qualquer outra consequência. || truegarante que a lista completa de comandos (incluindo sourcing ~/.alias) sempre saia com status de sucesso.

Isso seria particularmente relevante se fosse .bashrcincluí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 ~/.aliascausasse um erro.

Veja tambémPor que o padrão "command || true" é útil?

Responder2

Isso || truegarante que todo o comando retorne um status de "Sucesso", mesmo que ./.aliasesretorne um status diferente de zero (Falha).

Útil se você estiver usando set -e(sair em caso de erro).

informação relacionada