# درسنامه ۳-۶: مجوز اجرا و اجرای اسکریپت در این درس یاد می‌گیریم چگونه به اسکریپت مجوز اجرایی بدهیم و آن را مثل یک برنامه اجرا کنیم. همچنین تفاوت اجرای اسکریپت با `bash` و اجرای مستقیم آن را می‌بینیم. ## بررسی مجوزهای یک فایل برای دیدن مجوزهای فایل از `ls -l` استفاده می‌کنیم: ```bash ls -l hello.sh ``` خروجی نمونه: ```bash -rw-r--r-- 1 user user 50 Dec 1 10:00 hello.sh ``` اگر در ستون اول کنار حروف `r` و `w` حرف `x` (execute) دیده نشود، یعنی فایل هنوز «اجرایی» نیست. ## دادن مجوز اجرایی با chmod برای اینکه سیستم بداند این فایل را می‌توان به‌عنوان برنامه اجرا کرد، باید به آن مجوز اجرا بدهیم: ```bash chmod +x hello.sh ``` حالا اگر دوباره `ls -l` بگیریم: ```bash ls -l hello.sh ``` چیزی شبیه این می‌بینیم: ```bash -rwxr-xr-x 1 user user 50 Dec 1 10:05 hello.sh ``` حرف `x` نشان می‌دهد که فایل الان قابل اجراست. ## اجرای مستقیم اسکریپت (./script.sh) بعد از دادن مجوز اجرا، می‌توانیم فایل را مثل یک برنامه اجرا کنیم: ```bash ./hello.sh ``` علامت `./` یعنی «این فایل را از دایرکتوری فعلی اجرا کن». اگر فقط `hello.sh` را بنویسید، سیستم معمولا آن را پیدا نمی‌کند؛ چون دایرکتوری فعلی به طور پیش‌فرض در متغیر `PATH` نیست. ## اجرای اسکریپت با bash روش دیگر، همان روشی است که قبلا استفاده کردیم: ```bash bash hello.sh ``` تفاوت‌ها: - در روش `bash hello.sh` حتی اگر مجوز اجرا نداشته باشید، معمولا اسکریپت اجرا می‌شود؛ چون شما به `bash` می‌گویید این فایل متنی را بخوان و اجرا کن. - در روش `./hello.sh` سیستم به مجوز `x` روی خود فایل نگاه می‌کند؛ اگر نباشد، خطای «Permission denied» می‌گیرید. در عمل هر دو روش مفیدند؛ اما برای اسکریپت‌هایی که می‌خواهید مثل یک برنامهٔ مستقل استفاده کنید، دادن مجوز اجرا و استفاده از `./script.sh` رایج‌تر است. ## جمع‌بندی فصل تا این‌جا در این فصل (شروع برنامه‌نویسی Bash) تا این درس یاد گرفتید که: - Bash شل رایج لینوکس است و اسکریپت Bash فایلی متنی حاوی مجموعه‌ای از دستورات است. - می‌توانید اولین اسکریپت خود را با `#!/bin/bash` و چند دستور ساده بسازید و با `bash script.sh` اجرا کنید. - متغیرها به شما اجازه می‌دهند مقادیر را با نام ذخیره کنید و در خروجی استفاده کنید. - با `read` و آرگومان‌های خط فرمان (`$1`, `$2`, ...) می‌توانید از کاربر ورودی بگیرید. - با ساختار `if` و عملگرهای مقایسه‌ای، اسکریپت‌های تعاملی و هوشمندتر بسازید. - با `chmod +x` به اسکریپت مجوز اجرا می‌دهید و آن را با `./script.sh` به‌عنوان یک برنامه اجرا می‌کنید. ## تمرین کوتاه - اسکریپتی بنویسید که: - ابتدا نام کاربر را (با آرگومان یا `read`) بگیرد. - اگر نام خالی بود، پیام خطا بدهد و خارج شود. - در غیر این صورت، یک پیام خوشامدگویی چاپ کند. - به اسکریپت مجوز اجرا بدهید و آن را هم با `bash script.sh` و هم با `./script.sh` اجرا کنید و تفاوت را حس کنید. در فصل‌های بعدی با حلقه‌ها، توابع و ساختارهای پیشرفته‌تر کار خواهیم کرد تا بتوانید اسکریپت‌های قوی‌تری برای کارهای روزمرهٔ خود در لینوکس بسازید.