ঐতিহাসিকভাবে , বোর্ন শাঁস ছিল না true
এবং false
যেমন বিল্ট-ইন কমান্ড। true
পরিবর্তে কেবল ওরফে হয়েছিল :
, এবং false
ভালো কিছু করার জন্য let 0
।
:
true
প্রাচীন বোর্ন-উত্পন্ন শেলগুলির বহনযোগ্যতার তুলনায় কিছুটা ভাল । একটি সাধারণ উদাহরণ হিসাবে, !
পাইপলাইন অপারেটর বা ||
তালিকার অপারেটর না হওয়ার বিষয়টি বিবেচনা করুন (যেমন কিছু প্রাচীন বোর্ন শেলগুলির ক্ষেত্রে ছিল)। এটি প্রস্থান স্থিতির উপর ভিত্তি করে শাখার একমাত্র মাধ্যম হিসাবে বিবৃতিটির else
ধারাটিকে ছেড়ে দেয় if
:
if command; then :; else ...; fi
যেহেতু if
একটি খালি then
শৃঙ্খলা আবশ্যক এবং মন্তব্যগুলি খালি শূন্য হিসাবে গণনা করা হয় না, তাই :
কোনও অপ-অফ হিসাবে কাজ করে।
আজকাল (এটি: একটি আধুনিক প্রসঙ্গে) আপনি সাধারণত হয় :
বা হয় ব্যবহার করতে পারেন true
। উভয়ই পসিএক্স দ্বারা নির্দিষ্ট করা হয়েছে এবং কিছু true
পড়তে সহজ মনে করে। তবে এক আকর্ষণীয় পার্থক্য হল: :
একটি তথাকথিত POSIX হয় বিল্ট-ইন বিশেষ , যেহেতু true
একটি হল নিয়মিত বিল্ট-ইন ।
শেলটিতে বিশেষ বিল্ট-ইনগুলি তৈরি করা প্রয়োজন; নিয়মিত বিল্ট-ইনগুলি কেবল "সাধারণত" অন্তর্নির্মিত থাকে তবে এটির কঠোর গ্যারান্টি নেই। বেশিরভাগ সিস্টেমে PATH এর :
কার্যকারিতা সহ একটি নিয়মিত প্রোগ্রাম হওয়া উচিত নয় true
।
সম্ভবত সবচেয়ে গুরুত্বপূর্ণ পার্থক্যটি হ'ল বিশেষ বিল্ট-ইনগুলির সাথে, বিল্ট-ইন দ্বারা নির্ধারিত কোনও পরিবর্তনশীল - এমনকি সাধারণ কমান্ড মূল্যায়নের সময় পরিবেশে - কমান্ডটি সম্পূর্ণ হওয়ার পরেও স্থির থাকে, যেমন এখানে ksh93 ব্যবহার করে প্রদর্শিত হয়েছে:
$ unset x; ( x=hi :; echo "$x" )
hi
$ ( x=hi true; echo "$x" )
$
নোট করুন যে জেএসএস এই প্রয়োজনীয়তাটিকে উপেক্ষা করে, জিএনইউ বাশ যেমন পসিক্স সামঞ্জস্যতা মোডে পরিচালনা করার সময় বাদ দেয়, তবে অন্যান্য সমস্ত বড় "পসিক্স ডেরাইভড" শেল এটি ড্যাশ, কেএস ৯৩, এবং ম্যাক্স সহ পর্যবেক্ষণ করে।
আর একটি পার্থক্য হ'ল নিয়মিত বিল্ট-ইনগুলি অবশ্যই সামঞ্জস্যপূর্ণ exec
- বাশ ব্যবহার করে এখানে প্রদর্শিত হবে:
$ ( exec : )
-bash: exec: :: not found
$ ( exec true )
$
পসিক্সও স্পষ্টভাবে নোট করে যা এর :
চেয়ে দ্রুততর হতে পারে true
যদিও এটি অবশ্যই একটি বাস্তবায়ন-নির্দিষ্ট বিশদ।