শেল (কম্পিউটিং)
কম্পিউটিং এর পরিভাষায় শেল হল, একটি অপারেটিং সিস্টেমের সেবায় প্রবেশ করার ব্যবহারকারী ইন্টারফেস। সাধারণত অপারেটিং সিস্টেম শেল হয় কমান্ড-লাইন ইন্টারফেস (সিএলআই) অথবা গ্রাফিক্যাল ইউজার ইন্টারফেস (গুই) ব্যবহার করে, নির্ভর করে কম্পিউটারটি কি ভূমিকায় ব্যবহার করা হচ্ছে এবং কি কাজে ব্যবহার করা হবে তার উপর। অপারেটিং সিস্টেমের কার্নেলের আশেপাশে এটি একটি স্তর বলে এটির নাম শেল রাখা হয়েছে।
শেলের নকশা জ্ঞানীয় কর্মদক্ষতার দ্বারা পরিচালিত হয় এবং এর লক্ষ্য হল প্রদত্ব কার্যের থেকে যতটুকু সম্ভব সেরা কর্মপ্রবাহ অর্জন করা; বিদ্যমান কম্পিউটিং ক্ষমতা(যেমন, সিপিইউ থেকে) অথবা বিদ্যমান গ্রাফিক্স মেমরির পরিমাণের জন্য এর নকশা সীমাবদ্ধ হতে পারে। শেলের নকশাটি আদেশকৃত নিযুক্ত কম্পিউটার পেরিফারি যেমন কম্পিউটার কিবোর্ড, বিন্দু নির্দেশক যন্ত্র (একটি বোতাম সমৃদ্ধ মাউস, অথবা পাঁচটি বোতাম সমৃদ্ধ, অথবা থ্রিডি মাউস) অথবা স্পর্শপর্দা, যেগুলো সরাসরি মনুষ্য-যান্ত্রিক ইন্টারফেস দ্বারা প্রভাবিত হয়।
সিএলআই শেল কিছু কাজকে দ্রুত সম্পন্ন করতে দেয়, বিশেষ করে যখন একটি সঠিক চিত্রভিত্তিক ব্যবহারকারী ইন্টারফেস তৈরি করা হয়নি বা তৈরি করা সম্ভব নয়; যদিওবা তাদের ব্যবহার করার জন্য ব্যবহারকারীর নির্দেশনা এবং তাদের ডাকার শব্দবিন্যাস সম্পর্কে জানা প্রয়োজন, এবং শেল সম্পর্কে ধারণা লাভ করার জন্য নির্দিষ্ট স্ক্রিপ্টিং ভাষা(যেমন ব্যাশ স্ক্রিপ্ট) শিখতে হয়, যেটি শেখা যাদের কম্পিউটার সম্পর্কে কম অভিজ্ঞতা রয়েছে তাদের জন্য খুবই কঠিন হতে পারে। সিএলআই(CLI) রিফ্রেসেবল ব্রেল ডিসপ্লে দিয়ে খুব সহজেই পরিচালনা করা যায় এবং স্ক্রিন রিডার অ্যাপ্লিকেশনে কিছু সুবিধা প্রদান করে।
গ্রাফিক্যাল শেল নতুন কম্পিউটার ব্যবহারকারীদের উপর কম চাপ দেয় এবং তাদের সরল এবং সজজে ব্যবহারযোগ্য বলে চিহ্নিত করা হয়। চিত্রভিত্তিক ব্যবহারকারী ইন্টারফেস প্রোগ্রামে ব্যাপকহারে গ্রহণ করার ফলে গ্রাফিক্যাল শেলের ব্যবহার অধিকহারে গ্রহণ করা হচ্ছে। যেহেতু গ্রাফিক্যাল শেলে কিছু অসুবিধা রয়েছে, তাই বেশিরভাগ গ্রাফিক্যাল ইউজার ইন্টারফেস ভিত্তিক অপারেটিং সিস্টেম এর সাথে আরও অতিরিক্ত সিএলআই প্রদান করে।
অপারেটিং সিস্টেম তাদের ব্যবহারকারীদের নানাবিধ সেবা প্রদান করে, যেমন ফাইল ম্যানেজমেন্ট, প্রসেস ম্যানেজমেন্ট, ব্যাচ প্রসেসিং এবং অপারেটিং সিস্টেম মনিটরিং ও কনফিগারেশন।
বেশিরভাগ অপারেটিং সিস্টেম শেল নিম্নাবস্থিত কার্নেলের সাথে সরাসরি হস্তক্ষেপ করে না, এমনকি যদি কোন শেল সরাসরি কম্পিউটারের সাথে যুক্ত পেরিফারি যন্ত্র থেকে ব্যবহারকারীর সাথে যোগাযোগ করে। শেল আসলে বিশেষ অ্যাপ্লিকেশন যেটি কার্নেল এপিআই ব্যবহার করে ঠিক একইভাবে যেভাবে অন্য অ্যাাপ্লিকেশন প্রোগ্রাম ব্যবহার করে থাকে। শেল, ব্যবহারকারী সিস্টেম মিথষ্ক্রিয়াকে(পরস্পরের উপর ক্রিয়াশীল) পরিচালনা করে, ইনপুটের জন্য ব্যবহারকারীকে জানান দেয়া, তাদের ইনপুট ব্যাখ্যা এবং নিম্নাবস্থিত অপারেটিং সিস্টেম থেকে আউটপুট নিয়ন্ত্রণ করার মাধ্যমে(অনেকটা রিড-ইভাল-প্রিন্ট লুপ ল্যাঙ্গুয়েজ শেল এবং আরইপিএল এর মতো) । যেহেতু অপারেটিং সিস্টেম শেল আসলে একটি অ্যাপ্লিকেশন তাই বেশিরভাগ অপারেটিং সিস্টেমে এটিকে আরেকটি অনুরূপ অ্যাপ্লিকেশন দ্বারা সহজেই পুনঃস্থাপিত করা যেতে পারে।
স্থানীয় সিস্টেমে চালুকৃত শেল স্থানীয় ব্যবহারকারীরা বিভিন্ন উপায়ে দূরবর্তী সিস্টেম ব্যবস্থা গ্রহণ করতে পারে; এই ধরণের উপায়কে রিমোর্ট এক্সেস বা রিমোট অ্যাডমিনিস্ট্রেশন বলা হয়। এটি প্রথম ব্যবহার করা হয় বহুব্যবহারকারী মেইনফ্রেমে, যেটি একসঙ্গে প্রত্যেক সক্রিয় ব্যবহারকারীকে সিরিয়াল লাইন বা মডেমের মাধ্যমে মেইনফ্রেমের সাথে যুক্ত টেক্সট টার্মিনাল থেকে টেক্সট ভিত্তিক ইউআই(ইউজার ইন্টারফেস) প্রদান করত, রিমোর্ট এক্সেস ইউনিক্স জাতীয় সিস্টেম এবং মাইক্রোসফট উইন্ডোজ অপারেটিং সিস্টেম পর্যন্ত সম্প্রসারিত হয়েছে। ইউনিক্স জাতীয় সিস্টেমে সুরক্ষিত শেল প্রোটোকল সাধারণত টেক্সট ভিত্তিক শেলগুলোতে ব্যবহৃত হয়, যেখানে এসএসএইচ টানেলিং (en:SSH tunneling) এক্স উইন্ডো সিস্টেম ভিত্তিক চিত্রভিত্তিক ব্যবহারকারী ইন্টারফেসে ব্যবহৃত হতে পারে। মাইক্রোসফট উইন্ডোজে রিমোট ডেস্কটপ প্রোটোকল গ্রাফিক্যাল ইউজার ইন্টারফেস রিমোর্ট এক্সেস প্রদান করতে ব্যবহৃত হতে পারে।
বেশিরভাগ অপারেটিং সিস্টেমের শেল কমান্ড লাইন এবং চিত্রভিত্তিক এই দুইটি ভাগে ভাগ করা হয়। কমান্ড লাইন শেল অপারেটিং সিস্টেমকে কমান্ড লাইন ইন্টারফেস (CLI) প্রদান করে, যেখানে গ্রাফিক্যাল শেল গ্রাফিক্যাল ইউজার ইন্টারফেস (GUI) প্রদান করে। অন্যান্য উপায়গুলোর(যদিও তা খুব বেশি ব্যবহৃত হয় না) মধ্যে আছে ভয়েস ইউজার ইন্টারফেস এবং বিভিন্ন টেক্সট ভিত্তিক ইউজার ইন্টারফেস (TUI) যেগুলো আবার কমান্ড লাইন ইন্টারফেস নয়। সিএলআই(CLI) এবং জিইউআই(GUI) ভিত্তিক শেলের আপেক্ষিক যথার্থতা প্রায়শই বিতর্কিত হয়।
কমান্ড-লাইন ইন্টারফেস (CLI) হল একটি অপারেটিং সিস্টেম শেল যেটি কিবোর্ড দিয়ে টাইপকৃত আলফানিউমেরিক বর্ণ ব্যবহার করে নির্দেশাবলী এবং তথ্য অপারেটিং সিস্টেমে ইন্টারেক্টিভলি প্রদান করে। যেমন একটি টেলিটাইপরাইটার প্রতিনিধিত্বমূলক কীস্ট্রোক কোড কম্পিউটারে চালুকৃত কমান্ড অনুবাদক প্রোগ্রামে পাঠাতে পারে; কমান্ড অনুবাদক কীস্ট্রেকের ক্রম পরিচয় করিয়ে দেয় এবং যদি বর্ণের ক্রম বুঝতে না পারে তাহলে ভুল বার্তা প্রেরণ করে অথবা অ্যাপ্লিকেশন প্রোগ্রাম চালু করা, ফাইল তালিকাভূক্ত করা, ব্যবহারকারীতে লগইন করা এবং আরও অনেক অন্যান্য প্রোগ্রামের কাজ করতে পারে। ইউনিক্সের মতো অপারেটিং সিস্টেমের ভিন্ন কমান্ড, শব্দবিন্যাস এবং সক্ষমতার মতো বিভিন্ন ধরণের শেল প্রোগ্রাম রয়েছে। কিছু অপারেটিং সিস্টেমে কেবলমাত্র এক ধরণের কমান্ড ইন্টারফেস শৈলী বিদ্যমান থাকে; এমএস-ডসের মতো পণ্যধর্মী অপারেটিং সিস্টেমে আদর্শ কমান্ড ইন্টারফেস থাকে আবার প্রায়শই তৃতীয় পক্ষের ইন্টারফেসও পাওয়া যায়, যেখানে অতিরিক্ত বৈশিষ্ট্যের ফাংশন যেমন মেনু করা অথবা দূর থেকে প্রোগ্রাম চালানোর সুবিধাও প্রদান করা হয়। অ্যাপ্লিকেশন প্রোগ্রামও কমান্ড লাইন ইন্টারফেস বাস্তবায়ন করতে পারে। উদাহরণস্বরূপ ইউনিক্স জাতীয় সিস্টেমে টেলনেট প্রোগ্রামটিতে দূরবর্তী কম্পিউটার সিস্টেমে লিংক নিয়ন্ত্রণ করার জন্য অসংখ্য কমান্ড রয়েছে। যেহেতু প্রোগ্রামের কমান্ডগুলো একই কীস্ট্রোক দিয়ে সৃষ্টি যেমন তথ্যটি একটি দূরবর্তী কম্পিউটারে পাঠানোর মতো তাই তাদের নির্বিশেষে একই অর্থ থাকা প্রয়োজন। একটি বিশেষ স্থানীয় কীস্ট্রোক দিয়ে একটি ইষ্কেপ সিকুয়েন্স নির্দেশ করা যেতে পারে যেটি স্থানীয় কম্পিউটারে কখনোই গৃহীত হয়নি কিন্তু সবসময় ব্যাখ্যা করা হয়েছে। কীবোর্ড অথবা গৃহীত কীস্ট্রোক হতে প্রাপ্ত ব্যাখ্যায়ীত কমান্ডের মধ্যে পরিবর্তনের মাধ্যমে তথ্য প্রক্রিয়াজাত হতে হতে প্রোগ্রামটি আদর্শে পরিণত হয়।
অনেক কমান্ড লাইন শেলের প্রধান বৈশিষ্ট্য হল কমান্ড পুনরায় ব্যবহার করার জন্য তার ক্রম সংরক্ষণ করার ক্ষমতা। একটি ডাটা ফাইল কমান্ডের ক্রম ধরে রাখতে পারে যেটি কমান্ড লাইন ইন্টারফেস অনুসরণ করার জন্য তৈরি করা যেতে পারে যদি তা ব্যবহারকারী দ্বারা সম্পাদিত হয়। কমান্ড লাইনের বিশেষ বৈশিষ্ট্য তখনই প্রয়োগ করা যেতে পারে যখন এটি সংরক্ষণকৃত নির্দেশগুলো সঠিকভাবে পালন করে। এই ধরণের ব্যাচ ফাইল (স্ক্রিপ্ট ফাইল) বারবার স্বয়ংক্রিয় পদ্ধতিতে কার্যসূচি অপারেশনের ক্ষেত্রে ব্যবহার করা যেতে পারে যেমন একগুচ্ছ প্রোগ্রাম আরম্ভ করা যখন একটি সিস্টেম রিস্টার্ট করা হয়। ব্যাচ পদ্ধতিতে সচরাচর শেলের ব্যবহার হিসেবে স্ট্রাকচার, কন্ডিশনাল, ভ্যারিয়েবল এবং অন্যান্য প্রোগ্রামিং ভাষার উপাদানগুলো জড়িত থাকে; কারো কারো ক্ষেত্রে এই ধরণের উদ্দেশ্যের জন্য খুবই কম অপরিহার্যতা প্রয়োজন, অন্যদের ক্ষেত্রে বাস্তববুদ্ধিসম্পন্ন প্রোগ্রামিং ভাষা দরকার। বিপরীতভাবে কিছু প্রোগ্রামিং ভাষা অপারেটিং সিস্টেম শেল বা উদ্দেশ্যায়ীত প্রোগ্রাম থেকে ব্যবহার করা যেতে পারে।
কমান্ড লাইন শেল কমান্ড লাইন সম্পূর্ণতা জাতীয় বৈশিষ্ট্য প্রদান করতে পারে, যেখানে অনুবাদক ব্যবহারকারী কর্তৃক ইনপুটকৃত কিছু বর্ণ কমান্ড বিস্তৃত করতে পারে। কমান্ড লাইন অনুবাদক হিস্টোরি ফাংশনের ব্যবস্থা প্রদান করতে পারে যাতে ব্যবহারকারীরা সিস্টেমে জারিকৃত পূর্বের কমান্ডগুলো কিছু সংশোধনের মাধ্যমে পুনরায় ডাকতে পারে এবং ব্যবহার করতে পারে। যেহেতু অপারেটিং সিস্টেমের সকল কমান্ডসমূহ ব্যবহারকারী কর্তৃক সম্পাদন করতে হয় তাই সংক্ষিপ্ত কমান্ড নাম এবং প্রতিনিধিত্বমূলক প্রোগ্রামের জন্য নিবিড় সিস্টেম অপশন ছিল খুবই সাধারণ। সংক্ষিপ্ত নাম ছিল ব্যবহারকারীদের মনে রাখার জন্য কিছুটা কঠিন এবং পূর্বেকার সিস্টেমসমূহ বিশদ অন-লাইন নির্দেশ ব্যবহার গাইড সংরক্ষণ কৌশল প্রদান করার ক্ষমতা ছিল না।
বিভিন্ন ইউনিক্স শেল এবং তাদের ডেরাইভেটিভসরা যেমন ডস শেল উপস্থিত ছিল।
গ্রাফিক্যাল বা চিত্রভিত্তিক শেল গ্রাফিক্যাল ইউজার ইন্টারফেস (GUI) এর উপর ভিত্তি করে তৈরি প্রোগ্রামসমূহ দক্ষভাবে ব্যবহার করা যায় যেমন খোলা, বন্ধ করা, নাড়াচাড়া করা এবং উইন্ডোজের মাপ পরিবর্তন করা এছাড়াও উইন্ডোজের মধ্যে ফোকাস পরিবর্তন করার মতো কাজ। গ্রাফিক্যাল শেল ডেস্কটপ এনভায়রণমেন্ট বা আলাদাভাবে অন্তর্ভূক্ত করা হতে পারে, এমনটি অগুরুত্বপূর্ণ মিলিত ইউটিলিটি সেট হিসেবেও।
বেশিরভাগ গ্রাফিক্যাল ইউজার ইন্টারফেসসমূহ ইলেকট্রনিক ডেস্কটপের রূপক হিসেবে তৈরি করা হয়, যেখানে ডাটা ফাইলগুলো ডেষ্কের কাগজের কাগজপত্রের প্রতিনিধিত্ব করে এবং কমান্ড নাম দ্বারা সাহায্য প্রার্থনা করার পরিবর্তে অ্যাপ্লিকেশন প্রোগ্রামসমূহ উপস্থাপনা করে।
মাইক্রোসফট উইন্ডোজ অপারেটিং সিস্টেমের আধুনিক সংস্করণে তাদের শেল হিসেবে উইন্ডোজ শেলকে ব্যবহার করে। উইন্ডোজ শেল পরিচিত ডেস্কটপ এনভায়রনমেন্ট, স্টার্ট মেনু এবং টাস্কবারের ব্যবস্থা করে, এছাড়াও চিত্রভিত্তিক ব্যবহারকারী ইন্টারফেস হিসেবে অপারেটিং সিস্টেমের ফাইল ব্যবস্থাপনা কাজে প্রবেশাধিকার দেয়ার ব্যবস্থা করে। পুরনো সংস্করণে প্রোগ্রাম ম্যানেজার অন্তর্ভুক্ত করা হয়েছিল যেটি মাইক্রোসফট উইন্ডোজের ৩.x সিরিজের শেল হিসেবে কাজ করে এবং পরবর্তী উইন্ডোজ সংস্করণের(উইন্ডোজ ৯৫, উইন্ডোজ এনটি এবং উইন্ডোজ এক্সপি) সাথে যুক্ত করা হয়েছিল। উইন্ডোজ সংস্কাণ ১ এবং ২ এর ইন্টারফেসের লক্ষণীয়ভাবে ভিন্ন।
ডেস্কটপ অ্যাপ্লিকেশনসমূহকেও শেল হিসেবে বিবেচনা করা হয়, যতক্ষণ পর্যন্ত এটি তৃতীয় পক্ষের যন্ত্র ব্যবহার করে। অনুরূপভাবে অনেক ব্যক্তিবিশেষ এবং উন্নয়ণকারীরা(developers) ইন্টারনেট এক্সপ্লোরারের উন্নয়নকৃত সফটওয়্যারের ইন্টারফেস নিয়ে অসন্তুষ্ট, যেটি শেলের কার্যপ্রক্রিয়া এবং উপস্থিতি পরিবর্তন করে দেয় অথবা এটিকে পুরোপুরি পুনঃস্থাপিত করে। স্টারডকের উইন্ডোব্লাইন্ডস হল এই ধরণের অ্যাপ্লিকেশনের পূর্ববর্তী প্রকৃষ্ট উদাহরণ। লাইটস্টেপ এবং ইমার্জ ডেস্কটপ হল পরবর্তীকালের ভালো উদাহরণ।
তথ্য আদানপ্রদানের প্রোগ্রামসমূহ এবং নকশা উদ্দেশ্যের সফটওয়্যার উইন্ডোজ ব্যবহারারীদের ম্যাকিন্টশের মতো আরও অনেক ধরণের ইউনিক্স জাতীয় চিত্রভিত্তিক ব্যবহারকারী ইন্টারফেজের সমকক্ষ শেল ব্যবহারের সুযোগ দেয়। উইন্ডোজ এনটি এর সংস্করণে এনভায়রণমেন্টাল সাবসিস্টেম ব্যবহারের মাধ্যমে সংস্করণ ৩.০ ওস/২ প্রেজেন্টেশন ম্যানেজারের সমকক্ষ ওস/২, কিছু প্রোগ্রাম কিছু শর্তের ভিত্তিতে কাজ করতে পারে।
চিত্রভিত্তিক শেল(Graphical shell) সাধারণত উইন্ডোয়িং সিস্টেমের(এক ধরণের চিত্রভিত্তিক ব্যবহারকারী ইন্টারফেস যেখানে উইন্ডোজ, আইকন, মেনু, পয়েন্টার ইত্যাদি ব্যবহার করা হয়) উপরে তৈরি করা হয়। এক্স উইন্ডোজ সিস্টেম বা ওয়েল্যান্ড এর ক্ষেত্রে শেল গঠিত হয় নিজ নিজ এক্স উইন্ডো ম্যানেজার বা ওয়েল্যান্ড কম্পোজিটর দ্বারা, এছাড়াও এক বা একাধিক প্রোগ্রামসমূহের ইন্সটলকৃত অ্যাপ্লিকেশন চালু করার ক্ষমতা দেয়া, চালুকৃত উইন্ডোজ এবং ভার্চুয়াল ডেস্কটপকে পরিচালনা করা এবং মাঝে মাঝে উইজেট ইঞ্জিনকে সমর্থন করা।
ম্যাক অপারেটিং সিস্টেমের ক্ষেত্রে কোয়ার্টজকে উইন্ডোজিং সিস্টেম হিসেবে ভাবা যায় এবং শেল হল ফাইন্ডার, ডক, সিস্টেম ইউআই সার্ভার এবং মিশন কন্ট্রোলের সমষ্টি।
শেল আরও ব্যবহৃত হয় অ্যাপ্লিকেশন সফটওয়্যারকে অগুরুত্ব সহকারে বর্ণনা করার জন্য যেটি হল একটি বিশেষ উপাদান দ্বারা তৈরি("built around"), যেমন ওয়েব ব্রাউজার এবং ইমেইল ক্লায়েন্ট, উপমা হিসেবে বলা হয় শেল প্রকৃতিতে পাওয়া যায়।
বিশেষজ্ঞ সিস্টেমে, যে কোন বিশেষ অ্যাপ্লিকেশনের জন্য শেল হল একটি সফটওয়্যার অংশ যেটির সাধারণ জ্ঞান ছাড়া সফটওয়্যারটি একটি অপূর্ণ(empty)বিশেষজ্ঞ সিস্টেম।