trueBourneシェルには組み込まれていません。:常にそうでした(#紹介される前にコメントを入力する方法でした)。
それは型に短いですので、それは、おそらく人々が好む主な理由である:以上true。
(のためのPOSIXシェル内の別の違いに注意してくださいbashだけでPOSIXモードでは、):ながらtrue、通常の組み込みは、(たとえ組み込みである必要はありません)で、:ある特殊な組み込み。これにはいくつかの意味がありますが、この特定のケースではほとんどの場合影響がありません。
場合は:、コマンドが失敗したためにリダイレクトを含めて、失敗し、それが終了し、シェルの原因となります。実際には、リダイレクトを渡さない限り、おそらく違いはありません:
$ sh -c ': > / ; echo HERE'
sh: 1: cannot create /: Is a directory
$ sh -c 'true > /; echo HERE'
sh: 1: cannot create /: Is a directory
HERE
でvar=value :、varに設定されたままvalueの後に:戻り、ない場合にはtrue:
$ var=1; var=2 : ; echo "$var"
2
$ var=1; var=2 true; echo "$var"
1
また、ノート|| trueのシェルで動作rcし、csh家族ではなく|| :(ただし、キャンセルしないset -eでcsh)。
|| :はと同じではありません:。別の方法(つまり、前のパイプラインが失敗した場合)を意味または実行し:ます。
set -e
false
理由の終了にシェルを引き起こすset -eとfalse非ゼロ(失敗)終了ステータスを持っています。set -e効果がキャンセルされる場合はリターンゼロ以外の終了ステータスとして使用されていることコマンド状態のように:
if false; then ...
while false; do ...
false && : ...
false || : ...
false && :キャンセルのみset -e。終了ステータスをfalse || :キャンセルset -eして設定する0ので、コマンドの失敗終了コードを無視したいというのが、より慣用的です。ほとんどの人はそれ|| trueがより読みやすいと主張するだろう(意図をより明確に伝える)。
||:(スペースなしで)bashでも有効であることに注意してください。|| :またはと同じことを行い|| trueます。