শেল স্ক্রিপ্টিং একটি সিস্যাডমিন ধরনের ভূমিকায় যে কারো জন্য একটি অপরিহার্য শৃঙ্খলা, এবং যে প্রধান শেলটিতে লোকেরা আজ স্ক্রিপ্ট লেখে তা হল ব্যাশ। প্রায় সমস্ত Linux ডিস্ট্রিবিউশন এবং আধুনিক MacOS সংস্করণে Bash ডিফল্ট হিসেবে আসে এবং শীঘ্রই এটি Windows টার্মিনালের একটি স্থানীয় অংশ হতে চলেছে। ব্যাশ, আপনি বলতে পারেন, সর্বত্র আছে।
তাহলে কিভাবে এটা এই বিন্দু পেতে? এই সপ্তাহের কমান্ড লাইন হিরোস পডকাস্ট সেই প্রশ্নে গভীরভাবে ডুব দেয় যারা কোড লিখেছেন তাদের জিজ্ঞাসা করে৷
এটি ইউনিক্স দিয়ে শুরু হয়েছিল
সমস্ত প্রোগ্রামিং জিনিসের মত, আমাদের ইউনিক্সে ফিরে যেতে হবে। একটি ছোট শেল ইতিহাস:1971 সালে, কেন থম্পসন প্রথম ইউনিক্স শেল-থম্পসন শেল প্রকাশ করেন। কিন্তু স্ক্রিপ্টিং ব্যবহারকারীরা যে পরিমাণ করতে পারে তার গুরুতর সীমাবদ্ধতা ছিল। এবং এর অর্থ অটোমেশনের জন্য গুরুতর সীমাবদ্ধতা এবং ফলস্বরূপ, আইটি অপারেশনের পুরো ক্ষেত্রের জন্য।
গবেষণার এই চমত্কার অংশটি স্ক্রিপ্টিংয়ের প্রাথমিক প্রচেষ্টার চ্যালেঞ্জগুলিকে রূপরেখা দেয় (হাইলাইট কমান্ডগুলিতে বোল্ড যুক্ত):
মাল্টিক্সে এর পূর্বসূরীর মতো, এই শেল (/bin/sh ) একটি স্বাধীন ব্যবহারকারী প্রোগ্রাম যা কার্নেলের বাইরে কার্যকর করা হয়েছিল। গ্লোবিং এর মত ধারণা (প্যারামিটার সম্প্রসারণের জন্য প্যাটার্ন ম্যাচিং, যেমন *.txt ) glob নামে একটি পৃথক ইউটিলিটিতে প্রয়োগ করা হয়েছিল , যেমন ছিল যদি শর্তসাপেক্ষ অভিব্যক্তি মূল্যায়ন করার আদেশ। এই বিচ্ছেদ শেলটিকে ছোট রাখে, সি উৎসের 900 লাইনের নিচে।
শেল পুনর্নির্দেশের জন্য একটি কমপ্যাক্ট সিনট্যাক্স প্রবর্তন করেছে (<> এবং >> ) এবং পাইপিং (| অথবা ^ ) যা আধুনিক শেলগুলিতে টিকে আছে। আপনি অনুক্রমিক কমান্ডগুলি (; সহ) আহ্বান করার জন্য সমর্থনও পেতে পারেন ) এবং অ্যাসিঙ্ক্রোনাস কমান্ড (& সহ )।
থম্পসনের শেলের কি অভাব ছিল তা হল স্ক্রিপ্ট করার ক্ষমতা। এটির একমাত্র উদ্দেশ্য ছিল একটি ইন্টারেক্টিভ শেল (কমান্ড ইন্টারপ্রেটার) হিসেবে কমান্ড আহ্বান করা এবং ফলাফল দেখা।
টার্মিনালগুলিতে অ্যাক্সেস বাড়ার সাথে সাথে অটোমেশনের আগ্রহও বেড়েছে।
বোর্ন শেল হল এক ধাপ এগিয়ে
থম্পসনের মুক্তির ছয় বছর পর, 1977 সালে, স্টিফেন বোর্ন বোর্ন শেল প্রকাশ করেন, যা থম্পসন শেলের স্ক্রিপ্টিং সীমাবদ্ধতা সমাধানের উদ্দেশ্যে ছিল। (1990 সাল থেকে বাশ ভাষার প্রাথমিক রক্ষণাবেক্ষণকারী চেট রামে, কমান্ড-লাইন হিরোসের এই পর্বে এটি নিয়ে আলোচনা করেছেন)। এটি ছিল ইউনিক্স সিস্টেমের অংশ হিসেবে বেল ল্যাব থেকে আসা প্রযুক্তির প্রাকৃতিক বিবর্তন।
বোর্ন ভিন্নভাবে কি করতে চেয়েছিলেন? গবেষক এম. জোন্স এটিকে ভালোভাবে তুলে ধরেছেন:
বোর্ন শেলটির দুটি প্রাথমিক লক্ষ্য ছিল:অপারেটিং সিস্টেমের জন্য এবং স্ক্রিপ্টিংয়ের জন্য (শেলের মাধ্যমে পুনরায় ব্যবহারযোগ্য স্ক্রিপ্টগুলি লেখার জন্য) ইন্টারেক্টিভভাবে কমান্ড চালানোর জন্য একটি কমান্ড ইন্টারপ্রেটার হিসাবে কাজ করা। থম্পসন শেল প্রতিস্থাপনের পাশাপাশি, বোর্ন শেল তার পূর্বসূরীদের তুলনায় বেশ কিছু সুবিধা প্রদান করে। বোর্ন নিয়ন্ত্রণ প্রবাহ, লুপ এবং ভেরিয়েবলগুলিকে স্ক্রিপ্টে প্রবর্তন করেছেন, অপারেটিং সিস্টেমের সাথে ইন্টারঅ্যাক্ট করার জন্য আরও কার্যকরী ভাষা প্রদান করেছে (উভয় ইন্টারেক্টিভ এবং অ ইন্টারঅ্যাক্টিভলি)। শেল আপনাকে শেল স্ক্রিপ্টগুলিকে ফিল্টার হিসাবে ব্যবহার করার অনুমতি দিয়েছে, সংকেত পরিচালনার জন্য সমন্বিত সমর্থন প্রদান করে, কিন্তু ফাংশনগুলি সংজ্ঞায়িত করার ক্ষমতার অভাব রয়েছে। অবশেষে, এটি একটি স্ক্রিপ্টের মধ্যে সংরক্ষিত স্ট্রিং লিটারেল এম্বেড করার জন্য কমান্ড প্রতিস্থাপন (ব্যাক কোট ব্যবহার করে) এবং এখানে নথি সহ আমরা আজ ব্যবহার করি এমন অনেকগুলি বৈশিষ্ট্য অন্তর্ভুক্ত করেছে৷
বোর্ন, পূর্ববর্তী একটি সাক্ষাত্কারে, এটি এভাবে বর্ণনা করেছেন:
আসল শেলটি আসলে একটি ভাষা ছিল না; এটি একটি রেকর্ডিং ছিল - একটি ফাইল থেকে কমান্ডের একটি রৈখিক ক্রম নির্বাহ করার একটি উপায়, একমাত্র নিয়ন্ত্রণ প্রবাহ আদিম একটি লেবেল যান৷ কেন থম্পসন যে মূল শেল লিখেছিলেন তার এই সীমাবদ্ধতাগুলি উল্লেখযোগ্য ছিল। আপনি, উদাহরণস্বরূপ, একটি ফিল্টার হিসাবে সহজেই একটি কমান্ড স্ক্রিপ্ট ব্যবহার করতে পারবেন না কারণ কমান্ড ফাইলটি নিজেই স্ট্যান্ডার্ড ইনপুট ছিল। এবং একটি ফিল্টারে, স্ট্যান্ডার্ড ইনপুট হল যা আপনি আপনার প্যারেন্ট প্রসেস থেকে উত্তরাধিকার সূত্রে পান, কমান্ড ফাইল থেকে নয়।
আসল শেলটি সহজ ছিল কিন্তু, যেহেতু লোকেরা অ্যাপ্লিকেশন ডেভেলপমেন্ট এবং স্ক্রিপ্টিংয়ের জন্য ইউনিক্স ব্যবহার করা শুরু করেছিল, এটি খুব সীমিত ছিল। এটির ভেরিয়েবল ছিল না, এটির নিয়ন্ত্রণ প্রবাহ ছিল না এবং এটির খুব অপর্যাপ্ত উদ্ধৃতি ক্ষমতা ছিল৷
এই নতুন শেলটি স্ক্রিপ্টারের জন্য একটি বিশাল পদক্ষেপ ছিল, কিন্তু শুধুমাত্র যদি আপনি এটিতে অ্যাক্সেস করতেন।
মুক্ত সফ্টওয়্যার হিসাবে বোর্নের শেল পুনর্বিবেচনা
তখন পর্যন্ত, প্রভাবশালী শেলগুলি ছিল মালিকানাধীন সফ্টওয়্যার যা বেল ল্যাবসের মালিকানাধীন এবং পরিচালিত ছিল। আপনি যদি যথেষ্ট ভাগ্যবান হন তবে আপনার বিশ্ববিদ্যালয়ের একটি ইউনিক্স শেল অ্যাক্সেস থাকতে পারে। কিন্তু সেই সীমাবদ্ধ অ্যাক্সেস বিশ্ব থেকে অনেক দূরে ছিল যা ফ্রি সফটওয়্যার ফাউন্ডেশন (FSF) অর্জন করতে চেয়েছিল।
রিচার্ড স্টলম্যান এবং সমমনা ডেভেলপারদের একটি গ্রুপ GNU লাইসেন্সের অধীনে অবাধে পাওয়া যায় এমন একটি লাইসেন্স দিয়ে Unix-এর সমস্ত বৈশিষ্ট্য লিখছিল। এই বিকাশকারীদের মধ্যে একজনকে শেল তৈরির দায়িত্ব দেওয়া হয়েছিল। সেই বিকাশকারী ছিলেন ব্রায়ান ফক্স। এবং তিনি যেভাবে তার কাজ সম্পর্কে কথা বলেন তা আমাকে পুরোপুরি মুগ্ধ করে। তিনি যেমন পডকাস্টে বলেছেন:
এটি এত চ্যালেঞ্জিং হওয়ার কারণ ছিল যে আমাদের বিশ্বস্ততার সাথে বোর্ন শেলের সমস্ত আচরণ অনুকরণ করতে হয়েছিল, একই সাথে এটিকে মানুষের ব্যবহারের জন্য একটি আরও ভাল হাতিয়ার করার জন্য এটিকে প্রসারিত করার অনুমতি দেওয়া হয়েছিল৷
এটি এমন একটি সময়েও ছিল যখন লোকেরা শেল স্ট্যান্ডার্ড বলতে কী বোঝায় তা নিয়ে আলোচনা করছিল। এই ইতিহাসের পটভূমিতে এবং অগ্রভাগে প্রতিযোগিতার সাথে, জনপ্রিয় বোর্ন শেলকে নতুন করে কল্পনা করা হয়েছিল; আবার জন্ম।
শেল, বোর্ন-আগেইন
এই দুটি অনুঘটক-মুক্ত সফ্টওয়্যার মিশন এবং প্রতিযোগিতা-বোর্ন-আগেইন শেলকে (ব্যাশ) জীবন্ত করে তুলেছে। সেই সময়ের জন্য একটি অস্বাভাবিক পদক্ষেপে, ফক্স তার শেলটির নাম নিজের নামে রাখেননি এবং তিনি ইউনিক্স থেকে বিনামূল্যে সফ্টওয়্যার পর্যন্ত বিবর্তনের দিকে মনোনিবেশ করেছিলেন। (যদিও ফক্স শেল ফিশ শেলকে fsh কমান্ড #missedopportunity-এ পরাজিত করতে পারত)। এই নামকরণের পছন্দটি তার ব্যক্তিত্বের সাথে মিলিত বলে মনে হচ্ছে। ফক্স যেমন পর্বে বলেছেন, তিনি ব্যক্তিগত গৌরবের উপলব্ধিতেও আগ্রহী ছিলেন না; তিনি প্রোগ্রামিং সংস্কৃতির বিকাশে সাহায্য করার চেষ্টা করেছিলেন। তিনি অবশ্য ভালো শ্লেষের উপরে ছিলেন না।
এটা শুনে ভালো লাগলো যে বোর্ন শব্দের উপর নাটকটি দেখে অপছন্দ বোধ করেননি। বোর্ন একটি গল্প বলে যখন কেউ তার কাছে চলে আসে এবং একটি কনফারেন্সে তাকে একটি ব্যাশ টি-শার্ট দেয়। সেই ব্যক্তি ছিলেন ব্রায়ান ফক্স।
শেল | মুক্ত করা হয়েছে | স্রষ্টা |
---|---|---|
থম্পসন শেল | 1971 | কেন থম্পসন |
বোর্ন শেল | 1977 | স্টিফেন বোর্ন |
বোর্ন-আগেইন শেল | 1989 | ব্রায়ান ফক্স |
সময়ের সাথে সাথে, বাশ দত্তক নেওয়ার ক্ষেত্রে বেড়েছে। অন্যান্য প্রকৌশলীরা এটি ব্যবহার শুরু করে এবং এর ডিজাইনে উন্নতি জমা দেয়। প্রকৃতপক্ষে, কয়েক বছর পরে, ফক্স জোর দিয়েছিলেন যে বাশের নিয়ন্ত্রণ ছেড়ে দিতে শেখা ছিল তার জীবনের সবচেয়ে গুরুত্বপূর্ণ জিনিসগুলির মধ্যে একটি। যেহেতু ইউনিক্স লিনাক্স এবং ওপেন সোর্স সফ্টওয়্যার আন্দোলনের পথ দিয়েছিল, ব্যাশ একটি ওপেন সোর্স বিশ্বে মূল স্ক্রিপ্টিং শক্তিতে পরিণত হয়েছিল। মহান প্রকল্পগুলি একক ব্যক্তির দৃষ্টিভঙ্গির বাইরে বেড়েছে বলে মনে হচ্ছে৷
শেলস থেকে আমরা কী শিখতে পারি?
একটি শেল এমন একটি প্রযুক্তি যা প্রতিদিনের ল্যাপটপ ব্যবহারের জন্য এতটাই অবিচ্ছেদ্য যে এটির প্রয়োজনীয় উদ্ভাবন ভুলে যাওয়া সহজ। থম্পসন থেকে বোর্ন থেকে ব্যাশ শেল যাওয়ার গল্পটি কিছু পরিচিত উপায় আঁকে:
- অনুপ্রাণিত ব্যক্তিরা সঠিক মিশনের কথা মাথায় রেখে দুর্দান্ত অগ্রগতি করতে পারে।
- আজ আমরা যা নির্ভর করি তার বেশিরভাগই আমাদের শিল্পে জীবিত কিংবদন্তিদের কাজের উপর নির্মিত।
- যে সফ্টওয়্যারগুলি বেঁচে থাকার প্রবণতা রাখে সেগুলিই তাদের আসল নির্মাতাদের দৃষ্টির বাইরে বিকশিত হয়৷
কমান্ড লাইন হিরোস সমস্ত সিজন 3 এর জন্য প্রোগ্রামিং ভাষাগুলি কভার করেছে এবং এর সমাপ্তির দিকে এগিয়ে যাচ্ছে। প্রোগ্রামিং ভাষার উৎপত্তি সম্পর্কে আপনি যা জানতে চান তা শিখতে সাবস্ক্রাইব করতে ভুলবেন না, এবং নীচের মন্তব্যে আপনার শেল গল্পগুলি শুনতে আমি পছন্দ করব।