Tumbleweed 的 .bashrc 中“|| true”的用途是什么?

Tumbleweed 的 .bashrc 中“|| true”的用途是什么?

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确保完整的命令列表(包括 source ~/.alias)始终以成功状态退出。

.bashrc如果包含,这将特别相关set -e,尽管这对于 shell 启动脚本来说是不常见的。

另一种写法是

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

~/.alias但如果采购导致错误,则会以非零退出代码退出。

也可以看看为什么模式“command || true”有用?

答案2

确保|| true整个命令返回“成功”状态,即使./.aliases返回非零(失败)状态。

如果您正在使用set -e(出错时退出),这会很方便。

相关内容