תוכן עניינים:
רצף תווים זה (
#!
) נקרא shebang ומשמש להגיד למערכת ההפעלה באיזה מתורגמן להשתמש כדי לנתח את שאר הקובץ.
הוראת מתורגמן לשבנג
הנחיית המתורגמן של שבנג לובשת את הצורה הבאה:
#!interpreter
- ההוראה חייבת להיות השורה הראשונה בתסריט. ההנחיה חייבת להתחיל בשיבנג
#!
חלל לבן אחרי תווי השיבנג הוא אופציונלי. אינטרפרטר הוא הנתיב המלא לקובץ בינארי (לדוגמה:/bin/sh
,/bin/bash
). טיעוני הפרשנות הם אופציונליים.
דוגמאות:
-
#!/bin/bash
- משתמשbash
כדי לנתח את הקובץ.#!/usr/bin/env perl
- משתמש בפקודתenv
כדי למצוא את הנתיב להפעלהperl
.#!/usr/bin/python
הפעלת הקובץ באמצעות הבינארי שלpython
.
שימוש בשבנג בתסריטים של באש
אם לא צוין שיבנג והמשתמש שמריץ את סקריפט ה- Bash משתמש במעטפת אחרת, הסקריפט ינותח על ידי כל מתורגמן ברירת המחדל שמשמש את אותו מעטפת. לדוגמה, מתורגמן ברירת המחדל עבור
bash
הוא
bash
ו-
zsh
הוא
sh
. כדי להבטיח שהתסריט שלך יתפרש תמיד עם Bash, עליך לציין את הנתיב ההפעלה באמצעות shebang.
ישנן שתי דרכים להשתמש בהנחיית Shebang ולהגדיר את המתורגמן.
-
באמצעות הנתיב המוחלט לבינארית bash:
#!/bin/bash
שימוש בכלי ה-
env
:#!/usr/bin/env bash
היתרון בשימוש בגישה השנייה הוא בכך שהוא יחפש את ההפעלה
$PATH
במשתנה הסביבתי
$PATH
של המשתמש. אם יש יותר ממסלולי נתיב אחד,
bash
הראשונה תשמש את התסריט.
כשמשתמשים באפשרות הראשונה להוספת אופציה לאספקת פגז הבש העבירו אותה למתורגמן. לדוגמה, כדי להריץ את הסקריפט במצב באגים, תשתמש ב-
#!/bin/bash -x
. אם אתה משתמש בשיטת
env
עליך להשתמש
set
כדי להכריז על האפשרות. כדי לאפשר את מצב הבאגים הוספת
set -x
אחרי קו shebang.
דוגמה לסקריפט
בואו ניצור סקריפט פשוט באמצעות shebang שיודפס "שלום, עולם". פתח את עורך הטקסט שלך והדבק את השורה הבאה:
nano hello_world
שלום עולם
#!/bin/bash echo "Hello, World"
כדי להיות מסוגל להריץ את הסקריפט מבלי לציין את המתורגמן משורת הפקודה, עליך להפעיל את הקובץ:
chmod +x hello_world
עכשיו אם אתה יכול להריץ את הסקריפט על ידי הקלדה
./
ואחריו שם הסקריפט:
./hello_world
גובר על השבנג
אם מסיבה כלשהי ברצונך לבטל את המתורגמן שנקבע בשורת Shebang, עליך להריץ את הסקריפט על ידי ציון מפורש של המעטפת המבוקשת.
לדוגמה, כדי להריץ סקריפט שציינו
#!/bin/sh
בשורת Shebang באמצעות מעטפת הבסיס שתקלידו:
bash hello_world
שימו לב, לא כדאי לבטל את מתורגמן הקונכיות שכן הדבר עלול להוביל להתנהגות בלתי צפויה של התסריט.
סיכום
בשלב זה אמורה להיות לך הבנה טובה של מה הוא Shebang וכיצד להשתמש בו בתסריטים של Bash שלך.
מסוף bash