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

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید

نویسنده موضوع: انواع روش ها و تفاوت های اجراء فایل های اجرائی، اسکریپت(بش و زبان های مفسری)  (دفعات بازدید: 858 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین 🇬🇧بریتانیای کبیر🇬🇧

  • High Hero Member
  • *
  • ارسال: 2657
  • جنسیت : پسر
  • GOD SAVE THE KING/QUEEN
چون دیدم که در یکی از نوشته های دیروز یکی اومد در مورد یکی از روش های اجراء فایل هایی که مسیرشون در 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، 03:18 ب‌ظ توسط 🇬🇧United Kingdom🇬🇧 »
🇬🇧🏴󠁧󠁢󠁥󠁮󠁧󠁿🏴󠁧󠁢󠁷󠁬󠁳󠁿🏴󠁧󠁢󠁳󠁣󠁴󠁿🇬🇧

آفلاین دانیال بهزادی

  • ناظر انجمن
  • *
  • ارسال: 19720
  • جنسیت : پسر
  • Urahara Kiesuke
    • وبلاگ
اگه این ارسال بهت کمک کرد، دنبال دکمهٔ تشکر نگرد. به جاش تو هم به جامعهٔ آزادت کمک کن

آفلاین 🇬🇧بریتانیای کبیر🇬🇧

  • High Hero Member
  • *
  • ارسال: 2657
  • جنسیت : پسر
  • GOD SAVE THE KING/QUEEN
🇬🇧🏴󠁧󠁢󠁥󠁮󠁧󠁿🏴󠁧󠁢󠁷󠁬󠁳󠁿🏴󠁧󠁢󠁳󠁣󠁴󠁿🇬🇧

آفلاین جعفر فرقانلوژ

  • High Hero Member
  • *
  • ارسال: 5100
  • جنسیت : پسر
  • اممم . اره دیگه! mehr32
این رو ویکی کن
بلد نیستم. از آموزششم چیری نفهمیدم.  :(
با همین حساب اینجا وارد شو . موضوعی که میخوای بنویسی رو جستجو کن اگه نباشه میگه بسازیدش
برای عنوان == یا = ( فکر کنم حکم تگ h1 h2 رو داره ) بذارید دو طرف عنوان ها
برای قرار دادن کد هم الگو کد رو از یک صفحه دیگه با ویرایش برداری
اگه نتونستید بهم پیام بدید میذارمش
دیگر به انجمن باز نخواهم گشت شاید جایی با این نام پیدام کنید اگه کاری با من دارید : qxc9966@protonmail.com

آفلاین Dragon-

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 5124
  • جنسیت : پسر
با 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 داده میشه تا کرنل هر فایلی اونجا هست رو اجرا کنه)

حالا اون مثال اول که گفتم چجوری کار می‌کنه؟
میدونید که زکات علم نشر آن است