
openSUSEタンブルウィードは
test -s ~/.alias && . ~/.alias || true
その内容として~/.bashrc
。
の左側の部分を私が理解したところに|| true
よると
~/.alias
存在し、サイズが 0 より大きいかどうかを確認するチェックがあります。- 条件が満たされると、ファイルがソース化されます。
では、なぜ|| true
必要なのでしょうか?
GNU bash、バージョン 5.0.16(1) リリース (x86_64-suse-linux-gnu)
答え1
|| true
は、コマンドが失敗してもかまわないコンテキストで役立ちます。この特定のケースでは、 が~/.alias
存在しない場合は、test -s
ゼロ以外の終了コードで失敗しますが、それによって他の結果が生じることは望ましくありません。 は、|| true
完全なコマンド リスト (source を含む) が常に成功ステータスで終了することを保証します~/.alias
。
.bashrc
これは、 が含まれている場合に特に関連しますset -e
が、シェルの起動スクリプトでは珍しいことです。
これを別の書き方で書くと
if test -s ~/.alias; then . ~/.alias; fi
~/.alias
しかし、ソース取得によってエラーが発生した場合は、ゼロ以外の終了コードで終了します。
答え2
は、ゼロ以外のステータス (失敗) が返される|| true
場合でも、コマンド全体が「成功」ステータスを返すことを保証します。./.aliases
(エラー時に終了)を使用している場合に便利ですset -e
。