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(出錯時退出),這會很方便。

相關內容