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

جدول المحتويات:

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

فيديو: متى يكون من الأفضل استخدام #! / bin / bash بدلاً من #! / bin / sh في برنامج نصي من Shell؟
فيديو: 5 أوامر CMD في أي ويندوز لازم تكون عارفهم .. هينفعوك جداً 👌 2024, مارس
متى يكون من الأفضل استخدام #! / bin / bash بدلاً من #! / bin / sh في برنامج نصي من Shell؟
متى يكون من الأفضل استخدام #! / bin / bash بدلاً من #! / bin / sh في برنامج نصي من Shell؟
Anonim
عندما تقوم بإنشاء نص برمجي جديد ، فأنت تريد التأكد من أنها خالية من المشكلة قدر الإمكان ، ولكن في بعض الأحيان قد يكون من المربك بعض الشيء معرفة أيها أفضل شيبرد في استخدامك. على هذا الملاحظ ، إن وظيفة SuperUser Q & A اليوم هي الإجابة عن سؤال قارئ مشوش.
عندما تقوم بإنشاء نص برمجي جديد ، فأنت تريد التأكد من أنها خالية من المشكلة قدر الإمكان ، ولكن في بعض الأحيان قد يكون من المربك بعض الشيء معرفة أيها أفضل شيبرد في استخدامك. على هذا الملاحظ ، إن وظيفة SuperUser Q & A اليوم هي الإجابة عن سؤال قارئ مشوش.

تأتي جلسة الأسئلة والأجوبة اليوم مقدمة من SuperUser ، وهي قسم فرعي من Stack Exchange ، وهو عبارة عن مجموعة من المنتديات على مستوى المجتمع المحلي على مواقع الأسئلة والأجوبة.

السؤال

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

When is it more appropriate to use #!/bin/bash rather than #!/bin/sh in a shell script?

متى هو أفضل للاستخدام #! / بن / سحق بدلا من #! / بن / ش في النصي قذيفة؟

الاجابة

الشريك المساهم SuperUser لديه الجواب بالنسبة لنا:

In short:

  • There are several shells which implement a superset of the POSIX sh specification. On different systems, /bin/sh might be a link to ash, bash, dash, ksh, zsh, etc. It will always be sh-compatible though, never csh or fish.
  • As long as you stick to sh features only, you can (and probably even should) use #!/bin/sh and the script should work fine, no matter which shell it is.
  • If you start using bash-specific features (i.e. arrays), you should specifically request bash because, even if /bin/sh already invokes bash on your system, it might not on everyone else’s system, and your script will not run there. The same applies to zsh and ksh, of course.
  • Even if the script is for personal use only, you might notice that some operating systems change /bin/sh during upgrades. For example, on Debian it used to be bash, but was later replaced with the very minimal dash. Scripts which used bashisms but had #!/bin/sh suddenly broke.

However:

  • Even #!/bin/bash is not that correct. On different systems, bash might live in /usr/bin, /usr/pkg/bin, or /usr/local/bin.
  • A more reliable option is #!/usr/bin/env bash, which uses $PATH. Although the env tool itself is not strictly guaranteed either, /usr/bin/env still works on more systems than /bin/bash does.

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

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

موصى به: