: এবং সত্য এর মধ্যে পার্থক্য কী?


15

ইন bash:

$ type :
: is a shell builtin
$ type true
true is a shell builtin

দেখে মনে হচ্ছে তারা একই, তবে তারা একই সিস্টেমের ট্রেস দেয় না:

$ strace :
strace: :: command not found
$ strace true
execve("/bin/true", ["true"], [/* 82 vars */]) = 0
[snip]
exit_group(0)                           = ?

আমি আলাদা করার চেষ্টা করেছি strace bash -c : 2>:.txtএবং strace bash -c true 2>true.txtমেমরির অবস্থানগুলি বাদ দিয়ে তাদের মধ্যে কোনও পার্থক্য খুঁজে পাইনি।

ইন dash:

$ type :
: is a special shell builtin
$ type true
true is a shell builtin

ঠিক আছে, তাই তারা একই হয় না। help :এবং help trueখুব দরকারী নয়, এবং তারা একই আসতে bashএবং dash:তিনটি বাইট সাশ্রয় করে এবং স্ক্রিপ্টগুলি কম পাঠযোগ্য করে তোলে সেগুলি বাদ দিয়ে তাদের মধ্যে কি কোনও ব্যবহারিক পার্থক্য রয়েছে ?


উত্তর:


27

আচরণে আসল কোনও পার্থক্য নেই। উভয় কমান্ড কিছুই করে না এবং একটি সফল স্থিতি সহ প্রস্থান করে। :কিছু না করার উপর জোর দেয়; trueসফল অবস্থা জোর দেয়।

strace trueকাজ করে কারণ trueউভয় শেল অন্তর্নির্মিত এবং বাহ্যিক কমান্ড ( /bin/true); :এটি কেবল একটি শেল বিল্টিন (এটি কোনও নেই /bin/:- যদিও সেখানে থাকতে পারে, এবং সম্ভবত খুব পুরানো ইউনিক্স সিস্টেমে ছিল)। ব্যাশে, চেষ্টা করুন

type -a :
type -a true

উভয়ের যে কারণ রয়েছে তা historicalতিহাসিক। যদি আমি সঠিকভাবে স্মরণ করি তবে খুব প্রাথমিক শেলগুলির কোনও মন্তব্য বাক্য গঠন :ছিল না, তার পরিবর্তে ড -কিছুই করার আদেশ ব্যবহার করা হয়নি।

এর মধ্যে কিছুটা অভ্যন্তরীণ পার্থক্য রয়েছে dash। উত্সটি দেখে, গিটটিতে উপলব্ধ: //git.kernel.org/pub/scm/utils/dash/dash.git, এতে কিছু আলাদা কোড পাথ দেখায় eval.c, তবে আমি অন্য কোনও দৃশ্যমান ভিন্ন আচরণ তৈরি করতে সক্ষম হইনি specialআউটপুট শব্দের চেয়ে type :


8
উপরন্তু, ইউনিক্স প্রাথমিক ভার্সন ছিল না /bin/trueবা /bin/false। এছাড়াও :কমান্ড কখনও কখনও যুক্তি প্রক্রিয়াকরণ পার্শ্ব প্রতিক্রিয়া জন্য ব্যবহার করা হয়: : ${num_times:=10}
আর্জেজ

5
:ছিল মূলত একটি লেবেল সূচকটি , বোর্ন শেল যে ছিল একজন পূর্বপুরুষ ফিরে goto। দৃশ্যত :একটি মন্তব্য সূচক হিসাবে আপত্তিজনক এবং আটকে ছিল।
গিলস 23'40

1
:গোটোর জন্য লেবেল সূচক হিসাবে আচরণটি মাইক্রোসফ্টের সিউডো-ইউনিক্স কমান্ড লাইন ক্লোনায় সংরক্ষিত ছিল command.comএবং লাইন মন্তব্যের জন্য cmd.exeঅপব্যবহারের অনুশীলন হিসাবে এটি তার উত্তরসূরি হিসাবে রয়েছে ::
সরপিগল

8

তারা বাশে অভিন্ন। এ builtins/colon.defব্যাশ-4.2 সোর্স কোডে।

আপনার কমান্ডে strace trueআপনি বাস্তবে /bin/trueঅন্তর্নির্মিত সত্যের পরিবর্তে বাইনারি চালাচ্ছেন ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.