الصفحة الرئيسية » howto » متى يكون من الأفضل استخدام #! / bin / bash بدلاً من #! / bin / sh في برنامج نصي من Shell؟

    متى يكون من الأفضل استخدام #! / bin / bash بدلاً من #! / bin / sh في برنامج نصي من Shell؟

    عندما تقوم بإنشاء نص برمجي جديد ، فأنت تريد التأكد من أنها خالية من المشكلة قدر الإمكان ، ولكن في بعض الأحيان قد يكون من المربك بعض الشيء معرفة أي شيبانجي هو الأفضل بالنسبة لك. على هذا النغمة ، فإن وظيفة SuperUser Q & A اليوم لديها الإجابة على سؤال قارئ مشوش.

    تأتي جلسة الأسئلة والأجوبة اليوم مقدمة من SuperUser-a subdivision of Stack Exchange ، وهي مجموعة مجتمعية مدفوعة من مواقع Q & A.

    السؤال

    يريد قارئ SuperHerer Hendre أن يعرف متى يكون من الأفضل استخدامه #! / بن / سحق بدلا من #! / بن / ش في نصوص shell:

    متى يكون أكثر ملاءمة للاستخدام #! / بن / سحق عوضا عن #! / بن / ش في برنامج نصي shell?

    متى هو أفضل للاستخدام #! / بن / سحق بدلا من #! / بن / ش في برنامج نصي shell?

    الاجابة

    لدى Supermaerer contributors grawity الإجابة لنا:

    بالمختصر:

    • هناك العديد من القذائف التي تنفذ مجموعة شاملة لمواصفات POSIX sh. على أنظمة مختلفة, / بن / ش قد يكون رابطًا للرماد ، و bash ، و dash ، و ksh ، و zsh ، وما إلى ذلك. سيظل دائمًا متوافقًا مع sh ، أو csh أو fish أبدًا.
    • طالما أنك تلتزم بميزات sh فقط ، يمكنك (بل وربما ينبغي) استخدامها #! / بن / ش والسيناريو ينبغي أن تعمل بشكل جيد ، بغض النظر عن أي قذيفة هو.
    • إذا بدأت في استخدام ميزات bash-specific (مثل المصفوفات) ، فيجب أن تطلب bash على وجه التحديد ، حتى لو / بن / ش يستدعي bash بالفعل على نظامك ، قد لا يكون على نظام الجميع ، ولن يتم تشغيل النص البرمجي هناك. وينطبق الشيء نفسه على zsh و ksh ، بالطبع.
    • حتى إذا كان البرنامج النصي مخصصًا للاستخدام الشخصي فقط ، فقد تلاحظ تغير بعض أنظمة التشغيل / بن / ش خلال الترقيات. على سبيل المثال ، على ديبيان ، كانت تستخدم في bash ، ولكن تم استبدالها لاحقًا بالشرطة الصغيرة للغاية. البرامج النصية التي تستخدم bashisms ولكن كان #! / بن / ش كسر فجأة.

    ومع ذلك:

    • حتى في #! / بن / سحق ليس هذا صحيح. على أنظمة مختلفة ، قد باش في العيش / البيرة / بن, / البيرة / PKG / بن, أو / البيرة / المحلية / بن.
    • خيار أكثر موثوقية هو #! / usr / bin / env bash, الذي يستخدم $ PATH. على الرغم من أن أداة env نفسها ليست مضمونة بدقة, / البيرة / بن / الحياة الفطرية لا يزال يعمل على أنظمة أكثر من / بن / سحق هل.

    هل لديك شيء تضيفه إلى الشرح؟ الصوت قبالة في التعليقات. هل ترغب في قراءة المزيد من الإجابات من مستخدمي Stack Exchange الآخرين المحترفين بالتكنولوجيا؟ تحقق من موضوع المناقشة الكامل هنا.

    صورة الائتمان: ويكيبيديا