Каково назначение «|| true» в .bashrc Tumbleweed?

Каково назначение «|| true» в .bashrc Tumbleweed?

openSUSE Tumbleweed имеет

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

как и его содержимое ~/.bashrc.

Насколько я понимаю, часть слева || trueтакова:

  • есть проверка на ~/.aliasсуществование и размер больше нуля.
  • и, если условия соблюдены, файл загружается.

Так зачем это || trueнужно?


GNU bash, версия 5.0.16(1)-релиз (x86_64-suse-linux-gnu)

решение1

|| trueполезно в контекстах, где нас не волнует, завершится ли команда неудачей; в этом конкретном случае, если ~/.aliasне существует, test -sпроизойдет сбой с ненулевым кодом завершения, но мы не хотим, чтобы это имело какие-либо другие последствия. || trueгарантирует, что полный список команд (включая sourcing ~/.alias) всегда завершается с успешным статусом.

Это было бы особенно актуально, если бы .bashrcбыл включен set -e, хотя это было бы необычно для сценария запуска оболочки.

Другой способ написать это:

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

но это приведет к выходу с ненулевым кодом выхода, если источник ~/.aliasвызовет ошибку.

Смотрите такжеЧем полезен шаблон «команда || true»?

решение2

Гарантирует || true, что вся команда возвращает статус «Успешно», даже если ./.aliasesвозвращает ненулевой статус (Неудача).

Удобно, если вы используете set -e(выход при ошибке).

Связанный контент