cd
শেল বিল্টিন হওয়ার পাশাপাশি, পসিক্স কমপ্লায়েন্ট ওএসেও একটি প্রোগ্রাম । তাদের অবশ্যই নিয়মিত ইউটিলিটির জন্য স্বতন্ত্র এক্সিকিউটেবলগুলি সরবরাহ করতে হবেcd
। এটি উদাহরণস্বরূপ সোলারিস , এআইএক্স , এইচপি-ইউএক্স এবং ওএস এক্স এর ক্ষেত্রে ।
স্পষ্টতই, একটি বিল্টিন cd
এখনও বাধ্যতামূলক কারণ এর বাহ্যিক প্রয়োগটি বর্তমান শেল ডিরেক্টরিটি পরিবর্তন করে না। তবে, পরবর্তীকালে এখনও দরকারী হতে পারে। এই cd
আদেশটি কীভাবে ব্যবহার করা যেতে পারে তা POSIX কীভাবে কল্পনা করে তা দেখানোর একটি উদাহরণ এখানে দেওয়া হয়েছে :
find . -type d -exec cd {} \;
একটি POSIX সিস্টেমে, এটা oneliner সব ডিরেক্টরি আপনি অনুমতি দেওয়া হয় না জন্য একটি ত্রুটির বার্তা রিপোর্ট হবে cd
সবচেয়ে জিএনইউ / লিনাক্স ডিস্ট্রিবিউশন, এটি যে ত্রুটির বার্তা যদিও সঙ্গে ব্যর্থ।
find: `cd': No such file or directory
এবং এখানে আপনার প্রশ্নের উত্তর, " সিডি কেন প্রোগ্রাম নয়? " মূল ইউনিক্স সহ-লেখকের একজন author খুব শীঘ্রই ইউনিক্স বাস্তবায়নের সময়, cd
( chdir
সেই সময়ে বানানটি ) ছিল একটি বাহ্যিক প্রোগ্রাম। এটি fork
প্রথম প্রয়োগ হওয়ার পরে অপ্রত্যাশিতভাবে কাজ করা বন্ধ করে দিয়েছে ।
ডেনিস রিচি উদ্ধৃত :
আমাদের আনন্দের মাঝে, আবিষ্কার করা গেল যে chdir (বর্তমান ডিরেক্টরি পরিবর্তন করুন) কমান্ড কাজ করা বন্ধ করে দিয়েছে। কাঁটা সংযোজন কীভাবে chdir কলটি ভেঙে ফেলতে পারে সে সম্পর্কে কোড এবং উদ্বিগ্ন অন্তঃকরণের বিষয়ে প্রচুর পড়া ছিল। অবশেষে সত্যটি ডেকে উঠল: পুরানো সিস্টেমে চিডির ছিল একটি সাধারণ আদেশ; এটি টার্মিনালের সাথে সংযুক্ত (অনন্য) প্রক্রিয়াটির বর্তমান ডিরেক্টরিটি সামঞ্জস্য করে। নতুন সিস্টেমের অধীনে, chdir কমান্ডটি কার্যকর করার জন্য নির্মিত প্রক্রিয়ার বর্তমান ডিরেক্টরিকে সঠিকভাবে পরিবর্তন করেছে, তবে এই প্রক্রিয়াটি তাত্ক্ষণিকভাবে বন্ধ হয়ে যায় এবং এর পিতামাতার শেলের উপর তার কোনও প্রভাব পড়েনি! শেলটির অভ্যন্তরে অভ্যন্তরীণভাবে কার্যকর করা একটি বিশেষ কমান্ড chdir করা দরকার ছিল। দেখা যাচ্ছে যে বেশ কয়েকটি কমান্ড-মতো ফাংশনগুলির একই সম্পত্তি রয়েছে, উদাহরণস্বরূপ লগইন।
উত্স: ডেনিস এম রিচি, " ইউনিক্স টাইম শেয়ারিং সিস্টেমের বিবর্তন ", এটিএন্ডটি বেল ল্যাবরেটরিজ টেকনিক্যাল জার্নাল 63৩ ()), পার্ট ২, অক্টোবর, ১৯৮৪, পিপি। ১৫5–-৯৩
ইউনিক্স সংস্করণ 1 (মার্চ 1971) chdir ম্যানুয়াল পৃষ্ঠাতে বলা হয়েছে:
যেহেতু প্রতিটি কমান্ড কার্যকর করতে একটি নতুন প্রক্রিয়া তৈরি করা হয়েছে, chdir অকার্যকর হবে যদি এটি একটি সাধারণ কমান্ড হিসাবে লেখা থাকে। এটি শেল দ্বারা স্বীকৃত এবং কার্যকর করা হয়েছে।