30Jul

כאשר עדיף להשתמש #!/bin/ bash במקום #!/bin/ sh ב Shell סקריפט?

כאשר אתה יוצר סקריפט פגז חדש, אתה רוצה לוודא שזה כמו בעיה חופשית ככל האפשר, אבל לפעמים זה יכול להיות קצת מבלבל לדעת איזה שבנג הוא הטוב ביותר עבורך להשתמש.בפתק זה, כותב המו"ל של היום, Q & A, יש את התשובה לשאלת הקורא המבולבל.

שאלה של היום &מפגש תשובה מגיע אלינו באדיבות SuperUser - חלוקה של סטאק שערי, קהילה מונחה קיבוץ של Q & אתרי אינטרנט.

השאלה

SuperUser הקורא Hendre רוצה לדעת מתי עדיף להשתמש #!/bin/ bash במקום #!/bin/ AS ב סקריפטים פגז:

מתי זה מתאים יותר להשתמש #!/bin/ bash במקום #!/bin/ sh בתסריט פגז?

מתי עדיף להשתמש #!/bin/ bash במקום #!/bin/ sh בתסריט פגז?

תשובה

SuperUser תרומה גוברת יש את התשובה עבורנו:

בקיצור:

  • יש כמה פגזים אשר מיישמים את superset של מפרט POSIX ש.במערכות שונות, /bin/ sh עשוי להיות קישור לאפר, bash, מקף, ksh, zsh, וכו 'זה תמיד יהיה תואם sh אף, אף פעם לא csh או דגים.
  • כל עוד אתה מקל על sh רק תכונות, אתה יכול( וכנראה אפילו צריך) להשתמש #!/bin/ AS ואת התסריט צריך לעבוד בסדר, לא משנה איזה פגז זה.
  • אם תתחיל להשתמש בתכונות ספציפיות ל- bash( כלומר מערכים), עליך לבקש באופן ספציפי את ה- bash מכיוון שגם אם /bin/ sh כבר מפעיל את המערכת שלך, ייתכן שהיא לא תופיע במערכת של כולם, והסקריפט שלך לא יפעל שם.כנ"ל לגבי zsh ו ksh, כמובן.
  • גם אם התסריט מיועד לשימוש אישי בלבד, ייתכן שתבחין כי מערכות הפעלה מסוימות משנות את /bin/ sh במהלך שדרוגים.לדוגמה, על דביאן זה היה להיות bash, אבל הוחלף מאוחר יותר עם מקף מינימלי מאוד.סקריפטים אשר השתמשו bashisms אבל היה #!לפתע נשבר.

עם זאת:

  • אפילו #!/bin/ bash הוא לא נכון.במערכות שונות, bash עשוי לחיות /usr/ bin , /usr/pkg/ bin , או /usr/local/ bin .
  • אפשרות אמינה יותר היא #!, אשר משתמש $ PATH .למרות כלי env עצמו אינו מובטח בהחלט, /usr/bin/ env עדיין עובד על מערכות יותר מאשר /bin/ bash עושה.

יש מה להוסיף להסבר?נשמע את ההערות.רוצה לקרוא תשובות נוספות ממשתמשים אחרים בעלי ידע טכנולוגי?בדוק את נושא הדיון המלא כאן.

תמונה אשראי: ויקיפדיה