Shell ،Console و Terminal لینوکس مفاهیمی بسیار قدیمی هستند که همچنان از آنها استفاده میکنیم، البته با طرز کار و شکل و شمایلی اصلاح شده! اما آیا میدانستید ترمینال در اوایل یک مانیتور فیزیکی و یک کیبورد بود و یا کنسول راهی برای ارتباطی از جنس Low-level با سیستمعامل بوده است؟ برای یافتن پاسخ این سؤال و همچنین درک تفاوتهای مابین Shell ،Console و Terminal در سیستمعامل گنو/لینوکس، در ادامه با سکان آکادمی همراه باشید.
در حالی که تکنولوژی رو به جلو حرکت میکند، فاصلهٔ بین اشیاء و مفاهیم مختلف که پیش از این قابل تشخیص بود، کمکم محو میشود. کلمات میتوانند به صورت محاورهای معنای یکسانی را به اشتراک بگذارند در حالی که زمانی مفهوم منحصربهفرد خود را داشتهاند. در واقع، گاهیاوقات چندین ابزار مجزا بدون نشانهای از اصل و نسب تکنولوژیکیشان، مشابه هم مد نظر قرار داده میشوند (حداقل این چیزی است که تقریباً دربارهٔ کنسول، شل و ترمینال رخ داده است). برای درک بهتر این موضوع، یک مثال از دنیای واقعی میزنیم.
سالهای سال، روتر بیسیم در بیشتر خانهها و دفاتر اداری کوچک پشتوانهٔ اتصال به اینترنت بوده است اما بسیاری از افراد نمیدانند که این وسیله در واقع از چندین و چند ابزار مختلف تشکیل شده که در گذشته مستقل از یکدیگر بودهاند و برای خود معنی و مفهومی داشتهاند. به عبارت دیگر، یک روتر بیسیم معمولی -حتی یکی از ارزانترین مدلهای موجود- شامل یک اَکسسپوینت بیسیم، سوییچ اترنت، روتر، فایروال، دیاناس سرور، دیاچسیپی سرور، کیواواس و … میباشد و این در حالی است حتی گاهیاوقات تعداد بسیار بیشتری از قطعات را شامل میشود. در نتیجه، یک فرد تازهکار شاید این دیوایس را به عنوان یک وسیلهٔ بیسیم (مودم یا روتر) شناسایی کند، اما هیچ کدام نمیتوانند تمام وظایف این دستگاه را نشان دهند و این تنها یکی از مثالهای موجود بود.
کنسول، شِل و ترمینال در چه مواردی با یکدیگر متفاوتاند؟
علاقمندان به اکوسیستم لینوکس دیر یا زود باید با محیط کامندلاین خو بگیرند؛ اما شما این محیط را چه مینامید: کنسول، شِل یا ترمینال؟ آیا با هم فرق دارند یا همهٔ آنها یک چیز واحد هستند؟ پاسخی که به این سؤال میتوان داد هم بلی است و هم خیر! دقیقاً همانند روتر بیسیم، این کلمات پیش از این بخشهای مجزایی بودند، (و اگر فنیتر بگوییم، در حال حاضر نیز هستند) و هر لغت مفهوم متفاوتی را نشان میداد.
ترمینال چیست؟
برای درک بهتر اینکه Terminal چیست، باید به دوران پادشاهی مینفریمها برگردیم. یک Mainframe کامپیوتری با تعداد کاربران زیاد بود و در مراکز تجاری بزرگ و دانشگاهها استفاده میشد؛ اما وقتی تعداد زیادی از افراد متقاضی استفاده از یک کامپیوتر به طور همزمان هستند چه راهی پیش روی شما است و چه طور این سیستم را به اشتراک میگذارید؟ به بیان امروزیتر و در یک کلام، به هر کدامشان یک مانیتور، یک کیبورد و ماوس میدهیم.
در عصر مینفریمها، از ترمینال استفاده میشد. یک ترمینال طبق تعریف لغتنامه، «پایان یک چیز یا نقطهٔ ارتباط با چیزی است؛ گاهیاوقات هم هردو». مینفریمها از صفحه نمایش و کیبوردهایی -یا بهتر بگوییم ترمینالهایی- در اطراف بدنهٔ خود بهره میبردند به طوری که کاربران میتوانستند از Mainframe استفاده کنند.
کنسول چیست؟
امروزه Console بخش نرمافزاری ماجرا است اما قضیه همیشه اینطور نبوده است! در گذشته، کنسول با ترمینالها در ارتباط بودند. یک کنسول راه و روش ارتباط فیزیکی و دیجیتالی به سیستمعامل Mainframe بود که این دستورات از طریق ترمینال صورت میگرفت. به عبارت دیگر، کنسول میز یا داشبوردی به عنوان رابط است که از این طریق سیستم کنترل شده و یا نظارت میشود.
ترمینال به صورت فیزیکی به پورت مربوط به کنسول در Mainframe متصل میشد تا کاربر بتواند Mainframe را به صورت دیجیتالی کنترل کند. در سیستمهای لینوکسی میتوانید با فشردن کلیدهای <ctrl> + <alt> + <F1>، به کنسولهای نرمافزاری مختلف دسترسی داشته باشید (در سیستمعامل اوبونتو، پس از ورود به کنسول، با فشردن کلیدهای <ctrl> + <alt> + <F7> میتوانید به محیط رابط کاربری بازگردید). بسیاری از سیستمها هنوز هم به پورتهای سریال کنسول برای مدیریت مجهز هستند (مانند تجهیزات حرفهای شبکه).
شِل چیست؟
Shell در لغت به معنای «پوست میوه» است که در کنار کِرنِل (هسته) کامل میشود؛ شِل قسمتی است که حول دانهٔ میوه قرار میگیرد و در کامپیوترها نیز قضیه همین گونه است. شِل محیط کامندلاینی است که شما با آن ارتباط دارید. به عنوان مثال BASH ،CSH و ZSH نمونههایی از آن هستند. شِل دستورات تایپ شده را میگیرد و به سیستمعامل میدهد تا آنها را اجرا کند یا میتواند اسکریپتها را بگیرد و منطق داخل آنها را تفسیر کرده و با دستور دادن به سیستمعامل، نحوهٔ اجرای دستورات اسکریپت را به سیستمعامل بفهماند.
کنسول، شِل و ترمینال در یک کلام!
بنابراین تفاوت عمدهٔ این سه را میتوان اینگونه تفسیر کرد که ترمینال وقتی شِل آماده به کار باشد، به کنسول متصل میشود. البته اصطلاحات دیگری نیز وجود دارند که شاید برایتان مفید واقع شوند؛ برای مثال، TTY نوعی دستگاه تایپ از راه دور است و در واقع مترادف پورت کنسولی است اما به طور نرمافزاری شبیهسازی شده است.
اگر از طریق کلیدهایی که در بالا بیان شد در سیستم لینوکسیتان به کنسول مجازی دیگری بروید و لاگین کنید، میتوانید با اجرای دستور who کنسولهای مختلفی را همراه با کاربران وارد شده به آنها مشاهده کنید. در آن قسمت تعدادی ابزار PTS وجود دارد که نوعی ابزار مجازی هستند. این اجزا نوعی از TTY است اما به شکلی اجرا شدهاند که به اتصال TTY اجازه دهند روی شبکه یا دیگر قسمتها فعالیت نماید. SSH و Telnet نمونههای خوبی از برنامههایی هستند که از ابزار PTS استفاده میکنند.