انجمن‌های فارسی اوبونتو

کمک و پشتیبانی => راهنماها، نکات و ترفندها => نویسنده: 🇬🇧بریتانیای کبیر🇬🇧 در 14 تیر 1402، 12:23 ب‌ظ

عنوان: انواع روش ها و تفاوت های اجراء فایل های اجرائی، اسکریپت(بش و زبان های مفسری)
ارسال شده توسط: 🇬🇧بریتانیای کبیر🇬🇧 در 14 تیر 1402، 12:23 ب‌ظ
چون دیدم که در یکی از نوشته های دیروز یکی اومد در مورد یکی از روش های اجراء فایل هایی که مسیرشون در PATH نیست یه چیزی گفت، من بیام تفاوت ها  و انواع روش های اجراء فایل هایی که مسیرشون در متغیر PAHT نیست رو بگم
من فقط همین ۶ تا روشو میشناسم. از این ۶ تا هم فقط این تفاوت ها رو میشناسم. اگه نکته ی مهمی یا هر چیزی بود که من نگفتم بگید.(یا اگه جایی رو اشتباه هم گفتم بگید)

نکته: به اینکه اسکریپت در پوسته ی جاری یا پوسته ی جدید اجرا میشه دقت کنید. چون متغیر ها و تغیراتی که در پوسته ی جدید ایجاد شده، با پایان اسکریپت از بین میره و شما اگه اون تغیراتو در فایل bashrc. ذخیره نکرده باشید پوسته های دیگه نمیتونن به اونا دسترسی داشته باشن. برای استفاده(در پوسته ی جدید) از متغیر و توابعی   که فقط در پوسته ی جاری تعریف کردید(در فایل bashrc. نیستن) نیاز دارید که متغیر ها و توابعو export کنید. اگه این نکته رو نفهمیدید عیبی نداره، چند بار که پوسته هارو درون هم اجرا کردید و خواستید که اطلاعات یک پوسته رو در پوسته ی دیگه اجرا کنید متوجه می‌شید.

روش اول:
bash file.shمحل اجراء: یک پوسته جدید
مواردی که میشه اجراء کرد: فقط اسکریپت bash
نیاز به دسترسی x: خیر

روش دوم:
source file.shمحل اجراء: پوسته جاری
مواردی که میشه اجراء کرد: فقط اسکریپت bash
نیاز به دسترسی x: خیر

روش سوم:
. file.shاین روش کاملا مثل روش دوم هست. اصلا [.] یک کوتاه نوشت برای دستور source هست.

روش چهارم:
./file.pyمحل اجراء: پوسته جدید
مواردی که میشه اجراء کرد: فایل اجرائی، اسکریپت بش، اسکریپت به زبان های مفسری و پوسته های دیگه
نیاز به دسترسی x: بله
نکته: برای اینکه بتونید اسکریپت به زبان های مفسری یا پوسته های دیگه رو اجرا کنید باید در ابتدای فایل مفسرو با روش زیر مشخص کنید.(کلا همیشه در هر اسکریپتی که قرار از بش اجرا شه حتی اگه اسکریپت خود بش باشه استاندارد اینکه مفسرو در اول فایل مشخص کنید.
#!/bin/python3
روش پنجم:
bash -c 'command'این روش مثل روش اول هست ولی خوبش اینکه میشه علاوه بر اسکریپت شل، فایل دیگه رو مثلا به صورت زیر در پوسته جدید اجرا کرد
bash -c 'python3 main.py'
روش ششم:
Absolute Path/bin/echo salamاین همون روش چهارم هست ولی فرقش این هست که باید در مواردی مثل cron استفاده بشه(اگه PATH تعریف نشه)
نکته: در مثال روش ششم شاخه bin/ در متغیر PATH تعریف شده ولی این متغیر در cron قابل دسترسی نیست، بهتره برای راحتی متغیر PATH در cron تعریف کنید.


در همه روش ها میتویند به چیزایی که اجرا میکنید آرگومان شوت کنید یا position var بدید
عنوان: پاسخ : انواع روش ها و تفاوت های اجراء فایل های اجرائی، اسکریپت(بش و زبان های مفسری)
ارسال شده توسط: دانیال بهزادی در 14 تیر 1402، 01:57 ب‌ظ
این رو ویکی کن
عنوان: پاسخ : انواع روش ها و تفاوت های اجراء فایل های اجرائی، اسکریپت(بش و زبان های مفسری)
ارسال شده توسط: 🇬🇧بریتانیای کبیر🇬🇧 در 14 تیر 1402، 02:03 ب‌ظ
این رو ویکی کن
بلد نیستم. از آموزششم چیری نفهمیدم.  :(
عنوان: پاسخ : انواع روش ها و تفاوت های اجراء فایل های اجرائی، اسکریپت(بش و زبان های مفسری)
ارسال شده توسط: جعفر فرقانلوژ در 14 تیر 1402، 04:10 ب‌ظ
این رو ویکی کن
بلد نیستم. از آموزششم چیری نفهمیدم.  :(
با همین حساب اینجا وارد شو . موضوعی که میخوای بنویسی رو جستجو کن اگه نباشه میگه بسازیدش
برای عنوان == یا = ( فکر کنم حکم تگ h1 h2 رو داره ) بذارید دو طرف عنوان ها
برای قرار دادن کد هم الگو کد رو از یک صفحه دیگه با ویرایش برداری
اگه نتونستید بهم پیام بدید میذارمش
عنوان: پاسخ : انواع روش ها و تفاوت های اجراء فایل های اجرائی، اسکریپت(بش و زبان های مفسری)
ارسال شده توسط: Dragon- در 19 تیر 1402، 05:14 ب‌ظ
با ld-linux هم میشه
/lib64/ld-linux-x86-64.so.2 /bin/ls


روش چهارم و ششم که گفتید عملا یکیه. برای اجرای یه فایل که دسترسی اجرایی داره، می‌تونید مسیری که به اون فایل ختم میشه رو بنویسید.
مثلا برای اجرای ls اینجوری:
/bin/apt

مسیردهی می‌دونه یه شکل مطلق (مثل بالا) یا به طور نسبی باشه. مثلا اگه داخل دایرکتوری /etc/ باشید، می‌تونید اینجوری هم ls رو اجرا کنید:
../bin/ls

الان فرض کنید داخل دایرکتوری زیر قرار دارید
/home/myusr/
و می‌خواهید فایل prog که توی همین دایرکتوری قرار داره رو اجرا کنید. با هر سه تا روش پایین میشه اینکار رو انجام داد:
/home/myusr/prog
./prog
../myusr/prog

اولی که مشخصه. مسیر مطلق رو داده.
توی دومی مسیر نسبی داده. میگه توی دایرکتوری فعلی، فایل prog رو اجرا کن.
توی سومی هم به صورت نسبی مشخص کرده. گفته برو دایرکتوری بالایی بعد وارد دایرکتوری myusr شو و فایل prog رو اجرا کن. (من برای راحتی جمله بندی از عبارت "وارد شو" و "برو" استفاده کردم. ولی در واقعیت هیچ تغییر دایرکتوری انجام نمیشه.  این مسیر به فراخوان سیستمی ()exec داده میشه تا کرنل هر فایلی اونجا هست رو اجرا کنه)

حالا اون مثال اول که گفتم چجوری کار می‌کنه؟