BASH چیست؟ معرفی Bourne Again Shell لینوکس به زبان ساده
🐚 BASH چیست؟ معرفی Bourne Again Shell لینوکس به زبان ساده
اگر تازه با دنیای لینوکس آشنا شدهاید، حتماً بارها و بارها با واژههای «شل» (Shell) و «بش» (Bash) برخورد کردهاید. شاید برایتان سوال باشد که اینها دقیقاً چه هستند و چه نقشی در سیستمعامل دارند. در این مقاله، قصد داریم به زبانی بسیار ساده و با تکیه بر منابع معتبر، به معرفی BASH یا Bourne Again Shell بپردازیم و ببینیم که چرا اینقدر مهم و محبوب است.
📌 شل (Shell) چیست؟
برای درک BASH، اول باید بدانیم «شل» چیست. فرض کنید سیستمعامل (هسته یا Kernel) یک زبان ماشینی پیچیده صحبت میکند که شما بهعنوان یک کاربر عادی، آن را نمیفهمید. شل دقیقاً همان مترجم یا واسطی است که حرف شما را به زبان سیستمعامل ترجمه میکند.
به زبان سادهتر:
- شل یک برنامه است که دستورات متنی شما را دریافت میکند.
- آنها را تفسیر (Interpret) کرده و برای اجرا به هسته سیستمعامل (Kernel) میفرستد.
- نتیجه را دوباره به شما نشان میدهد.
در واقع، شل لایه رابط کاربری با هسته سیستمعامل است و بدون آن، تعامل با سیستمعامل از طریق خط فرمان تقریباً غیرممکن بود.
🐚 BASH دقیقاً چیست؟
حالا که با مفهوم شل آشنا شدید، باید بدانید که انواع مختلفی از شل در دنیای لینوکس وجود دارد. معروفترین و پرکاربردترین آنها، BASH است.
-
نام و معنی: BASH مخفف
Bourne Again SHellاست. این نام یک جناس (Pun) جالب است؛ هم به شل قدیمی و معروف یونیکس به نام Bourne Shell (یاsh) اشاره دارد که استیون بورن (Stephen Bourne) آن را ساخته بود، و هم به مفهوم «تولد دوباره» (Born Again) اشاره دارد. -
تاریخچه: BASH در سال ۱۹۸۹ توسط برایان فاکس (Brian Fox) برای پروژه GNU نوشته شد. هدف از پروژه GNU، ساختن یک سیستمعامل کاملاً آزاد (مشابه یونیکس) بود. بنابراین، BASH به عنوان جایگزین رایگان و متنباز برای Bourne Shell یونیکس طراحی شد.
-
جایگاه امروز: BASH امروزه شل پیشفرض در اکثر توزیعهای لینوکس است و به استانداردی برای سیستمعاملهای شبهیونیکس تبدیل شده است.
✨ چرا BASH اینقدر محبوب است؟ (ویژگیها)
محبوبیت BASH به دلیل ترکیب قدرت، سادگی و انعطافپذیری است:
-
سازگاری با استانداردها: BASH با شل اصلی یونیکس (
sh) سازگار است و بهعنوان یک پیادهسازی از استاندارد IEEE POSIX (استاندارد دنیای یونیکس) طراحی شده است. این یعنی اسکریپتهایی که برایshنوشته شدهاند، معمولاً در BASH هم اجرا میشوند. -
ویژگیهای قدرتمند: BASH تنها یک مترجم ساده نیست، بلکه یک زبان برنامهنویسی کامل محسوب میشود. برخی از امکانات کلیدی آن عبارتند از:
- تاریخچه دستورات (Command History): میتوانید دستورات قبلی را مشاهده و دوباره اجرا کنید.
- متغیرها و آرایهها (Variables & Arrays): برای ذخیره و مدیریت دادهها.
- حلقهها و شرطها (Loops & Conditionals): مانند
for،while،ifوcaseبرای نوشتن اسکریپتهای هوشمند. - مدیریت فرآیندها (Job Control): امکان اجرای برنامهها در پسزمینه (
&) و مدیریت آنها. - تکمیل خودکار با کلید Tab: که کار تایپ کردن را بسیار سریعتر میکند.
-
سادگی و همهجاگیری: BASH بر اساس فلسفه طراحی یونیکس ساخته شده که میگوید «برنامهها یک کار را انجام میدهند و آن را به خوبی انجام میدهند». همچنین، BASH روی تمام نسخههای یونیکس و حتی روی ویندوز (از طریق WSL) قابل اجراست.
🆚 BASH در مقایسه با سایر شلها
اگرچه BASH محبوبترین است، شلهای دیگری نیز وجود دارند:
| شل (Shell) | توضیح مختصر |
| :--- | :--- |
| sh (Bourne Shell) | شل اصلی و قدیمی یونیکس. پایه و اساس BASH است. |
| BASH | نسخه بهبودیافته sh با امکانات بیشتر. استاندارد فعلی لینوکس. |
| Zsh (Z Shell) | بسیار قدرتمند و قابل شخصیسازی. محبوب بین کاربران حرفهای. |
| Fish (Friendly Shell) | مدرن و کاربرپسند با امکانات جذاب، مناسب برای مبتدیان. |
| Dash | بسیار سبک و سریع. معمولاً در فرآیندهای بوت سیستم استفاده میشود. |
🖥️ مفاهیم پایهای در محیط BASH
در محیط BASH، با چند مفهوم ساده روبرو میشوید:
- Terminal (ترمینال): پنجرهای که BASH در آن اجرا میشود و شما دستورات را تایپ میکنید.
- Prompt (اعلان): متنی که قبل از مکان تایپ دستور نمایش داده میشود و معمولاً شامل نام کاربری، نام کامپیوتر و مسیر فعلی است.
- اگر اعلان به
#ختم شود، یعنی شما کاربر ریشه (root) یا مدیر سیستم هستید. - اگر به
$ختم شود، یعنی یک کاربر عادی هستید.
- اگر اعلان به
- Job (وظیفه): به هر برنامهای که در BASH اجرا میشود، یک Job گفته میشود. با استفاده از علامت
&میتوانید یک Job را در پسزمینه (Background) اجرا کنید تا ترمینال را اشغال نکند.
💎 جمعبندی
BASH یا Bourne Again Shell، قلب تپنده سیستمعامل لینوکس در دنیای خط فرمان است. این یک مفسر خط فرمان و زبان اسکریپتنویسی قدرتمند است که به شما امکان میدهد با سیستمعامل خود به صورت مستقیم و کارآمد ارتباط برقرار کنید. اگرچه در نگاه اول ممکن است پیچیده به نظر برسد، اما با یادگیری اصول اولیه آن، دروازهای از قدرت و کنترل را به روی خود باز خواهید کرد که محیطهای گرافیکی به ندرت میتوانند ارائه دهند.