এলিয় এর উত্তর দেওয়ার জন্য দুর্দান্ত কাজ করেছে তবে আমি " echo
বাশ প্রোগ্রাম থেকে আলাদা হওয়ার অন্য সংস্করণ কেন " অংশ সম্পর্কে মন্তব্য করতে চাই । এটাই ভুল প্রশ্ন।
সঠিক প্রশ্নটি হল: এটি কেন প্রথম স্থানে একটি বিল্টিন , যখন এটি পুরোপুরি সূক্ষ্ম বাহ্যিক আদেশ হতে পারে (এবং)?
সরলতার জন্য, ড্যাশের বিল্টিনগুলি একবার দেখুন, একটি পরিমাপ 38 (বাশের সাথে 61 এর তুলনা করা হয়েছে, এর আউটপুট দ্বারা যাচ্ছে compgen -b
):
. continue getopts readonly type
: echo hash return ulimit
[ eval jobs set umask
alias exec kill shift unalias
bg exit local test unset
break export printf times wait
cd false pwd trap
command fg read true
এগুলোর মধ্যে কত প্রয়োজন builtins হতে? [
, echo
, false
, printf
, pwd
, test
, এবং true
না প্রয়োজন builtins হতে: সেগুলিকে কিছু শুধুমাত্র একটি builtin কি করতে পারেন যে কি না (প্রভাব ফেলবে না অথবা শেল রাষ্ট্র যে বহিরাগত কমান্ড উপলব্ধ নয় প্রাপ্ত)। বাশের printf
কমপক্ষে বিল্টিন হওয়ার সুবিধা গ্রহণ করে: printf -v var
আউটপুটটিকে ভেরিয়েবলে সংরক্ষণ করে var
। time
ইন ব্যাশটিও বিশেষ: একটি কীওয়ার্ড হয়ে, আপনি বাশ-এ স্বেচ্ছাসেবক কমান্ড তালিকার সময় দিতে পারেন (ড্যাশের time
সমতুল্য থাকে না )। pwd
হয় বিল্টিন হওয়ার দরকার নেই - যে কোনও বহিরাগত কমান্ড চলমান ওয়ার্কিং ডিরেক্টরিটি উত্তরাধিকারী হতে চলেছে (এবং এটি বাহ্যিক কমান্ডও )।:
ব্যতিক্রম - আপনার একটি এনওপি দরকার, এবং :
এটি is বাকিগুলি এমন কোনও ক্রিয়া করে যা কোনও বাহ্যিক কমান্ড সহজেই করতে পারে।
সুতরাং, এই বিল্টিনগুলির একটি পঞ্চমাংশ বিল্টিনগুলি লাগবে না। তাহলে কেন? র manpage * আসলে ক্ষণস্থায়ী কেন builtins (জোর খনি) হয় ব্যাখ্যা করে:dash
Builtins
এই বিভাগটি অন্তর্নির্মিত কমান্ডগুলি তালিকাবদ্ধ করে যা সেগুলি বিল্ট ইন রয়েছে because
কিছু অপারেশন করা দরকার যা পৃথক দ্বারা সম্পাদন করা যায় না
প্রক্রিয়া। এগুলি ছাড়াও, আরও কয়েকটি কমান্ড রয়েছে যা হতে পারে
দক্ষতার জন্য বিল্টিন থাকুন (যেমন প্রিন্টফ (1), প্রতিধ্বনি (1), পরীক্ষা (1), ইত্যাদি)।
এটি এতটা সুন্দর: এই বিল্টিনগুলি সেখানে রয়েছে কারণ এগুলি প্রায়শই, ইন্টারেক্টিভ এবং স্ক্রিপ্টগুলিতে ব্যবহৃত হয় এবং তাদের কার্যকারিতা যথেষ্ট সহজ, যে শেলটি কাজটি করতে পারে। আর তাই হয়: কিছু (? অধিকাংশ) শাঁস কাজ গ্রহণ করেন ** ফিরে যান। থেকে 2.9 বাসদ , এবং আপনি একটি পাবে না builtin।sh
echo
সুতরাং, এটি সম্পূর্ণরূপে সম্ভব একটি ন্যূনতম শেল বিল্টিন হিসাবে এই জাতীয় কমান্ড প্রয়োগ করতে পারে না (যদিও আমি মনে করি না যে কোনও বর্তমান শেল এটি করে, যদিও)। জিএনইউ কোর্টিলস প্রকল্পটি ধরে নিচ্ছে না যে আপনি এগুলি একটি নির্দিষ্ট শেলের মধ্যে চালাচ্ছেন, এবং পসিক্স এই কমান্ডগুলির প্রয়োজন। সুতরাং, কোর্টিলগুলি যেভাবেই এগুলি সরবরাহ করে এবং শেলের বাইরে যার কোনও অর্থ নেই তাদের এড়িয়ে যায়।
* এটি আলমকুইস্ট শেলের জন্য সংশ্লিষ্ট ম্যানপেজ পাঠ্যের সাথে প্রায় অনুরূপ , যা ড্যাশ, ড্যাবিয়ান অ্যালকুইস্ট শেলটি ভিত্তিক।
** zsh
এই ধারণাটিকে চূড়ান্ত দিকে নিয়ে যায়: বিভিন্ন মডিউল লোড করে আপনি যে কমান্ডগুলি পেয়েছেন, যেমন zmv
, এমন কোনও জিনিস যা আপনি ভাবেন না যে কোনও শেল এমনকি intoুকতে হবে । এই মুহুর্তে, আসল প্রশ্নটি: আপনি কেন zsh এর পরিবর্তে বাশ ব্যবহার করবেন, যার মধ্যে এই সমস্ত বিল্টিন রয়েছে?