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
但如果采购导致错误,则会以非零退出代码退出。
答案2
确保|| true
整个命令返回“成功”状态,即使./.aliases
返回非零(失败)状态。
如果您正在使用set -e
(出错时退出),这会很方便。