از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
تفاوت #!/bin/sh و #!/bin/ چیست؟bash?
سرفصلهای مطلب
این به ویژه برای کاربران لینوکس و توزیعهای آن صادق است. با استفاده از دستور terminal برای انجام کارهای منظم بسیار رایج است.
برنامه هایی که در پشت صحنه فرمان کار می کنند terminal “پوسته” نامیده می شوند. پوسته ها به عنوان برنامه هایی تعریف می شوند که دستورات را دریافت می کنند، آنها را تفسیر می کنند و سپس به کامپیوتر دستور می دهند تا عملکردی را که کاربر می خواهد انجام دهد. بنابراین، هر چیزی که به آن کد میدهید، بخشی از یک پوسته است.
در لینوکس، کاربران از زبان برنامه نویسی به نام “sh” برای کدنویسی در پوسته استفاده می کنند. “Sh” همچنین به عنوان “Bourne Shell” شناخته می شود، برای استفاده با سیستم های UNIX که با استفاده از استانداردهای POSIX تعریف شده اند، توسعه یافته است.
“Bash” به طور مشابه یک زبان برنامه نویسی پوسته است. همچنین به عنوان “پوسته دوباره بورن” شناخته می شود. امروزه Bash زبان برنامه نویسی پیش فرض برای پوسته ها در لینوکس است. Bash تواناییهای مشابه شل را دارد، اما عملکردهای دیگر و پسوندهای بهتری را در طول زمان توسعه داد.
اگر شما یک کاربر لینوکس هستید و می خواهید تفاوت بین Shell و Bash را بدانید، به جای درستی آمده اید زیرا ما به عمق و تشریح تفاوت های بین دو زبان برنامه نویسی پوسته خواهیم پرداخت.
Bin/sh
تا کنون، ما ثابت کرده ایم که “sh” “شل” نامیده می شود و یک زبان برنامه نویسی پوسته برای سیستم های مبتنی بر یونیکس است. همچنین گفتیم که از استانداردهای POSIX پیروی می کند. استانداردهای POSIX توسط IEEE برای سازگاری سیستم عامل های مختلف توسعه داده شد. بنابراین، استانداردهای POSIX تضمین میکنند که هر چیزی که با استفاده از پوسته توسعه داده میشود، میتواند در سیستمعاملهای دیگر نیز استفاده شود.
پوسته را بهتر می توان به عنوان یک مشخصات توصیف کرد، نه یک پیاده سازی. یک پیاده سازی را می توان به عنوان یک زبان برنامه نویسی کامل با کامپایلرهای جداگانه خود مانند C و C++ توصیف کرد.
شل مانند زبان برنامه نویسی سنتی نیست. بنابراین، نمی توان آن را یک پیاده سازی نامید. 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 دور شد و بنابراین قابلیت حمل آن را تحت تأثیر قرار داد.
مزایای استفاده از Bash
همانطور که قبلا ذکر شد، Bash دارای ویژگی های پیشرفته تری نسبت به شل است. داشتن ویژگیهای پیشرفتهتر باعث میشود Bash در عملکرد آن قابل استفادهتر و مؤثرتر باشد. به همین دلیل است که Bash در مقایسه با Shell بیشتر مورد استفاده قرار می گیرد.
مزیت بزرگ Bash این است که به راحتی می توان آن را در مقایسه با Shell اشکال زدایی کرد. یافتن خطاها و رفع اسکریپت ها در Shell بسیار سخت تر از یافتن خطا در اسکریپت نوشته شده در Bash است.
اشاره کردیم که Bash از استانداردهای POSIX دور شده است. اما، اگر کاربری بخواهد Bash را بیشتر از POSIX پشتیبانی کند، Bash یک ویژگی سوئیچ POSIX را ارائه می دهد. با تایپ دستور زیر می توان آن را فعال کرد.
نتیجه
این مقاله به بررسی پوسته ها و زبان هایی که کاربران می توانند برای نوشتن اسکریپت های پوسته استفاده کنند، پرداخته است. دو زبان اصلی که مطرح شدند Shell و Bash بودند. ما عمیقاً هر دوی آنها را توصیف کردیم تا بتوانیم تفاوت ها را به درستی توضیح دهیم. Bash نسخه جدیدتر و بهبود یافته Shell است و بنابراین رای ما را به عنوان زبان پوسته بهتر می گیرد. ویژگی های ارائه شده و مزایای Bash نسبت به شل بسیار سنگین است. بنابراین، انتخاب Bash به جای Shell برای نوشتن اسکریپت های Shell ما آسان است.
امیدواریم بتوانیم تفاوت ها را به وضوح توضیح دهیم و اکنون بدانید که هنگام استفاده از Shell یا Bash با چه چیزی سر و کار دارید. ما همچنین امیدواریم که ما بین Shell و Bash را برای شما راحتتر انتخاب کرده باشیم.
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
زمان انتشار: 1402-12-30 05:10:04