A razão para esse padrão é que os scripts de mantenedor nos pacotes Debian tendem a começar set -e
, o que faz com que o shell saia assim que qualquer comando (estritamente falando, pipeline, lista ou comando composto) sai com um status diferente de zero. Isso garante que os erros não se acumulem: assim que algo der errado, o script é interrompido.
Nos casos em que um comando no script pode falhar, a adição || true
garante que o comando composto resultante sempre saia com status zero, para que o script não seja interrompido. Por exemplo, remover um diretório não deve ser um erro fatal (impedir que um pacote seja removido); então nós usamos
rmdir ... || true
pois rmdir
não tem uma opção para dizer para ignorar erros.
||:
é outra maneira idiomática de escrever isso (:
sendo outra entrada na tabela embutida apontando paratrue
- mas garantida que é uma embutida mesmo de volta a Bourne; isto dito, para o POSIX sh,true
também é garantido que ela é embutida - por isso é mais concisão do que eficiência em tempos até remotamente modernos).