truetidak dibangun ke dalam shell Bourne. :selalu (itu adalah cara untuk memasukkan komentar sebelum #diperkenalkan).
Itu, dan karena itu lebih pendek untuk jenis mungkin adalah alasan utama orang memilih :lebih true.
Perhatikan perbedaan lain dalam shell POSIX (untuk bash, hanya dalam mode POSIX): sementara truebuiltin biasa (bahkan tidak harus builtin), :adalah builtin khusus . Itu memiliki beberapa implikasi, yang sebagian besar tidak mungkin berdampak pada kasus khusus ini:
Jika suatu :perintah gagal, termasuk karena pengalihan yang gagal, itu menyebabkan shell keluar. Dalam praktiknya, itu mungkin tidak akan membuat perbedaan kecuali Anda meneruskan pengalihan:
$ sh -c ': > / ; echo HERE'
sh: 1: cannot create /: Is a directory
$ sh -c 'true > /; echo HERE'
sh: 1: cannot create /: Is a directory
HERE
di var=value :, vartetap disetel ke valuesetelah :pengembalian, bukan dalam kasus true:
$ var=1; var=2 : ; echo "$var"
2
$ var=1; var=2 true; echo "$var"
1
Juga mencatat bahwa || truekarya-karya di kerang dari rcdan cshkeluarga tetapi tidak || :(tapi tidak untuk membatalkan set -edi csh).
|| :tidak sama dengan :. Ini berarti atau menjalankan :sebaliknya (yaitu, jika pipa sebelumnya gagal).
set -e
false
Akan menyebabkan shell keluar karena set -edan falsememiliki status keluar yang tidak nol (gagal). The set -eefek dibatalkan jika perintah yang kembali status exit non-nol digunakan sebagai kondisi seperti di:
if false; then ...
while false; do ...
false && : ...
false || : ...
false && :hanya membatalkan set -e. false || :membatalkan set -edan mengatur status keluar menjadi 0lebih idiomatis untuk mengatakan bahwa kami ingin mengabaikan kode keluar kegagalan perintah. Sebagian besar akan berpendapat bahwa || trueitu lebih terbaca (menyampaikan niat lebih jelas).
||:(tanpa ruang) juga berlaku di bash. Itu melakukan hal yang sama dengan|| :atau|| true.