وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

تفاوت #!/bin/sh و #!/bin/ چیست؟bash?

0 32
زمان لازم برای مطالعه: 4 دقیقه


برای اکثر افرادی که از رایانه استفاده می کنند، تایپ دستورات در خط فرمان سیستم عامل مربوطه آنها چیز جدیدی نیست. اگرچه رایانه‌های مدرن معمولاً با استفاده از رابط کاربری گرافیکی تعامل دارند، امکان استفاده از دستورات اجرایی و قابل تایپ با پایانه‌های دستوری آنها وجود دارد.

این به ویژه برای کاربران لینوکس و توزیع‌های آن صادق است. با استفاده از دستور terminal برای انجام کارهای منظم بسیار رایج است.

برنامه هایی که در پشت صحنه فرمان کار می کنند terminal “پوسته” نامیده می شوند. پوسته ها به عنوان برنامه هایی تعریف می شوند که دستورات را دریافت می کنند، آنها را تفسیر می کنند و سپس به کامپیوتر دستور می دهند تا عملکردی را که کاربر می خواهد انجام دهد. بنابراین، هر چیزی که به آن کد می‌دهید، بخشی از یک پوسته است.

در لینوکس، کاربران از زبان برنامه نویسی به نام “sh” برای کدنویسی در پوسته استفاده می کنند. “Sh” همچنین به عنوان “Bourne Shell” شناخته می شود، برای استفاده با سیستم های UNIX که با استفاده از استانداردهای POSIX تعریف شده اند، توسعه یافته است.

“Bash” به طور مشابه یک زبان برنامه نویسی پوسته است. همچنین به عنوان “پوسته دوباره بورن” شناخته می شود. امروزه Bash زبان برنامه نویسی پیش فرض برای پوسته ها در لینوکس است. Bash توانایی‌های مشابه شل را دارد، اما عملکردهای دیگر و پسوندهای بهتری را در طول زمان توسعه داد.

اگر شما یک کاربر لینوکس هستید و می خواهید تفاوت بین Shell و Bash را بدانید، به جای درستی آمده اید زیرا ما به عمق و تشریح تفاوت های بین دو زبان برنامه نویسی پوسته خواهیم پرداخت.

Bin/sh

تا کنون، ما ثابت کرده ایم که “sh” “شل” نامیده می شود و یک زبان برنامه نویسی پوسته برای سیستم های مبتنی بر یونیکس است. همچنین گفتیم که از استانداردهای POSIX پیروی می کند. استانداردهای POSIX توسط IEEE برای سازگاری سیستم عامل های مختلف توسعه داده شد. بنابراین، استانداردهای POSIX تضمین می‌کنند که هر چیزی که با استفاده از پوسته توسعه داده می‌شود، می‌تواند در سیستم‌عامل‌های دیگر نیز استفاده شود.

پوسته را بهتر می توان به عنوان یک مشخصات توصیف کرد، نه یک پیاده سازی. یک پیاده سازی را می توان به عنوان یک زبان برنامه نویسی کامل با کامپایلرهای جداگانه خود مانند C و C++ توصیف کرد.

پیشنهاد می‌کنیم بخوانید:  روش استفاده از آرایه در دستور awk

شل مانند زبان برنامه نویسی سنتی نیست. بنابراین، نمی توان آن را یک پیاده سازی نامید. Shell نحو و معنایی را که برای برنامه‌نویسی در پوسته لینوکس استفاده می‌شود، به تفصیل شرح می‌دهد.

برای سیستم عامل های مختلف، پوسته را می توان با پیاده سازی های مختلف مرتبط کرد. به عنوان مثال، شل اجرای “dash” در لینوکس، “Z shell” برای مک و “ash” برای OpenWRT را دارد.

صندوقچه/bash

Bash را می توان یک پیاده سازی از Shell نامید که برای آن توسعه یافته است GNU پروژه همانطور که قبلا ذکر شد، تمام ویژگی های پوسته را شامل می شود، اما پسوندهای بهتری را توسعه داده است. از این رو، می‌توان آن را یک ابرمجموعه Shell، شامل ایده‌هایی که از پوسته‌های دیگر مانند پوسته C گرفته شده است، نامید.

Bash را می توان هم برای اسکریپت نویسی و هم برای پیاده سازی استفاده کرد. در حالت پیاده سازی، bash شکل فرمان را به خود می گیرد terminal از لینوکس امروزی برای اوبونتو، پوسته اسکریپت dash و پیش فرض است terminal است bash.

از آنجایی که یک سوپرست است، تمام ویژگی‌های Bash توسط پوسته‌های دیگر پشتیبانی نمی‌شوند. Bash می‌تواند بیشتر وظایفی را که توسط پوسته‌های دیگر انجام می‌شود، اجرا کند، اما برعکس این موضوع صادق نیست. پوسته‌های دیگر محدودیت‌هایی دارند و ویژگی‌های زیادی که توسط Bash ارائه شده است ندارند.

برخی از ویژگی های منحصر به فرد Bash به شرح زیر است.

  • جایگزینی فرآیند
  • متغیرهای محدوده
  • آرایه ها
  • Bash از بسیاری از متغیرهای خاص مانند $RANDOM، $SECONDS و غیره پشتیبانی می کند.

مزایای استفاده از شل

اسکریپت نویسی پوسته با استفاده از انواع پوسته های موجود انجام می شود. از آنجایی که Bash رایج ترین و پرکاربردترین است، مزایای آشکاری دارد bash بیش از پوسته اما، هنگام استفاده از Shell نسبت به Bash، یک مزیت بزرگ وجود دارد که قابل حمل بودن است.

از آنجایی که پوسته از استانداردهای POSIX پیروی می کند، یک اسکریپت نوشته شده در شل می تواند بدون هیچ مشکلی در هر سیستم لینوکس استفاده شود. همین را نمی توان در مورد بش گفت. همانطور که Bash افزونه‌ها و ویژگی‌های بهتری را اضافه کرد، به آرامی از استانداردهای POSIX دور شد و بنابراین قابلیت حمل آن را تحت تأثیر قرار داد.

پیشنهاد می‌کنیم بخوانید:  روش استفاده از Nohup در لینوکس

مزایای استفاده از Bash

همانطور که قبلا ذکر شد، Bash دارای ویژگی های پیشرفته تری نسبت به شل است. داشتن ویژگی‌های پیشرفته‌تر باعث می‌شود Bash در عملکرد آن قابل استفاده‌تر و مؤثرتر باشد. به همین دلیل است که Bash در مقایسه با Shell بیشتر مورد استفاده قرار می گیرد.

مزیت بزرگ Bash این است که به راحتی می توان آن را در مقایسه با Shell اشکال زدایی کرد. یافتن خطاها و رفع اسکریپت ها در Shell بسیار سخت تر از یافتن خطا در اسکریپت نوشته شده در Bash است.

اشاره کردیم که Bash از استانداردهای POSIX دور شده است. اما، اگر کاربری بخواهد Bash را بیشتر از POSIX پشتیبانی کند، Bash یک ویژگی سوئیچ POSIX را ارائه می دهد. با تایپ دستور زیر می توان آن را فعال کرد.

$ bash –posix

نتیجه

این مقاله به بررسی پوسته ها و زبان هایی که کاربران می توانند برای نوشتن اسکریپت های پوسته استفاده کنند، پرداخته است. دو زبان اصلی که مطرح شدند Shell و Bash بودند. ما عمیقاً هر دوی آنها را توصیف کردیم تا بتوانیم تفاوت ها را به درستی توضیح دهیم. Bash نسخه جدیدتر و بهبود یافته Shell است و بنابراین رای ما را به عنوان زبان پوسته بهتر می گیرد. ویژگی های ارائه شده و مزایای Bash نسبت به شل بسیار سنگین است. بنابراین، انتخاب Bash به جای Shell برای نوشتن اسکریپت های Shell ما آسان است.

امیدواریم بتوانیم تفاوت ها را به وضوح توضیح دهیم و اکنون بدانید که هنگام استفاده از Shell یا Bash با چه چیزی سر و کار دارید. ما همچنین امیدواریم که ما بین Shell و Bash را برای شما راحت‌تر انتخاب کرده باشیم.

برای نگارش بخشهایی از این متن ممکن است از ترجمه ماشینی یا هوش مصنوعی GPT استفاده شده باشد
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم

زمان انتشار: 1402-12-30 05:10:04

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید