کارسختی است که در مورد تکامل یا تاریخه شل های لینوکسی و یونیکسی بخواهیم مطلبی بیان کنیم و همچنین این موضوع از آن دست مطلب هایی است که بسیار وسیع است و باید چندین صفحه فقط برای یکی از شل ها نوشته شود که به خودی خودی بر حجم مطلب و خسته شدن کاربر اضافه میکند. در این نوشته قصد داریم تا محتوایی پایهای را در مورد شل ها تحت پوشش قرار دهیم و نمیخواهیم که زیاد به اعماق شل ها برویم.
یونیکس شل چیست؟
یونیکس شل یک مترجم خط فرمان است که دستوراتی را که توسط کاربر وارد میشود را ترجمه میکند. ما یک دستور را وارد میکنیم؛ سپس آن ترجمه شده و پس از آن نتیجه برای ما نمایش داده میشود. شل یک رابط کاربری سنتی را به کاربر ارائه خواهد داد که در سیستمهای یونیکسی و شبه یونیکسی استفاده میشود. معمولاً یک صفحه مشکی با نوشتههای سفید یک شل است و کاربر در آن دستورات را به صورت متنی و یا اسکریپت نویسی وارد میکند که در اسکریپت دستور ها یکی پس از دیگری اجرا میشوند.
شل رابط شما با سیستم عامل خواهد بود و راهی که کاربر از طریق آن میتواند با سیستم ارتباط برقرار کند. پس از اینکه به یک سیستم یونیکسی لاگین کنید در مکانی به نام شل قرار خواهید داشت.
تامپسون شل
با توجه به تاریخچه ای که در دنیای اینترنتی وجود دارد اولین شل ساخته شده برا یونیکس تامپسون شل بوده است که به وسیله کن تامپسون و در آزمایشگاههای بسیار معروف بل نوشته شده است و در توزیعهای نسخه ۱ تا ۶ یونیکس از ۱۹۷۱ تا ۱۹۷۵ به کار برده شده است و قابلیتهایی مانند پایپ کردن و کنترل ساختار ها با استفاده از if و goto ؛ با این حال امروزه دیگر این شل با سیستمهای یونیکسی ارائه نمیشود و به نوعی از رده خارج محسوب میشود.
PWB شل
شل PWB یا Mashey shell یک نسخه به روز شده و البته ویرایش شده از تامپسون شل است که توسط john mashey نوشته شده است . این شل برای بهتر شدن برنامه نویسی شل طراحی شده است و قابلیتهای جالبی همانند if , then , then , else , endif در آن قرار دارد و سوئیچ و ساختار while نیز برای اولین بار در شل PWB معرفی شدند.
بورن شل
پیشرفتهای یونیکس با روی کارآمدن بورن شل کم کم بیشتر شد. بورن شل توسط stephen bourne و در آزمایشگاههای معروف بل نوشته شده است و در نسخه ۷ یونیکس که در ۱۹۷۹ منتشر شد استفاده شد. این شل امکاناتی بسیار پایه داشت و پس از آن در بیشتر شل های یونیکسیاز آنها استفاده شد. برنامههای بورن شل با نام sh شناخته میشوند و در مسیر /bin/sh قرار داده میشوند.
در بیشتر سیستمها بورن شل ممکن است به شل های معرفی شده در زیر لینک شده باشد.
– Ash
– Bash
– Zsh
– Ksh
یک مثال ساده :
#!/bin/sh echo "Hello World 1!" echo "Hello World 2!"
آلمکوئیست شل
شل آلمکوئیست همچنین به نام A shell نیز شناخته میشود و یک شل یونیکسی سبک است که توسط آقای آلمکوئیست نوشته شده است و در حدود سالهای ۱۹۸۰ نوشته شده است. این شل نوعی دیگر از بورن شل است که در نسخه های BSD که در سال ۱۹۹۰ عرضه میشده است جاگزین بورن شل شده. در برخی نسخه های دبیان و اوبونتو نیز این شل با نام dash شناخته میشود که مخفف debian almquist shell است. همچنین آلمکوئیست در سیستمهای امبدد از محبوبیت بسیاری برخوردار است.
این شل سریع و کوچک و سازگار با استاندارد های posix است و این دلیل خوبی است که چرا این شل در دستگاههای embeded محبوب است. ASH از مکانیسم های تاریخچه دستورات پشتیبانی نمیکند که ممکن است نسخه های اخیر آن با توجه به پیشرفتهایی که کرده است تاریخچه را نیز ساپورت کنند.
شلBourne again یا بش
توسط brian برای پروژه گنو و به عنوان نرم افزاری رایگان برای جایگزینی بورن شل نوشته شده است. یکی از محبوبترین و پر استفاده ترین شل ها در بین انواع شل است و هر توزیع لینوکسی با این نوع شل عرضه میشود و در توزیعهای گنو/لینوکسی استفاده بسیار زیادی دارد. این شل برای کاربرانی که دارای مسیری /bin/bash هستند نصب و استفاده شده است. همچنین تاریخ عرضه آن سال ۱۹۸۹ بوده.
Bourne again shell یا بش از دستورات بسیاز گسترده ای استفاده میکند. اسکریت های بش نیز با دستور زیر شروع میشوند :
#!/bin/bash
بش میتواند دستورات را از روی فایل خوانده و حتی خروجی را نیز بر روی فایل و پایپ لاین های نمایش دهد. در زیر یک مثال ساده از اسکریپت های بش را مشاهده میکنیم :
#!/bin/sh if [ $days -gt 365 ] then echo This is over a year. fi
زی شل یا ZSH
paul falstad اولین نسخه از z shell را در سال ۱۹۹۰ نوشت. این شل را میتوان در یونیکس به عنوان یک سل فعال و پویا استفاده کرد که مترجمی بسیار قوی برای شل اسکریپتینگ دارد. Z shell نسخه توسعه داده شده بش است که بهبود های بسیار زیاد در آن انجام شده است. این نوع شل دارای قابلیتهای بسیار خوبی است که در زیر آوردهایم :
– تصحیح و تکمیل خودکار دستورات با قابلیت برنامهریزی
– اشتراک گذاری تاریخچه دستورات در تمام شل های در حال اجرا
– بهبود مدیریت متغیرها و آرایه ها
– و تغییرات بسیاری دیگر که این شل را به شلی بسیار قدرتمند و جالب تبدیل کرده است.
یکی از معروف ترین کانفیگ ها و دلایلاصلی محبوبیت بالای zsh وجود oh my zsh است که این شل را تبدیل به شلی بسیار کارآمد و بی نظر در نوع خود میکند. در مقاله ای جداگانه به بررسی این فریمورک خواهیم پرداخت.
و در آخر شل های دیگر همانند C shell و korn shell نیز هستند که برای مثال نسخه بهبود یافتهای از c shell در سیستمهای osx استفاده میشود و دارای قابلیتهای جالبی است.