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