پرستو هدایتی
پرستو هدایتی
خواندن ۲ دقیقه·۳ سال پیش

شبنگ یا همون shebang تو لینوکس دقیقا چیه؟

اگر لینوکسی باشید یحتمل بخش زیادی از کار هاتون رو داخل ترمینال انجام میدید.

ممکنه فایل های مختلفی با فرمت های متفاوت داشته باشید مثل فایل های پایتون ، جاوا اسکریپت و یا ...

و یا حتی اسکریپتی برای لینوکستون نوشته باشید با پسوند sh. ، برای اجرا کردن هرکدوم از این فایل ها نیاز هستش که اول مجموعه ای که قراره این فایل رو اجرا کنه رو بخونید و بعد اسم فایل رو بهش بدید مثلا :

برای اجرا کردن فایل hi.sh که یک اسکریپت برای سیستم عاملمون هستش رو میخوایم اجرا کنیم:

فایل اسکریپت ما فقط قراره یک جمله ای رو به کاربر نشون بده. همونطور که تو خط پایین میبینید فایل ما دسترسی اجرایی شدن یا همون execute شدن رو نداره.

دسترسی های فایل ها به این صورت هست که ( کاراکتر اول رو کنار میزاریم چون برای نشون دادن نوع فایل هستش ) به ترتیب ۳ تای اول برای صاحب فایل ، ۳ تای دوم برای همگروهی های صاحب فایل و در آخر ۳ تای سوم برای بقیه یوزهاست که میبینید هیچکدوم x ندارن.

پس اول باید با یکی از دستورات زیر x رو اضافه کنیم:

chmod 755 hi.sh chmod +x hi.sh

رنگ فایل ما تغییر کرده و به یک فایل اجرایی تبدیل شده اما هنوز تبدیل نشده به چیزی که میخوایم!

گفتیم برای اجرا کردن فایل ها باید مجموعه ای که وظیفه اجرا کردن فایل هارو به عهده دارن رو هم فراخوانی کنیم.

یعنی الان برای اجرا کردن این اسکریپت هر بار باید بنویسیم:

/bin/bash hi.sh

در اصل بش که وظیفه اجرا کردن اسکریپ هارو داره رو صدا زدیم و بهش اسم فایل رو دادیم.

حالا مسئله اینه که چجوری به لینوکس بفهمونیم که فایلمون مربوط به کدوم بخش اجرایی هستش؟

اینجاست که از shebang استفاده میکنیم. شبنگ یک خط کد هستش که ما به اول کد یا فایلمون اضافه میکنیم. و لینوکس با خوندن اون خط متوجه میشه که برای اجرا کردن این فایل باید سراغ کدوم مجموعه بره.

برای فایل hi.sh به این صورت میشه :

#!/bin/bash

در بعضی از زبان ها # نشونه ی کامنت هستش اما ترکیب !# برای لینوکس نشون دهنده ی شبنگ ( shebang ) هستش. بعد از این علامت آدرس مجموعه اجرا کننده رو میدیم و سیو میکنیم.

حالا هربار که این فایل قراره اجرا بشه کافیه فقط آدرس فایل رو به ترمینال بگیم :

./hi.sh

با دستور بالا به ترمینال میگم که تو همین دایرکتوری که هستم فایل hi.sh رو اجرا کن.

خود لینوکس با خوندن شبنگ اول کد متوجه میشه که باید با کدوم مجموعه اجراش کنه.

دو شبنگ کاربردی رو براتون قرار میدم اما اگر با فایلی کار میکردید و شبنگ مورد نظرتون اینجا نبود کافیه سرچ کنید شبنگ و اسم زبان مورد نظرتون تو سایت های مختلف مثل استک اورفلو حتما میتونید پیداش کنید.

اسکریپت های لینوکس :

#! /bin/bash

اسکریپت های پایتون :

#! /usr/bin/python #! /usr/bin/python3

گاهی ممکنه که این آدرس ها در سیستم شما کار نکنن دلیلش اینه که مثلا پایتون شما تو آدرس دیگه ای نصب شده باشه. این مورد خیلی کم ممکنه پیش بیاد اگر که شما خودتون فایل هارو دستکاری کرده باشید و جا به جا کرده باشین.


لینوکسlpicبرنامه نویسیاسکریپت نویسی
مدتیه که برنامه نویسی میکنم و نظرم اینه هر روز باید بیشتر از دیروز یاد گرفت تا بشه پیشرفت کرد.
شاید از این پست‌ها خوشتان بیاید