কম্পিউটার টিউটোরিয়াল

বাশ কীভাবে সিস্টেম অ্যাডমিনদের ডিফল্ট শেল হলো: ইতিহাস ও বিবর্তন

শেল স্ক্রিপ্টিং সিস্টেম অ্যাডমিন টাইপের ভূমিকার যেকোনো কার্যকারীর জন্য অপরিহার্য একটি অনুশীলন, এবং আজকাল ск्रিপ্ট লিখতে প্রominant শেল হলো বাশ। বাশ প্রায় সব লিনাক্স ডিস্ট্রিবিউশন এবং আধুনিক MacOS ভার্সনে ডিফল্ট হিসেবে আসে এবং শীঘ্রই উইন্ডোজ টার্মিন্যালের নেটিভ অংশ হওয়ার কথা। বাশ, আপনি বলতে পারেন, সব জায়গায় আছে।

তো এটি এই পর্যায়ে কীভাবে পৌঁছেছে? এই সপ্তাহের Command Line Heroes পডকাস্ট এই প্রশ্নে গভীরে যেতে চেয়েছে কোড লেখা লোকেদের থেকে পূঝে।

ইউনিক্স থেকে শুরু হয়েছিল

সকল প্রোগ্রামিং জিনিসের মত, আমাদের ইউনিক্স-এ ফিরে যেতে হবে। একটু শেল ইতিহাস: ১৯৭১ সালে, কেন থম্পসন প্রথম ইউনিক্স শেল রিলিজ করেন—থম্পসন শেল। কিন্তু ব্যবহারকারীদের স্ক্রিপ্টিং করার পরিমাণে সীমাবদ্ধতা ছিল সেরিয়াস। এবং এর মানে অটোমেশন এবং পরিণামত:, পুরো আইটি অপারেশন ফিল্ডের জন্য সেরিয়াস সীমাবদ্ধতা।

এই চমৎকার রিসার্চটি প্রারম্ভিক স্ক্রিপ্টিংয়ের চ্যালেঞ্জগুলো আউটলাইন করে (বোল্ড করা হয়েছে কমান্ডগুলো হাইলাইট করার জন্য):

মাল্টিক্স-এ এর প্রিডিসেসরের মত, এই শেল (/bin/sh) একটি স্বতন্ত্র ইউজার প্রোগ্রাম যা কার্নেলের বাইরে এক্সিকিউট হতো। গ্লবিং (প্যাটার্ন ম্যাচিং প্যারামিটার এক্সপ্যানশনের জন্য, যেমন *.txt) কনসেপ্ট একটি আলাদা ইউটিলিটি glob-এ ইমপ্লিমেন্ট করা হয়েছিল, যেমন if কমান্ড কন্ডিশনাল এক্সপ্রেশন ইভ্যালুয়েট করার জন্য। এই পৃথকতা শেলকে ছোট রাখে, ৯০০ লাইন সি সোর্সের নিচে।

শেল একটি কম্প্যাক্ট সিনট্যাক্স রিডাইরেকশন (< > এবং >>) এবং পাইপিং (| বা ^) এর জন্য ইম্প্লিমেন্ট করেছিল যা আধুনিক শেলগুলোতে বachy দিয়ে আছে। আপনি সিকোয়েনশাল কমান্ড আহ্বান ( ; দিয়ে) এবং অ্যাসিনক্রোনাস কমান্ড ( & দিয়ে) সাপোর্টও পাবেন।

থম্পসন শেলে যা নেই তা হলো স্ক্রিপ্টিং করার ক্ষমতা। এর একমাত্র উদ্দেশ্য ছিল ইন্টারেক্টিভ শেল (কমান্ড ইন্টারপ্রিটার) হিসেবে কমান্ড আহ্বান করা এবং ফলাফল দেখা।

টার্মিনাল অ্যাক্সেস বাড়ার সাথে সাথে, অটোমেশনে আগ্রহও সাথে সাথে বেড়ে গেল।

বোর্ন শেল একটি ধাপ সামনে

থম্পসন রিলিজের ছয় বছর পর, ১৯৭৭ সালে, স্টিফেন বোর্ন বোর্ন শেল রিলিজ করেন, যা থম্পসন শেলের স্ক্রিপ্টিং সীমাবদ্ধতা সমাধান করার জন্য বানানো হয়েছিল। (চেট রেমি, ১৯৯০ থেকে বাশ ল্যাঙ্গুয়েজের প্রাইমারি মেইনটেইনার, এটি এই Command-Line Heroes পডকাস্টের পর্বে আলোচনা করেছেন)। এটি বেল ল্যাবস থেকে ইউনিক্স সিস্টেমের অংশ হিসেবে টেকনোলজি এর প্রাকৃতিক বিবর্তন ছিল।

বোর্ন কী আলাদা করতে চেয়েছিলেন? রিসার্চার এম. জোন্স খুব ভালো আউটলাইন করেছেন:

বোর্ন শেলের দুটি প্রাইমারি গোল ছিল: অপারেটিং সিস্টেমের জন্য ইন্টারেক্টিভলি কমান্ড এক্সিকিউট করার জন্য একটি কমান্ড ইন্টারপ্রিটার হিসেবে সার্ভ করা এবং স্ক্রিপ্টিং (রিযুজেবল স্ক্রিপ্ট লিখা যা শেল দিয়ে আহ্বান করা যায়)। থম্পসন শেলকে রিপ্লেস করার পাশাপাশি, বোর্ন শেল এর প্রিডিসেসর চেয়ে কিছু সুবিধা অফার করেছিল। বোর্ন কন্ট্রোল ফ্লো, লুপ, এবং ভেরিয়েবল স্ক্রিপ্টে ইম্প্লিমেন্ট করেছিলেন, অপারেটিং সিস্টেমের সাথে ইন্টারঅ্যাক্ট করার জন্য একটি আরও ফাংশনাল ল্যাঙ্গুয়েজ দিয়ে (ইন্টারেক্টিভলি এবং নন-ইন্টারেক্টিভলি)। শেলটি শেল স্ক্রিপ্টকে ফিল্টার হিসেবে ব্যবহার করার অনুমতি দিতো, সিগন্যাল হ্যান্ডলিং-এর ইন্টিগ্রেটেড সাপোর্ট দিয়ে, কিন্তু ফাংশন ডিফাইন করার ক্ষমতা ছিল না। চূড়ান্তভাবে, এটি আজ আমরা যেসব ফিচার ব্যবহার করি সেগুলো অন্তর্ভুক্ত করেছিল, কমান্ড সাবস্টিটিউশন (ব্যাক কোট ব্যবহার করে) এবং HERE ডকুমেন্ট স্ক্রিপ্টের ভিতরে প্রিজার্ভড স্ট্রিং লিটারেল এম্বেড করার জন্য।

বোর্ন, একটি আগের ইন্টারভিউতে, এটিকে এইভাবে বর্ণনা করেছেন:

মূল শেলটি আসলে একটি ল্যাঙ্গুয়েজ নয়; এটি একটি রেকর্ডিং—একটি ফাইল থেকে কমান্ডের একটি লিনিয়ার সিকোয়েন্স এক্সিকিউট করার একটি উপায়, একমাত্র কন্ট্রোল ফ্লো প্রিমিটিভ হলো GOTO একটি লেবেল। কেন থম্পসন লিখা মূল শেলের এই সীমাবদ্ধতাগুলো সিগনিফিক্যান্ট। আপনি উদাহরণস্বরূপ, সহজে একটি কমান্ড স্ক্রিপ্টকে ফিল্টার হিসেবে ব্যবহার করতে পারতেন না কারণ কমান্ড ফাইলটিই Стан্ডার্ড ইনপুট ছিল। এবং একটি ফিল্টারে, স্ট্যান্ডার্ড ইনপুট হলো যা আপনি আপনার প্যারেন্ট প্রসেস থেকে ইনহেরিট করেন, কমান্ড ফাইল নয়।

মূল শেলটি সিম্পল ছিল কিন্তু, লোকেরা যেহেতু ইউনিক্স অ্যাপ্লিকেশন ডেভেলপমেন্ট এবং স্ক্রিপ্টিং-এ ব্যবহার করতে শুরু করল, এটি খুব সীমাবদ্ধ ছিল। এতে ভেরিয়েবল নেই, কন্ট্রোল ফ্লো নেই, এবং খুব অপর্যাপ্ত কোটিং ক্যাপাবিলিটি ছিল।

এই নতুন শেল স্ক্রিপ্টারদের জন্য একটি বিশাল ধাপ সামনে ছিল, কিন্তু শুধু যদি আপনার এটিতে অ্যাক্সেস থাকে।

বোর্ন শেলকে ফ্রি সফটওয়্যার হিসেবে পুনর্বিবেচনা

তব-uns পর্যন্ত, ডমিন্যান্ট শেলগুলো প্রপ্রায়েটারি সফটওয়্যার ছিল যা বেল ল্যাবস দ্বারা স্বামিত্ব ও অপারেট করা হতো। আপনি যদি সুভাগ্যশালী হন, আপনার યুনিভার্সিটিতে ইউনিক্স শেলে অ্যাক্সেস থাকতে পারে। কিন্তু সীমাবদ্ধ অ্যাক্সেসটি ফ্রি সফটওয়্যার ফাউন্ডেশন (FSF) যা অর্জন করতে চেয়েছিল তার দূরে ছিল।

রিচার্ড স্টলম্যান এবং একই মতামতের ডেভেলপার গ্রুপ ইউনিক্সের সকল ফিচার লিখছিলেন GNU লাইসেন্সের অধীনে ফ্রিয়ে উপলব্ধ করার জন্য। সেই ডেভেলপারদের মধ্যে একটি কে শেল বানানোর দায়িত্ব দেয়া হয়েছিল। সেই ডেভেলপার ছিলেন ব্রায়ন ফক্স। এবং সে তার টাস্ক সম্পর্কে যেভাবে কথা বলেন সেটি আমাকে সম্পূর্ণ চমকিত করে। পডকাস্টে সে যা বলেছেন:

The reason it was so challenging was that we had to faithfully mimic all of the behaviors of the Bourne shell, while at the same time being allowed to extend it to make it a better tool for people to use.

এটি একই সময়ে হয়েছিল যখন লোকেরা আলোচনা করতো শেল স্ট্যান্ডার্ড হওয়া মানে কী। এই ইতিহাস ব্যাকগ্রাউন্ড এবং ফোরগ্রাউন্ডে প্রতিযোগিতার সাথে, জনপ্রিয় বোর্ন শেল পুনরায় কল্পনা করা হয়েছিল; পুনর্জন্ম।

শেল, বোর্ন-আগেইন

এই দুটি ক্যাটালিস্ট—ফ্রি সফটওয়্যার মিশন এবং প্রতিযোগিতা—বোর্ন-আগেইন শেল (Bash) কে জীবন দিয়েছে। সময়ের জন্য একটি অসামান্য আচরণে, ফক্স তার শেলকে তার নিজের নাম দিলেন না, এবং ইউনিক্স থেকে ফ্রি সফটওয়্যার বিবর্তনে ফোকাস করলেন। (যদিও Fox Shell Fish shell কে fsh কমান্ডে হারাতে পারত #missedopportunity)। সেটি তার পারসন্যালিটির সাথে আলাইনড লাগে। এপিসোডে ফক্স যা বলেছেন, তিনি পারসোনাল গ্লোরির ধারণা থেকে আগ্রহী নন; তিনি প্রোগ্রামিং কালচার বিবর্তন করতে চেয়েছিলেন। তিনি যাইহোক, একটি ভালো পান থেকে ওপর চাপেনি।

শুনতে ভালো লাগলো যে বোর্ন আপমানিত অনুভব করেননি শব্দবিনোদ দ্বারা। বোর্ন একটি গল্প বলেন কীভাবে কেউ তার কাছে এল এবং একটি বাশ টি-শার্ট দিয়েছিল একটি কনফারেন্সে। সেই ব্যক্তি ছিলেন ব্রায়ন ফক্স।

Shell Released Creator
Thompson Shell 1971 Ken Thompson
Bourne Shell 1977 Stephen Bourne
Bourne-Again Shell 1989 Brian Fox

সময়ের সাথে সাথে, বাশ অডপশনে বেড়েছে। অন্যান্য ইঞ্জিনিয়াররা এটি ব্যবহার করতে শুরু করলেন এবং এর ডিজাইনে উন্নতি সাবমিট করলেন। অবশ্য, বছর পর, ফক্স জোর দিয়ে বলেন যে বাশের কন্ট্রোল ছেড়ে দেয়া তার জীবনের সবচেয়ে গুরুত্বপূর্ণ কাজগুলোর একটা ছিল। ইউনিক্স লিনাক্সে এবং ওপেন সোর্স সফটওয়্যার আন্দোলনে রূপান্তরিত হওয়ার সাথে সাথে, বাশ একটি ওপেন সোর্স জগতে কী স্ক্রিপ্টিং ফোর্স হয়ে উঠল। চমৎকার প্রজেক্টগুলো একজনের দৃষ্টির স্কোপের বাইরে বেড়ে যায়।

শেল থেকে আমরা কী শিখতে পারি?

একটি শেল এমন একটি টেকনোলজি যা প্রতিদিন ল্যাপটপ ব্যবহারের সাথে এতটা ইন্টিগ্রাল যে সহজে ভুলে যাওয়া যায় এটিকে আবিষ্কার করা লাগল। থম্পসন থেকে বোর্ন থেকে বাশ শেলে যাওয়ার গল্প কিছু পরিচিত টেকওয়ে আউটলাইন করে:

  • উদ্দীপিত ব্যক্তিরা সঠিক মিশন মনে রেখে বড় অগ্রগতি করতে পারে।
  • আমরা যেটিতে আজ নির্ভর করি তার অধিকাংশ আমাদের ইন্ডাস্ট্রি-এর এখনো জীবিত লেজেন্ডদের কাজের ওপর ভিত্তি করে।
  • যে সফটওয়্যারগুলো টিকে থাকে সেগুলো যেগুলো তাদের মূল স্রষ্টার দৃষ্টির বাইরে বিবর্তিত হয়।

Command Line Heroes প্রোগ্রামিং ল্যাঙ্গুয়েজ কভার করেছে সিজন ৩-এর সব এবং এর ফাইনালে tiến করছে। সাবস্ক্রাইব করতে ভুলবেন না প্রোগ্রামিং ল্যাঙ্গুয়েজের উৎপত্তি সম্পর্কে আপনি যা যা জানতে চান সাব শিখতে, এবং আমি আপনার শেল গল্প কমেন্টে শুনতে চাই।

  1. লিনাক্স শেল ব্যবহার করার গাইড

  2. উইন্ডোজ ১০-এ Linux Bash Shell-এর দ্রুত গাইড

  3. বিভিন্ন Linux ডিস্ট্রোর ইতিহাস

  4. jm-shell: বিস্তারিত অ্যাক্টিভিটি লগসহ ফিচার-রিচ, কাস্টমাইজেবল বাশ শেল