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

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

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


توزیع گنو/لینوکس اوبونتو ۲۰ ساله شد 🎉

نویسنده موضوع: سوال راجع به shell  (دفعات بازدید: 866 بار)

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

آفلاین blackknight7323

  • Newbie
  • *
  • ارسال: 7
  • جنسیت : پسر
سوال راجع به shell
« : 30 اردیبهشت 1402، 03:52 ب‌ظ »
تفاوت bin/bash و bin/sh چیه؟  bin/sh در لینوکس من dash هست.میدونم که dash هم یک نوع shell  هست.
چرا دوتا نوع shell داره لینوکس؟
BK7323

آفلاین سید وحید رضا برهانی

  • High Hero Member
  • *
  • ارسال: 1668
  • جنسیت : پسر
  • یک مخالف نرم افزار اوپن سورس
پاسخ : سوال راجع به shell
« پاسخ #1 : 30 اردیبهشت 1402، 04:54 ب‌ظ »
/bin/sh فقط یک شورت کات هست به شل. ببین مثلا فرض کن من بش دارم و تو دش خب حالا اگر یک نرم افزار بخواهد به شل دسترسی داشته باشه باید از کجا بفهمه شل من چیه؟ برای همین مشکل می یاد sh رو اجرا می کنه که هرچیزی که باشه شل کاربر هست.
نرم افزاری که نشه سیخ انگولکش کرد (به هر دلیلی چه به‌خاطر قانون و چه پیچیدگی یا توسعه سریع)نرم افزار آزاد نیست حالا مهم نیست چه بنیادی یا چه افرادی اون رو نوشته باشند یا GPL باشه یانه!
نرم افزار آزاد یک جنبش هست نه یک تیکه کاغذ پاره(GPL)
حق فهمیدن از حق خوندن مهمتره

آفلاین TAHAMOKHTARY

  • Jr. Member
  • *
  • ارسال: 60
  • جنسیت : پسر
  • دنبال یه چیز جدید که یاد بگیرم
پاسخ : سوال راجع به shell
« پاسخ #2 : 30 اردیبهشت 1402، 05:07 ب‌ظ »
/bin/sh فقط یک شورت کات هست به شل. ببین مثلا فرض کن من بش دارم و تو دش خب حالا اگر یک نرم افزار بخواهد به شل دسترسی داشته باشه باید از کجا بفهمه شل من چیه؟ برای همین مشکل می یاد sh رو اجرا می کنه که هرچیزی که باشه شل کاربر هست.
نمیدونم ولی من توی آموزش آقای امیر صمیمی دیدم میگفت دو پوسته ی جدا هستند و هرگز نباید اسکریپت بش رو با sh اجرا کرد.
تشکر! که در این موضوع مرا یاری کردید

آفلاین سید وحید رضا برهانی

  • High Hero Member
  • *
  • ارسال: 1668
  • جنسیت : پسر
  • یک مخالف نرم افزار اوپن سورس
پاسخ : سوال راجع به shell
« پاسخ #3 : 30 اردیبهشت 1402، 08:02 ب‌ظ »
من نمی دونم اونجا چه شرایطی بوده که اینطوری گفتن (مثلا ممکن پوسته پیش فرض zsh بوده و ایشون می خواستن اسکریپت رو با بش اجرا کنند که در اون صورت حرفشون درسته)
ولی وقتی دستور
file /bin/bash رو بزنی خیلی واضح می گه که یک سیمبولیک لینک هست به شل پیشفرض سیستم.
البته شاید من اشتباه بکنم.
نرم افزاری که نشه سیخ انگولکش کرد (به هر دلیلی چه به‌خاطر قانون و چه پیچیدگی یا توسعه سریع)نرم افزار آزاد نیست حالا مهم نیست چه بنیادی یا چه افرادی اون رو نوشته باشند یا GPL باشه یانه!
نرم افزار آزاد یک جنبش هست نه یک تیکه کاغذ پاره(GPL)
حق فهمیدن از حق خوندن مهمتره

آفلاین moheb2000

  • Sr. Member
  • *
  • ارسال: 297
  • جنسیت : پسر
  • Hello, World
    • mebrahimi.ir
پاسخ : سوال راجع به shell
« پاسخ #4 : 30 اردیبهشت 1402، 08:18 ب‌ظ »
/bin/sh فقط یک شورت کات هست به شل. ببین مثلا فرض کن من بش دارم و تو دش خب حالا اگر یک نرم افزار بخواهد به شل دسترسی داشته باشه باید از کجا بفهمه شل من چیه؟ برای همین مشکل می یاد sh رو اجرا می کنه که هرچیزی که باشه شل کاربر هست.
نمیدونم ولی من توی آموزش آقای امیر صمیمی دیدم میگفت دو پوسته ی جدا هستند و هرگز نباید اسکریپت بش رو با sh اجرا کرد.

دلیل این گفته این بوده که bash script یک سری تفادت هایی در سینتکس داره که روی بقیه شل ها مثل zsh اجرا نمیشه بنابراین وقتی یک برنامه bash script می نویسید حتما باید با /usr/bash اجرا شه تا اگه شل پیشفرض کاربر، چیزی غیر از بش مانند zsh یا fish باشه با اونها اجرا نکنه و با خطا مواجه نشه. به عبارتی اگه شل پیشفرض شما zsh باشه ولی بالای اسکریپت خودتون نوشته باشید:
#!/bin/bash
اسکریپت شما با bash اجرا خواهد شد و با ارور مواجه نمیشید

آفلاین esmaeelE

  • ناظر انجمن
  • *
  • ارسال: 1270
  • جنسیت : پسر
پاسخ : سوال راجع به shell
« پاسخ #5 : 31 اردیبهشت 1402، 11:45 ق‌ظ »
پوسته(Shell) رابط کاربری در سیستم‌عامل است که می‌تونه متنی یا گرافیکی باشه.
پوستهٔ گرافیکی همون محیط میزکاری است که استفاده می‌کنید مانند گنوم، XFCE
پوستهٔ متنی در رابط کاربری متنی(شبیه‌ساز پایانه) اجرا می‌شود (برای نمونه‌ BASH)

پوسته در ویکی فارسی اوبونتو

می‌تونید انواع مختلفی پوسته روی سیستم نصب کنید. همانطور که می‌شود همزمان دو محیط میزکار داشت محدودیت در پوستهٔ متنی هم وجود ندارد.

sh روی سیستم‌های امروزی یک میانبر به پوسته‌ای دیگر است و به نظر برای سازگاری با نسخه‌های پیشین نگه‌داری شده است به این شکل که برنامه‌های قدیمی نوشته‌شده بدون تغییر خاصی روی سیستم‌های جدید قابل اجرا باشند.
در اصل sh نام پوستهٔ اولیهٔ یونیکس بوده است.

می‌تونید با ترکیب فرمان‌های زیر دقیق بررسی کنید که هر نام به کدام پوسته اشاره دارد.

whereis sh
ls -l /usr/bin/sh

خروجی

دبیان
$ ls -l /usr/bin/sh
lrwxrwxrwx 1 root root 4 Nov  2  2022 /usr/bin/sh -> dash

ردهت
$ ls -l /usr/bin/sh
lrwxrwxrwx 1 root root 4 Nov  2  2022 /usr/bin/sh -> dash

اوراکل سولاریس
$ ls -ltrh /usr/bin/sh
lrwxrwxrwx   1 root     root          13 Oct 28  2020 /usr/bin/sh -> sparcv9/ksh93

روی این سیستم sh به korn shell اشاره می‌کند.
چرا اوبونتو پیوند sh را روی dash به جای bash تنظیم کرده است؟

dash برای اجرای کدنوشته‌ها سریع‌تر از bash است که برای کاربردهای تعاملی مناسب است.