بخش ۴ – تفاوت Shell و Terminal

""

مقدمه

در لینوکس (و حتی ویندوز و macOS)، وقتی با خط فرمان کار می‌کنیم، دو اصطلاح زیاد شنیده می‌شه:

  • Terminal (ترمینال)
  • Shell (شل)

شاید قبلاً برایت پیش آمده باشه که بگی «ترمینال رو باز کن» یا «شل رو باز کن» و فکر کنی این‌ها دقیقاً یکی هستن. ولی نه 👌
یکی مثل پنجره است، دیگری مثل مغز پردازش‌کننده دستورها.


۱. تعریف Terminal

Terminal چیست؟

ترمینال در اصل یک سخت‌افزار قدیمی بود که قبل از اختراع مانیتورهای مدرن استفاده می‌شد:

  • یک صفحه نمایش (متنی) + کیبورد
  • به یک کامپیوتر اصلی (Mainframe) وصل می‌شد
  • فقط برای ورودی دستور و خروجی متن

امروزه در دنیای لینوکس و ویندوز منظور از Terminal نرم‌افزاری است که محیط ورودی/خروجی خط فرمان را برای کاربر فراهم می‌کند.

📌 مثال در لینوکس:

  • GNOME Terminal
  • Konsole (در KDE)
  • Xfce Terminal
  • Tilix
  • Alacritty

📌 مثال در ویندوز:

  • Command Prompt (CMD)
  • Windows Terminal
  • PowerShell Terminal

۲. تعریف Shell

Shell چیست؟

شل یک برنامه نرم‌افزاری است که دستورهای شما را می‌گیرد، پردازش می‌کند و به سیستم‌عامل می‌گوید چه کاری انجام دهد.
اسم “شل” یعنی «پوسته»؛ چون بین تو (کاربر) و هسته (Kernel) قرار می‌گیرد.

📌 وظایف Shell:

  • خواندن ورودی شما (دستورات)
  • تفسیر آن
  • اجرای دستور و دریافت خروجی از هسته لینوکس
  • نمایش نتیجه به شما

💡 هسته به تنهایی از شما چیزی نمی‌فهمد. شما نمی‌توانید مستقیم به Kernel دستور متنی بدهید. Shell نقش مترجم را دارد.


۳. رابطه Terminal و Shell (تشبیه ساده)

فرض کن:

  • ترمینال = تلفن یا میکروفون و بلندگو (وسیله‌ای برای صحبت کردن)
  • شل = مترجم پشت خط تلفن که زبان تو رو به زبان مخاطب تبدیل می‌کنه

تو فرمان را در ترمینال وارد می‌کنی → ترمینال آن را می‌فرستد به شل → شل آن را برای Kernel ترجمه و اجرا می‌کند → خروجی را برمی‌گرداند به ترمینال.


۴. انواع Shell در لینوکس

چند نمونه معروف:

  • Bash → پیش‌فرض بیشتر توزیع‌ها
  • Zsh → سریع‌تر و قابل سفارشی‌سازی زیاد
  • Fish → رابط کاربرپسند، پیشنهاد دستورات
  • Sh → شل قدیمی و سبک
  • Ksh → برای اسکریپت‌نویسی سنگین

۵. تفاوت Shell و Terminal در عمل

📌 مثال ۱:

  • وقتی GNOME Terminal را باز می‌کنی، در واقع یک برنامه شبیه پنجره چت باز کردی که داخلش Bash (به عنوان Shell) فعال است.

📌 مثال ۲:
می‌توانی همان شل را بدون ترمینال گرافیکی در حالت TTY (ترمینال متنی مستقیم) باز کنی، مثلاً:

Ctrl + Alt + F3

در این حالت به یک محیط متنی می‌روی که فقط شل در آن اجرا می‌شود.


۶. چطور بفهمیم الان از چه Shell استفاده می‌کنیم؟

در لینوکس دستور زیر را اجرا کن:

echo $SHELL

مثلاً خروجی:

/bin/bash

📌 یعنی الان در Bash هستی.


۷. تغییر Shell پیش‌فرض

مثلاً برای تغییر به Zsh:

sudo apt install zsh          # نصب Zsh
chsh -s /bin/zsh               # تغییر شل پیش‌فرض

بعد باید Logout و Login کنی.


۸. نکات مهم

  • تو می‌توانی یک ترمینال باز کنی و داخل آن هر شل دلخواه را اجرا کنی.
  • حتی می‌توانی در یک سیستم چندین شل مختلف نصب کنی.
  • ترمینال مثل قاب عکس است، تصویر داخل قاب همان شل است.

۹. تمرین عملی

  1. ترمینال را باز کن (در Ubuntu با Ctrl+Alt+T).
  2. دستور زیر را بزن و نوع شل را ببین:
echo $SHELL
  1. یک شل جدید داخل همین ترمینال اجرا کن:
bash     # اجرای مجدد Bash
zsh      # اگر نصب کردی
  1. برای خروج از شل اضافه:
exit

۱۰. جمع‌بندی

  • ترمینال → ابزار نمایش ورودی/خروجی خط فرمان (پنجره یا کانال ارتباطی).
  • شل → برنامه‌ای که دستورات را تفسیر و اجرا می‌کند.
  • هر ترمینال می‌تواند چندین شل مختلف را اجرا کند.
  • Bash رایج‌ترین شل در لینوکس است، ولی Zsh و Fish محبوبیت رو به رشدی دارند.
محمد وب‌سایت

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *