trueबॉर्न शेल में नहीं बनाया गया था। :हमेशा था (यह #शुरू करने से पहले टिप्पणी दर्ज करने का तरीका था)।
यह, और क्योंकि यह टाइप करने के लिए छोटा है, शायद लोगों द्वारा पसंद किए :जाने का मुख्य कारण है 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अधिक सुपाठ्य है (इरादे को और अधिक स्पष्ट रूप से बताता है)।
||:(बिना स्थान के) भी बाश में मान्य है। यह वही काम करता है जो|| :या|| true।