درسنامه ۳-۶: مجوز اجرا و اجرای اسکریپت
در این درس یاد میگیریم چگونه به اسکریپت مجوز اجرایی بدهیم و آن را مثل یک برنامه اجرا کنیم. همچنین تفاوت اجرای اسکریپت با bash و اجرای مستقیم آن را میبینیم.
بررسی مجوزهای یک فایل
برای دیدن مجوزهای فایل از ls -l استفاده میکنیم:
خروجی نمونه:
اگر در ستون اول کنار حروف r و w حرف x (execute) دیده نشود، یعنی فایل هنوز «اجرایی» نیست.
دادن مجوز اجرایی با chmod
برای اینکه سیستم بداند این فایل را میتوان بهعنوان برنامه اجرا کرد، باید به آن مجوز اجرا بدهیم:
حالا اگر دوباره ls -l بگیریم:
چیزی شبیه این میبینیم:
حرف x نشان میدهد که فایل الان قابل اجراست.
اجرای مستقیم اسکریپت (./script.sh)
بعد از دادن مجوز اجرا، میتوانیم فایل را مثل یک برنامه اجرا کنیم:
علامت ./ یعنی «این فایل را از دایرکتوری فعلی اجرا کن». اگر فقط hello.sh را بنویسید، سیستم معمولا آن را پیدا نمیکند؛ چون دایرکتوری فعلی به طور پیشفرض در متغیر PATH نیست.
اجرای اسکریپت با bash
روش دیگر، همان روشی است که قبلا استفاده کردیم:
تفاوتها:
- در روش 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اجرا کنید و تفاوت را حس کنید.
در فصلهای بعدی با حلقهها، توابع و ساختارهای پیشرفتهتر کار خواهیم کرد تا بتوانید اسکریپتهای قویتری برای کارهای روزمرهٔ خود در لینوکس بسازید.