Was ist der Zweck von „|| true“ in Tumbleweeds .bashrc?

Was ist der Zweck von „|| true“ in Tumbleweeds .bashrc?

openSUSE Tumbleweed hat

test -s ~/.alias && . ~/.alias || true

als Inhalt seiner ~/.bashrc.

So wie ich den Teil links davon verstehe || true,

  • Es wird geprüft, ob ~/.aliases vorhanden ist und eine Größe größer als Null hat.
  • Wenn die Bedingungen erfüllt sind, wird die Datei als Quelle angegeben.

Warum ist das also || truenotwendig?


GNU Bash, Version 5.0.16(1)-Release (x86_64-suse-linux-gnu)

Antwort1

|| trueist in Kontexten nützlich, in denen es uns egal ist, ob der Befehl fehlschlägt. In diesem speziellen Fall schlägt „if ~/.aliasnot exist“ test -smit einem Exit-Code ungleich Null fehl, aber wir möchten nicht, dass dies andere Konsequenzen hat. || truestellt sicher, dass die vollständige Befehlsliste (einschließlich „sourcing“ ~/.alias) immer mit einem erfolgreichen Status beendet wird.

Dies wäre insbesondere dann relevant, wenn .bashrcenthalten wäre set -e, obwohl das für ein Shell-Startskript ungewöhnlich wäre.

Eine andere Möglichkeit, dies zu schreiben, wäre

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

Dies würde jedoch mit einem Exit-Code ungleich Null beendet, wenn durch die Beschaffung ~/.aliasein Fehler verursacht wurde.

Siehe auchWarum ist das Muster „Befehl || true“ nützlich?

Antwort2

Dadurch || truewird sichergestellt, dass der gesamte Befehl den Status „Erfolgreich“ zurückgibt, auch wenn ./.aliasesder Status ungleich Null (Fehler) zurückgegeben wird.

set -ePraktisch, wenn Sie (Beenden bei Fehler) verwenden .

verwandte Informationen