פיקוד פיקוד יוניקס

שֵׁם

באש - גנו בורן שוב

תַקצִיר

bash [options] [file]

תיאור

Bash הוא מתורגמן שפת פקודת sh- compible המאפשר ביצוע פקודות שנקלטו מהקלט הרגיל או מקובץ. Bash גם משלבת תכונות שימושיות של Korn ו C פגזים ( ksh ו csh ).

Bash נועד להיות יישום תואם של מפרט IEEE POSIX Shell ומפרט Tools (קבוצת העבודה IEEE 1003.2).

אפשרויות

בנוסף לאפשרויות הקליפה של תו בודד המתוארות בתיאור הפקודה setin מובנית, bash מפרש את האפשרויות הבאות כאשר הוא מופעל:

מחרוזת c

אם האפשרות -C קיימת, אזי פקודות נקראות מחרוזת . אם יש ארגומנטים לאחר מחרוזת , הם מוקצים הפרמטרים positional, החל מ $ 0 .

-אני

אם האפשרות -i קיימת, הקליפה היא אינטראקטיבית .

-L

הפוך bash לפעול כאילו היה זה שימש כמו פגז כניסה (ראה INVOCATION להלן).

-r

אם האפשרות -R קיימת, הקונכייה הופכת מוגבלת (ראה RESTRICTED SHELL להלן).

- s

אם האפשרות ' s' קיימת, או אם לא נותרו ארגומנטים לאחר עיבוד אופציות, פקודות נקראות מתוך הקלט הסטנדרטי. אפשרות זו מאפשרת להגדיר את הפרמטרים הפוזיציונליים בעת הפעלת פגז אינטראקטיבי.

-D

רשימה של כל המחרוזות המצוטטות פעמיים קודמת $ $ מודפסת על תקן ouput. אלה המיתרים הכפופים לתרגום השפה כאשר האזור הנוכחי אינו C או POSIX . משמעות הדבר היא האפשרות -n ; שום פקודות לא יבוצעו.

[- +] O [ shopt_option ]

shopt_option הוא אחד מאפשרויות הקליפה המקובלות על-ידי shopt המובנה (ראה פקודות SHELL BUILTIN להלן). אם shopt_option קיים, -O קובע את הערך של אפשרות זו; + O מסיר אותו. אם shopt_option אינו מסופק, השמות והערכים של אפשרויות הקליפה המתקבלות על-ידי shopt מודפסים על הפלט הסטנדרטי. אם אפשרות ההעתקה היא + O , הפלט מוצג בתבנית שניתן לעשות בה שימוש חוזר כקלט.

-

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

Bash גם מפרש מספר רב אופי אפשרויות. אפשרויות אלה חייבות להופיע בשורת הפקודה לפני שניתן לזהות את האפשרויות של תווים בודדים.

- dump-po-strings

שווה ל- D , אבל הפלט הוא בתבנית הקובץ GNU gettext po (אובייקט נייד).

- dump-strings

שווה ל- D.

--עֶזרָה

הצגת הודעת שימוש בפלט הסטנדרטי וביציאה בהצלחה.

- קובץ קובץ

- קובץ קובץ

ביצוע פקודות מקובץ במקום קובץ האתחול האישי הרגיל ~ / .bashrc אם הקליפה היא אינטראקטיבית (ראה INVOCATION להלן).

--התחברות

שווה ל -l .

- לא

אל תשתמש בספריית הקריאה של גנו כדי לקרוא שורות פקודה כאשר הקליפה היא אינטראקטיבית.

- ניופרופיל

אל תקרא גם את קובץ ההפעלה / מערכת / פרופיל או את כל קבצי האתחול האישיים ~ / .bash_profile , ~ / .bash_login , או ~ / .profile . כברירת מחדל, באש קורא קבצים אלה כאשר הוא מופנה כקליפת התחברות (ראה INVOCATION להלן).

- norc

אל תקרא ותבצע את קובץ האתחול האישי ~ / .bashrc אם הקליפה היא אינטראקטיבית. אפשרות זו מופעלת כברירת מחדל אם הקליפה מופעלת כ- sh .

--posix

שנה את אופן הפעולה של הבש כאשר פעולת ברירת המחדל שונה מהתקן POSIX 1003.2 כדי להתאים למצב הסטנדרטי ( מצב posix ).

- מוגבל

הקונכייה הופכת מוגבלת (ראה שקוף מסומנת למטה).

- דורש - דורש

הפק את רשימת הקבצים הדרושים להפעלת הסקריפט פגז. זה מרמז '-n' והוא כפוף לאותן מגבלות כמו שגיאת זמן הידור בדיקה בודק; Backticks, [] בדיקות, evals לא מנותחים אז כמה תלויות עלול להחמיץ. - שווה ערך שווה ל -.

--גִרְסָה

הצג מידע גירסה עבור מופע זה של bash על הפלט הסטנדרטי וצא בהצלחה.

ARGUMENTS

אם הארגומנטים נותרים לאחר עיבוד אופציות, וגם האפשרות c ו- the- s לא סופקו, הארגומנט הראשון הוא כנראה שם קובץ המכיל פקודות shell. אם bash הוא מופעל בצורה זו, $ 0 מוגדר שם הקובץ, ואת הפרמטרים positional נקבעים שאר הארגומנטים. Bash קורא ומבצע פקודות מקובץ זה, ואז יוצא. מצב היציאה של בש הוא מצב היציאה של הפקודה האחרונה שבוצעה בתסריט. אם לא בוצעו פקודות, מצב היציאה הוא 0. נעשה תחילה ניסיון לפתוח את הקובץ בספריה הנוכחית, ואם לא נמצא קובץ, אזי הקליפה מחפשת את הספריות ב- PATH עבור התסריט.

קְרִיאָה

פגז כניסה הוא אחד שהאופי הראשון של טיעון אפס הוא - , או אחד התחיל עם --login אפשרות.

קליפה אינטראקטיבית היא אחת שהתחילה ללא טיעונים שאינם אופציונליים וללא אפשרות -C שהקלט והפלט הסטנדרטיים שלה מחוברים שניהם למסופים (כפי שנקבע על ידי isatty (3)), או שאחד התחיל עם האפשרות -i . PS1 מוגדר ו $ - כולל i אם באש הוא אינטראקטיבי, המאפשר סקריפט פגז או קובץ ההפעלה כדי לבדוק את המצב הזה.

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

כאשר Bash הוא מופעל כמו פגז כניסה אינטראקטיבית, או כקליפה לא אינטראקטיבית עם אפשרות --login , זה קודם קורא ומבצע פקודות מהקובץ / etc / פרופיל , אם הקובץ קיים. לאחר קריאת הקובץ, זה מחפש ~ / .bash_profile , ~ / .bash_login , ו ~ / .profile , בסדר הזה, וקורא ומבצע פקודות מן הראשון שקיים וניתן לקריאה. אפשרות - noprofile ניתן להשתמש כאשר הפגז הוא התחיל לעכב את ההתנהגות.

כאשר פגז כניסה יוצא, bash קורא ומבצע פקודות מהקובץ ~ / .bash_logout , אם הוא קיים.

כאשר פגז אינטראקטיבי שאינו פגז כניסה הוא התחיל, באש קורא ומבצע פקודות מ ~ / .bashrc , אם הקובץ קיים. זה עשוי להיות מעוכבת באמצעות האפשרות - norc . האפשרות קובץ - rcfile יאלץ את bash לקרוא ולבצע פקודות מקובץ במקום ~ / .bashrc .

כאשר Bash הוא התחיל באופן לא אינטראקטיבי, כדי להפעיל סקריפט פגז, למשל, הוא מחפש את המשתנה BASH_ENV בסביבה, מרחיב את הערך שלו אם הוא מופיע שם, ומשתמש ערך מורחב כמו שם של קובץ לקרוא ולבצע . בשא מתנהג כאילו הפקודה הבאה בוצעה:

אם [-n "$ BASH_ENV"]; לאחר מכן . "$ BASH_ENV"; Fi

אך הערך של משתנה PATH אינו משמש לחיפוש שם הקובץ.

אם bash הוא מופעל עם שם sh , הוא מנסה לחקות את התנהגות ההפעלה של גרסאות היסטוריות של sh ככל האפשר, תוך עמידה בתקן POSIX גם כן. כאשר מופעלים כמו פגז כניסה אינטראקטיבית, או פגז לא אינטראקטיבי עם אפשרות --login , זה הראשון מנסה לקרוא ולבצע פקודות מ / etc / פרופיל ו ~ / .profile , בסדר הזה. ניתן להשתמש באפשרות - noprofile כדי לעכב את ההתנהגות הזו. כאשר הוא מוצג כקליפה אינטראקטיבית עם השם sh , bash מחפש את המשתנה ENV , מרחיב את הערך שלו אם הוא מוגדר, ומשתמש בערך המורחב כשמו של קובץ לקריאה ולביצוע. מכיוון שפצצה שמוצגת כ - sh אינה מנסה לקרוא ולבצע פקודות מקבצי הפעלה אחרים, לאפשרות של --rcfile אין כל השפעה. פגז לא אינטראקטיבי המופעל באמצעות השם sh אינו מנסה לקרוא קבצי הפעלה אחרים. כאשר מופעלים כמו sh , bash נכנס למצב posix לאחר קבצי ההפעלה נקראים.

כאשר bash הוא התחיל במצב posix , כמו עם אפשרות שורת הפקודה - posix , זה נובע תקן POSIX עבור קבצי ההפעלה. במצב זה, קונכיות אינטראקטיביות מרחיבות את משתנה ENV והפקודות נקראות ומוצגות מתוך הקובץ ששמו הוא הערך המורחב. לא קוראים קבצי הפעלה אחרים.

Bash מנסה לקבוע מתי הוא מופעל על ידי הדמון shell מרחוק, בדרך כלל rshd . אם bash קובעת שהוא מופעל על ידי rshd , הוא קורא ומבצע פקודות מ ~ / .bashrc , אם הקובץ קיים וקריא. זה לא יעשה את זה אם יופעל כמו ש . ניתן להשתמש באפשרות - norc כדי לעכב את ההתנהגות הזו, והאפשרות --rcfile עשויה לשמש לכפייה של קובץ אחר, אך rshd אינו מזמין בדרך כלל את הקליפה עם אפשרויות אלה או מאפשר להן להיות מוגדרות.

אם פגז הוא התחיל עם המשתמש בפועל (קבוצה) מזהה לא שווה את המשתמש האמיתי (קבוצה) מזהה, ו- p אפשרות לא מסופק, אין קבצי הפעלה לקרוא, פונקציות פגז לא ירשו מן הסביבה, SHELLOPTS משתנה, אם הוא מופיע בסביבה, הוא התעלם, ואת מזהה המשתמש יעיל מוגדר מזהה המשתמש האמיתי. אם האפשרות ' p' מסופקת בעת הפניה, התנהגות האתחול זהה, אך מזהה המשתמש האפקטיבי אינו מאופס.

הגדרות

ההגדרות הבאות משמשות בכל שאר מסמך זה.

רֵיק

רווח או לשונית.

מִלָה

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

שֵׁם

מילה המורכבת רק מתווים אלפאנומריים וקווים תחתונים, ומתחילה בתו אלפביתי או בקו תחתון. נקרא גם מזהה .

metacharacter

דמות, כאשר לא מצוטט, מפריד בין מילים. אחד מהבאים:

| & () <<לשונית החלל

מפעיל בקרה

אסימון שמבצע פונקציית בקרה. זהו אחד מהסמלים הבאים:

|| & & ; () |

מילים שמורות

מילים שמורות הן מילים שיש להן משמעות מיוחדת לקליפה. המילים הבאות מוכרות כשמורות כאשר לא מצוטט או את המילה הראשונה של פקודה פשוטה (ראה SHELL GRAMMAR למטה) או את המילה השלישית של מקרה או פקודה:

! במקרה לעשות זאת אם אתה בוחר אז עד בזמן {} זמן [[]]

של גראמר

פקודות פשוטות

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

ערך ההחזרה של פקודה פשוטה הוא מצב היציאה שלה, או 128+ n אם הפקודה מסתיימת באמצעות האות n .

צינורות

צינור הוא רצף של פקודה אחת או יותר מופרדות על ידי התו . הפורמט של צינור הוא:

[ time [ -p ]] [! ] [] הפקודה ...]

הפלט הסטנדרטי של פקודה מחובר באמצעות צינור לקלט הסטנדרטי של הפקודה 2 . חיבור זה מבוצע לפני כל הפניות שצוינו על ידי הפקודה (ראה REDIRECTION להלן).

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

אם המילה השמורה בזמן קודמת לצינור, הזמן שחלף, כמו גם זמן המשתמש והמערכת, שנצרך על ידי ביצועו, מדווחים כאשר מסתיים הצינור. האפשרות -P משנה את תבנית הפלט לאמור ב- POSIX. המשתנה TIMEFORMAT עשוי להיות מוגדר למחרוזת בפורמט המציינת את אופן הצגת מידע התזמון; עיין בתיאור של TIMEFORMAT תחת משתני Shell בהמשך.

כל פקודה בצינור מתבצעת כתהליך נפרד (כלומר, בקטע משנה).

רשימות

רשימה היא רצף של צינור אחד או יותר מופרדים על ידי אחד המפעילים ; , & , && , או || , וכן אופציונלי הסתיים על ידי אחד ; , & , או .

מתוך אופרטורים אלה רשימה, && ו | | יש קדימות שווה, ואחריו ; ו- , אשר יש להם קדימות שווה.

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

אם פקודה מסתיימת על ידי מפעיל הבקרה & , את הקליפה מבצעת את הפקודה ברקע subhell. הקליפה אינה ממתינה לסיום הפקודה, ומצב החזרה הוא 0. פקודות המופרדות על ידי ; מבוצעים ברצף; הקונכייה מחכה שכל פקודה תסתיים. סטטוס ההחזרה הוא סטטוס היציאה של הפקודה האחרונה שבוצעה.

מפעילי הבקרה && ו || ציין ורשימות או רשימות, בהתאמה. ברשימה AND יש את הטופס

שורת הפקודה

command2 מתבצע רק אם הפקודה command1 מחזירה סטטוס יציאה של אפס.

רשימת OR יש את הטופס

פקודה 1 || הפקודה

command2 מבוצע אם ורק אם הפקודה 1 מחזירה סטטוס יציאה לא אפס. מצב ההחזרה של רשימות AND ו- OR הוא מצב היציאה של הפקודה האחרונה שבוצעה ברשימה.

פקודות קומפונד

פקודה מורכבת היא אחת מהפעולות הבאות:

( רשימה )

הרשימה מבוצעת בתוך subhell. מטלות משתנות פקודות מובנים המשפיעים על הסביבה של פגז לא נשארים בתוקף לאחר פקודה משלים. סטטוס ההחזרה הוא סטטוס היציאה של הרשימה .

{ learned ; }

הרשימה היא פשוט להורג בסביבה פגז הנוכחי. הרשימה חייבת להסתיים עם קו חדש או נקודה פסיק. דבר זה ידוע כפקודה קבוצתית . סטטוס ההחזרה הוא סטטוס היציאה של הרשימה . שים לב שבניגוד למטאצ'אמריות ( ו- ) , { and } הן מילים שמורות , ועליהן להתרחש כאשר המילה השמורה מותרת להכרה. מאז הם לא לגרום לשבור מילה, הם חייבים להיות מופרדים מהרשימה על ידי שטח לבן.

( ביטוי ))

הביטוי מוערך על פי הכללים המתוארים להלן תחת הערכה ארתמטית . אם ערך הביטוי אינו אפס, מצב החזרה הוא 0; אחרת מצב החזרה הוא 1. זה בדיוק שווה לתת " ביטוי ".

[[ ביטוי ]]

חזור למצב של 0 או 1 בהתאם להערכת ביטוי הביטוי המותנה. הביטויים מורכבים מהפריימריס המתוארים להלן תחת "ביטויים קונקציונליים" . הפיצול של Word והרחבת נתיב אינם מתבצע על המילים בין [[ ] ו ] ; הרחבת טילדה, פרמטר והרחבה משתנה, הרחבה אריתמטית, החלפה פקודה, החלפה תהליך, והסרת ציטוט מבוצעות.

כאשר משתמשים במפעילים == ו- = = , המחרוזת מימין למפעיל נחשבת לדפוס ומותאמת בהתאם לכללים המתוארים להלן תחת התבנית תבנית . ערך ההחזרה הוא 0 אם המחרוזת מתאימה או אינה תואמת את התבנית, בהתאמה, ו- 1 אחרת. כל חלק של הדפוס יכול להיות מצוטט כדי לאלץ אותו להיות מתאימים כמחרוזת.

ניתן לשלב ביטויים באמצעות המפעילים הבאים, המפורטים בסדר יורד של קדימות:

( ביטוי )

מחזירה את ערך הביטוי . זה עשוי לשמש כדי לעקוף את הקדימות הרגילה של המפעילים.

! ביטוי

נכון אם הביטוי הוא שקר.

expression1 && expression2

נכון אם גם הביטוי 1 וגם הביטוי 2 נכונים.

ביטוי 1 | הביטוי True 2 אם true1 או expression2 נכון.

&& ו | | המפעילים אינם מעריכים את הביטוי 2 אם ערך הביטוי מספיק כדי לקבוע את ערך ההחזרה של הביטוי המותנה כולו.

עבור שם [ במילה ]; לעשות רשימה; בוצע

רשימת המילים הבאות מתרחבת, ומפיקה רשימת פריטים. שם המשתנה מוגדר לכל רכיב ברשימה זו, והרשימה מבוצעת בכל פעם. אם המילה מושמטת, הפקודה 'פקודה' מבצעת פעם אחת עבור כל פרמטר positional שהוגדר (ראה פרמטרים להלן). סטטוס ההחזרה הוא סטטוס היציאה של הפקודה האחרונה המבוצעת. אם ההתרחבות של הפריטים הבאים מופיעה ברשימה ריקה, לא תבוצע פקודות, ומצב ההחזרה הוא 0.

עבור (( expr1 ; expr2 ; expr3 )); לעשות רשימה; בוצע

ראשית, הביטוי האריתמטי expr1 מוערך על פי הכללים המתוארים להלן תחת הערכה ארתמטית . הביטוי האריתמטי expr2 מוערך אז שוב ושוב עד שהוא מעריך לאפס. בכל פעם expr2 מעריך לערך לא אפס, הרשימה מבוצעת ואת הביטוי ביטוי אריתמטי הערכה. אם כל ביטוי מושמט, הוא מתנהג כאילו הוא מעריך את הערך 1. הערך החוזר הוא סטטוס היציאה של הפקודה האחרונה ברשימה המבוצעת, או שקרית אם אחת מההבעות אינה חוקית.

בחר שם [ ב- word ]; לעשות רשימה; בוצע

רשימת המילים הבאות מתרחבת, ומפיקה רשימת פריטים. קבוצת המילים המורחבות מודפסת על שגיאת התקן, שכל אחת מהן מקודמת. אם המילה מושמטת, מודפסים הפרמטרים הפוזיציוניים (ראה פרמטרים להלן). ההנחיה PS3 מוצגת לאחר מכן וקו קורא מתוך הקלט הסטנדרטי. אם השורה מורכבת ממספר המתאים לאחת המילים המוצגות, אזי הערך של השם מוגדר למילה זו. אם השורה ריקה, המילים והנחיה יוצגו שוב. אם EOF נקרא, הפקודה תושלם. כל ערך אחר הנקרא גורם שם להיות מוגדר null. השורה שנקראה נשמרת במשתנה REPLY . הרשימה מבוצעת לאחר כל בחירה עד לביצוע פקודת מעבר . מצב היציאה של בחר הוא מצב היציאה של הפקודה האחרונה שבוצעה ברשימה , או אפס אם לא בוצעו פקודות.

מקרה המילה ב [[[] דפוס [ | דפוס ]

הפקודה ' מקרה' מרחיבה תחילה את המילה , ומנסה להתאים אותה לכל דפוס בנפרד, תוך שימוש בכללים תואמים זהים עבור הרחבת נתיב (ראה הרחבת Pathname למטה). כאשר נמצאה התאמה, הרשימה המתאימה מבוצעת. לאחר ההתאמה הראשונה, לא מנסים לבצע התאמות עוקבות. מצב היציאה הוא אפס אם לא מתאים דפוס. אחרת, זהו מצב היציאה של הפקודה האחרונה שבוצעה ברשימה .

אם הרשימה; ברשימת; [ רשימת elif ; ברשימת ; ] ... [ רשימת אחר ; ]

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

ברשימת ; לעשות רשימה; בוצע

עד learned ; לעשות רשימה; בוצע

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

[ function ] name () { list ; }

פעולה זו מגדירה פונקציה בשם. גוף הפונקציה הוא רשימת הפקודות בין {ו}. רשימה זו מבוצעת בכל פעם ששם מוגדר כשם של פקודה פשוטה. מצב היציאה של פונקציה הוא מצב היציאה של הפקודה האחרונה שבוצעה בגוף. (ראה FUNCTIONS להלן).

הערות

בקליפה לא אינטראקטיבית, או פגז אינטראקטיבי שבו האפשרות אינטראקטיבית_תצורה לבניין shopt מאופשר (ראה SHELL BUILTIN COMMANDS להלן), מילה מתחיל עם # גורם מילה וכל התווים הנותרים על הקו הזה כדי להתעלם. קליפה אינטראקטיבית ללא אפשרות אינטראקטיבית אינטראקטיבית לא מאפשרת הערות. האפשרות Interactive_comments מופעלת כברירת מחדל בקונכיות אינטראקטיביות.

ציטוט

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

לכל אחד מהמטא - תווים המפורטים למעלה בהגדרות יש משמעות מיוחדת לקליפה ויש לצטט אותה אם היא מייצגת את עצמה.

כאשר הפקודה הרחבת מתקני ההיסטוריה נמצאים בשימוש, אופי הרחבת ההיסטוריה , בדרך כלל ! , חייב להיות מצוטט כדי למנוע התרחבות ההיסטוריה.

קיימים שלושה מנגנונים מצטטים: אופי הבריחה , ציטוטים בודדים וציטוטים כפולים.

קו נטוי לא מסומן ( \ ) הוא תו הבריחה . הוא משמר את הערך המילולי של התו הבא הבא, למעט . אם זוג < \ newline> מופיע, והקו האחורי אינו מצוטט בעצמו, \ מטופל כהמשך קו (כלומר, הוא מוסר מזרם הקלט ומועלם באופן יעיל).

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

סגירת תווים במרכאות כפולות שומרת על הערך המילולי של כל התווים בתוך המרכאות, למעט $ , ` , ו \ . התווים $ ו ` לשמור על המשמעות המיוחדת שלהם בתוך ציטוטים כפולים. ה - Backslash שומר על משמעותו המיוחדת רק כאשר הוא עוקב אחר אחד מהתווים הבאים: $ , ` , ' , \ > או Newline> ציטוט כפול עשוי להיות מצוטט במרכאות כפולות על ידי קודמתה עם קו נטוי הפוך.

הפרמטרים המיוחדים * ו @ יש משמעות מיוחדת כאשר במרכאות כפולות (ראה פרמטרים להלן).

מילים של הטופס $ ' מחרוזת ' מטופלים במיוחד. המילה מתפשטת אל מחרוזת , עם תווים בריחלאש נמלט הוחלף כפי שנקבע על ידי תקן ANSI C. רצף בריחה אחורית, אם קיים, מפוענח באופן הבא:

התראה (פעמון)

\ b

backspace

\ e

תו בריחה

\ f

טופס להאכיל

\ n

שורה חדשה

\ r

לחזור המרכבה

\ t

הכרטיסייה האופקית

\ v

הכרטיסייה אנכית

\\

מַהֲלָך סְרָק

'

ציטוט יחיד

\ nnn

את תו 8 סיביות אשר הערך הוא ערך octal nnn (1-3 ספרות)

\ x HH

את תו שמונה סיביות אשר הערך הוא הערך הקסדצימלי HH (אחת או שתי ספרות hex)

\ c x

תו שליטה x

התוצאה המורחבת היא מצוטטת אחת, כאילו סימן הדולר לא היה נוכח.

מחרוזת בעלת שני ציטוטים שקודם סימן דולר ( $ ) תגרום לתרגום מחרוזת לפי האזור הנוכחי. אם האזור הנוכחי הוא C או POSIX , סימן הדולר הוא התעלם. אם המחרוזת מתורגמת ומוחלפת, החלפה מצוטטת פעמיים.

פרמטרים

פרמטר הוא ישות המאחסנת ערכים. זה יכול להיות שם , מספר, או אחד התווים המיוחדים המפורטים להלן תחת פרמטרים מיוחדים . למטרות המטען, משתנה הוא פרמטר הנקרא בשם . למשתנה יש ערך ואפס או תכונות נוספות. תכונות מוקצות באמצעות הפקודה להצהיר מובנה (ראה להצהיר להלן ב SHELL BUILTIN COMMANDS ).

פרמטר מוגדר אם הוקצה לו ערך. מחרוזת ה- null היא ערך חוקי. לאחר הגדרת משתנה, ייתכן שהוא לא יופעל רק באמצעות הפקודה המובנית (ראה פקודות SHELL BUILTIN להלן).

ניתן להקצות משתנה על ידי הצהרה של הטופס

שם = [ ערך ]

אם הערך אינו נתון, המשתנה מוקצה מחרוזת null. כל הערכים עוברים הרחבת tilde, פרמטר והרחבה משתנה, החלפת פקודות, הרחבה אריתמטית, והסרת ציטוט (ראה EXPANSION להלן). אם למשתנה יש את המאפיין של מספר שלם , ערך זה כפוף להרחבה אריתמטית גם אם לא נעשה שימוש בהרחבת $ ((...)) ראה הרחבה אריתמטית בהמשך (. פיצול Word אינו מבוצע, למעט "$ @" כפי שמוסבר בהמשך תחת פרמטרים מיוחדים . הרחבת נתיב אינה מבוצעת. הצהרות הקצאה עשויות להופיע גם כארגומנטים לפקודות ההצהרה , הסידור , הייצוא , הקריאה והמקומיות .

פרמטרים

פרמטר positional הוא פרמטר המסומן על ידי ספרה אחת או יותר, פרט לספרה בודדת 0. פרמטרים אופציונליים מוקצים מהארגומנטים של הפגז כאשר הוא מופעל, וניתן להקצות אותם מחדש באמצעות הפקודה setin מובנית. לא ניתן להקצות פרמטרים למיקום עם הצהרות הקצאה. הפרמטרים הפוזיציונליים מוחלפים באופן זמני כאשר מתבצע פונקציה פגז (ראה פונקציות להלן).

כאשר פרמטר positional המורכב מיותר מספרה אחת מורחב, הוא חייב להיות מוקף הפלטה (ראה EXPANSION להלן).

פרמטרים מיוחדים

הקליפה מתייחסת למספר פרמטרים במיוחד. הפרמטרים הללו ניתנים להפניה בלבד; ההקצאה להם אסורה.

*

מרחיב את הפרמטרים positional, החל מאחד. כאשר מתרחבת התרחבות בתוך ציטוטים כפולים, הוא מתרחב למילה אחת עם הערך של כל פרמטר מופרדים על ידי התו הראשון של המשתנה המיוחד IFS . כלומר, " $ * " שווה ל " $ 1 c $ 2 c ... ", כאשר c הוא התו הראשון של הערך של משתנה IFS . אם IFS אינו מוגדר, הפרמטרים מופרדים על ידי רווחים. אם IFS הוא ריק, הפרמטרים מחוברים ללא הפרעות מפרידים.

@

מרחיב את הפרמטרים positional, החל מאחד. כאשר מתרחשת התרחבות בתוך ציטוטים כפולים, כל פרמטר מתרחב למילה נפרדת. כלומר, " $ @ " שווה ל " $ 1 " " $ 2 " ... כאשר אין פרמטרים positional, " $ @ " ו $ @ להרחיב כלום (כלומר, הם הוסרו).

#

מתרחב למספר הפרמטרים posational בעשרונית.

?

מתרחב למעמד של הצינור האחרון שבוצע בחזית.

-

מתרחב לדגלי האופציה הנוכחיים כפי שצוין בעת ​​ההעתקה, על ידי הפקודה setin מובנית, או אלה שנקבעו על ידי הקליפה עצמה (כגון האפשרות -i ).

$

מתרחב למזהה התהליך של הקליפה. ב subshell (), הוא מרחיב את מזהה התהליך של הקליפה הנוכחית, לא את subhell.

!

מתרחב למזהה התהליך של הפקודה שבוצעה לאחרונה (אסינכרוני).

0

מתרחב לשם של פגז או סקריפט פגז. זה מוגדר על אתחול פגז. אם bash הוא מופעל עם קובץ פקודות, $ 0 מוגדר שם של קובץ זה. אם מתחיל bash עם האפשרות -c , $ 0 מוגדר לארגומנט הראשון לאחר ביצוע המחרוזת, אם קיים. אחרת, הוא מוגדר לשם הקובץ המשמש להפעלת bash , כפי שניתן על ידי אפס הארגומנט.

_

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

משתנים מעטפת

המשתנים הבאים נקבעים על ידי הקליפה:

לַחֲבוֹט

מתרחב לשם הקובץ המלא המשמש להפעלת מופע זה של bash .

BASH_VERSINFO

משתנה מערך ריאונילי שחבריו מחזיקים בגירסה זו עבור גירסאות bash . הערכים שהוקצו לחברי המערך הם כדלקמן:

BASH_VERSINFO [ 0]

מספר הגרסה העיקרי ( השחרור ).

BASH_VERSINFO [ 1]

מספר הגירסה הזעיר ( הגרסה ).

BASH_VERSINFO [ 2]

רמת התיקון.

BASH_VERSINFO [ 3]

גירסת build.

BASH_VERSINFO [ 4]

מצב השחרור (לדוגמה, beta1 ).

BASH_VERSINFO [ 5]

הערך של MACHTYPE .

BASH_VERSION

מתרחב למחרוזת המתארת ​​את הגירסה של מופע זה של bash .

COMP_CWORD

COMP_LINE

שורת הפקודה הנוכחית. משתנה זה זמין רק בפונקציות פגז ובפקודות חיצוניות המופעלות על ידי מתקני ההשלמה הניתנים לתכנות (ראה השלמה מתוכנתת להלן).

COMP_POINT

COMP_WORDS

משתנה מערך (ראה מערכים להלן) המורכב ממילים בודדות בשורת הפקודה הנוכחית. משתנה זה זמין רק בפונקציות פגז המופעלות על ידי מתקני ההשלמה הניתנים לתכנות (ראה השלמה מתוכנתת להלן).

DIRSTACK

משתנה מערך (ראה מערכים למטה) המכיל את התוכן הנוכחי של ערימת המדריכים. ספריות מופיעות בערימה בסדר שבו הם מוצגים על ידי dirs מובנית. הקצאה לחברי משתנה מערך זה עשויה לשמש לשינוי ספריות שכבר נמצאות בערימה, אך יש להשתמש בהוספה וב- pushdd כדי להוסיף ולהסיר ספריות. הקצאה למשתנה זה לא תשנה את הספריה הנוכחית. אם DIRSTACK אינו מוגדר, הוא מאבד את המאפיינים המיוחדים שלו, גם אם הוא מאופס לאחר מכן.

האיחוד האירופי

מרחיב את מזהה המשתמש האפקטיבי של המשתמש הנוכחי, מאותחל בעת ההפעלה פגז. משתנה זה הוא לקריאה בלבד.

FUNCNAME

השם של כל פונקציה פגז כרגע. משתנה זה קיים רק כאשר מופעלת פגז. הקצאות ל- FUNCNAME אינן משפיעות על מצב החזרה. אם FUNCNAME אינו מוגדר, הוא מאבד את המאפיינים המיוחדים שלו, גם אם הוא מאופס לאחר מכן.

קבוצות

משתנה מערך המכיל את רשימת הקבוצות שבהן המשתמש הנוכחי הוא חבר. הקצאות ל- GROUPS אינן משפיעות על מצב השגיאה. אם GROUPS אינו מאופס, הוא מאבד את המאפיינים המיוחדים שלו, גם אם הוא מאופס לאחר מכן.

HISTCMD

מספר ההיסטוריה, או אינדקס ברשימת ההיסטוריה, של הפקודה הנוכחית. אם HISTCMD אינו מוגדר, הוא מאבד את המאפיינים המיוחדים שלו, גם אם הוא מאופס לאחר מכן.

שם מארח

להגדיר באופן אוטומטי את שם המארח הנוכחי.

HOSTTYPE

מוגדר באופן אוטומטי למחרוזת המתארת ​​באופן ייחודי את סוג ההתקן שעליו מבצעת bash . ברירת המחדל תלויה במערכת.

לינו

בכל פעם שהפרמטר מוזכר, הקליפה מחליפה מספר עשרוני המייצג את מספר הקו הרצוף הנוכחי (החל מ -1) בתוך סקריפט או פונקציה. כאשר לא בתסריט או בתפקוד, הערך המוחלף אינו מובטח להיות בעל משמעות. אם LINENO אינו מוגדר, הוא מאבד את המאפיינים המיוחדים שלו, גם אם הוא מאופס לאחר מכן.

מקטיפ

הגדר באופן אוטומטי למחרוזת המתארת ​​באופן מלא את סוג המערכת שבו מבצעת bash , בתבנית המערכת הרגילה של גנו -חברה-חברה . ברירת המחדל תלויה במערכת.

OLDPWD

ספריית העבודה הקודמת כפי שנקבעה על-ידי הפקודה cd .

OPTARG

הערך של ארגומנט האפשרות האחרון שעובד בפקודה המובנית של getopts (ראה פקודות SHELL BUILTIN להלן).

OPTIND

האינדקס של הארגומנט הבא יעובד על ידי פקודת getopts המובנית (ראה פקודות SHELL BUILTIN להלן).

OSTYPE

מוגדר אוטומטית למחרוזת המתארת ​​את מערכת ההפעלה שעליה מבצעת bash . ברירת המחדל תלויה במערכת.

PIPESTATUS

משתנה מערך (ראה מערכים להלן) המכיל רשימה של ערכי סטטוס יציאה מהתהליכים בצינור הקדמי המתקבל לאחרונה (אשר עשוי להכיל רק פקודה אחת).

PPID

מזהה התהליך של האב של הקליפה. משתנה זה הוא לקריאה בלבד.

PWD

ספריית העבודה הנוכחית כפי שנקבעה על-ידי הפקודה cd .

אַקרַאִי

בכל פעם שמדובר בפרמטר זה, נוצר מספר אקראי בין 0 ל - 32767. רצף של מספרים אקראיים עשוי להיות מאותחל על ידי הקצאת ערך RANDOM . אם RANDOM אינו מוגדר, הוא מאבד את המאפיינים המיוחדים שלו, גם אם הוא מאופס לאחר מכן.

תשובה

הגדר את שורת הקלט שנקראה על ידי פקודת readin מובנית כאשר לא סופקו ארגומנטים.

שניות

בכל פעם שמדובר בפרמטר זה, מוחזר מספר השניות מאז הפניה לקליפה. אם מוקצה ערך ל- SECONDS , הערך המוחזר בהפניות הבאות הוא מספר השניות מאז ההקצאה בתוספת הערך שהוקצה. אם SECONDS אינו מוגדר, הוא מאבד את המאפיינים המיוחדים שלו, גם אם הוא מאופס לאחר מכן.

משלוחים

רשימה מופרדת של אפשרויות פגז מופעלות. כל מילה ברשימה היא ארגומנט חוקי עבור האפשרות -o לפקודה המובנית (ראה פקודות SHELL BUILTIN להלן). האפשרויות המופיעות ב- SHELLOPTS הן אלה שדווחו על- ידי סט -o . אם משתנה זה נמצא בסביבה כאשר באש מתחיל, כל אפשרות פגז ברשימה תהיה מופעלת לפני קריאת כל קבצי האתחול. משתנה זה הוא לקריאה בלבד.

SHLVL

מוגדל על ידי אחד בכל פעם מופע של באש הוא התחיל.

UID

מתרחב למזהה המשתמש של המשתמש הנוכחי, מאותחל בהפעלה של מעטפת. משתנה זה הוא לקריאה בלבד.

המשתנים הבאים משמשים את הקליפה. במקרים מסוימים, bash מקצה ערך ברירת מחדל למשתנה; מקרים אלה מפורטים להלן.

BASH_ENV

אם פרמטר זה מוגדר כאשר bash מבצע סקריפט פגז, הערך שלו מתפרש כשם קובץ המכיל פקודות לאתחול הקליפה, כמו ב- ~ / .bashrc . הערך של BASH_ENV כפוף להרחבת פרמטרים, להחלפת פקודות ולהרחבה אריתמטית לפני שהוא מתפרש כשם קובץ. PathH אינו משמש לחיפוש שם הקובץ המתקבל.

CDPATH

נתיב החיפוש עבור הפקודה cd . זוהי רשימה מופרדת המעי הגס של ספריות שבו הפגז מחפש ספריות היעד שצוין על ידי הפקודה cd . ערך מדגם הוא ".: ~: / Usr".

COLUMNS

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

תכלול

משתנה מערך שממנו באש קורא את השלמות האפשריות שנוצרו על ידי פונקציה פגז מופעלת על ידי מתקן השלמת לתכנות (ראה השלמת לתכנות להלן).

FCEDIT

עורך ברירת המחדל עבור הפקודה פקודה.

Fignore

רשימת סיומות המופרדות על ידי המעי הגס כדי להתעלם מהן בעת ​​ביצוע השלמה של שם הקובץ (ראה READLINE למטה). שם קובץ שסיומתו מתאימה לאחד מהערכים ב- FIGNORE אינו נכלל ברשימה של שמות קבצים תואמים. ערך לדוגמה הוא ".o: ~".

גלוביגנור

רשימת דפוסי מופרדים באמצעות נקודתיים המגדירים את קבוצת שמות הקבצים שיש להתעלם מהם על ידי הרחבת נתיב. אם שם קובץ התואם לדפוס הרחבת נתיב תואם גם לאחד מהדפוסים ב- GLOBIGNORE , הוא יוסר מרשימת ההתאמות.

HISTCONTROL

אם מוגדר ערך של איזורי , שורות המתחילות עם תו רווח לא מוזנים ברשימת ההיסטוריה. אם נקבע לערך של התעלמות , לא ייכנסו שורות התואמות את שורת ההיסטוריה האחרונה. ערך של התעלמות משלב את שתי האפשרויות. אם לא הוגדר, או אם הוא מוגדר לכל ערך אחר מאלה לעיל, כל השורות שנקראו על ידי מנתח נשמרים ברשימת ההיסטוריה, בכפוף לערך של HISTIGNORE . פונקציית משתנה זה מוחלפת על ידי HISTIGNORE . השורה השנייה והשורה הבאה של פקודה מורכבת של שורות מרובות לא נבדקות, ומתווספות להיסטוריה ללא קשר לערך של HISTCONTROL .

HISTFILE

שם הקובץ שבו נשמרת היסטוריית הפקודה (ראה היסטוריה להלן). ערך ברירת המחדל הוא ~ / .bash_history . אם לא הוגדרה, היסטוריית הפקודה לא נשמרת כאשר פגז אינטראקטיבי יוצא.

HISTFILESIZE

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

HISTIGNORE

רשימת דפוסי מופרדים על ידי המעי הגס הייתה מחליטה אילו שורות פקודה יש ​​לשמור ברשימת ההיסטוריה. כל תבנית מעוגנת בתחילת השורה וחייבת להתאים את השורה המלאה (לא משתמע " * " מצורף). כל דפוס נבדק כנגד הקו לאחר שהמחאות שצוין על ידי HISTCONTROL מוחלות. בנוסף לתווים הרגילים של הדפוסים הקליפים, ' & ' תואם לקו ההיסטוריה הקודם. ' & ' עשוי להימלט באמצעות קו נטוי הפוך; הקו הנטוי מוסר לפני שתנסה להתאים. השורה השנייה והשורה הבאה של פקודה מורכבת של שורות מרובות אינן נבדקות, והן מתווספות להיסטוריה ללא קשר לערך של HISTIGNORE .

HISTSIZE

מספר הפקודות שיש לזכור בהיסטוריה של הפקודה (ראה היסטוריה להלן). ערך ברירת המחדל הוא 500.

בית

ספריית הבית של המשתמש הנוכחי; ארגומנט ברירת המחדל עבור הפקודה cd מובנית. הערך של משתנה זה משמש גם בעת ביצוע הרחבת tilde.

הוסטפיל

מכיל את שם הקובץ באותה תבנית כמו / etc / hosts שיש לקרוא כאשר הקונכייה צריכה להשלים את שם המארח. רשימת ההשלמות האפשריות של המארח עשויה להשתנות בזמן שהקונכייה פועלת; בפעם הבאה לאחר השלמת שם המארח ננסה לאחר שינוי הערך, bash מוסיף את תוכן הקובץ החדש לרשימה הקיימת. אם HOSTFILE מוגדר, אבל אין לו ערך, באש מנסה לקרוא / etc / hosts כדי לקבל רשימה של השלמות המארח אפשרי. כאשר HOSTFILE אינו מוגדר, רשימת שמות המארח נמחקת.

IFS

מפריד השדות הפנימיים המשמש להפצת מילה לאחר הרחבה ולפצל שורות למילים עם הפקודה המובנית. ערך ברירת המחדל הוא " ''.

איגנוריוף

שולט על הפעולה של קליפה אינטראקטיבית על קבלת אופי EOF כקלט היחיד. אם נקבע, הערך הוא מספר תווים EOF רצופים שיש להקליד כתווים הראשונים בשורת קלט לפני יציאות bash . אם המשתנה קיים אך אין לו ערך מספרי, או שאין לו ערך, ערך ברירת המחדל הוא 10. אם הוא אינו קיים, EOF מסמל את קצה הקלט לקליפה.

INPUTRC

שם הקובץ עבור קובץ ההפעלה של הקריאה , מעל ברירת המחדל של ~ / .inputrc (ראה READLINE להלן).

LANG

משמש כדי לקבוע את הקטגוריה אזור עבור כל קטגוריה לא נבחרה במיוחד עם משתנה החל LC_ .

LC_ALL

משתנה זה עוקף את הערך של LANG וכל משתנה LC_ אחר המציין קטגוריה מקומית .

LC_COLLATE

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

LC_CTYPE

משתנה זה קובע את הפרשנות של תווים ואת ההתנהגות של הכיתות אופי בתוך הרחבת שם נתיב התאמת דפוס.

LC_MESSAGES

משתנה זה קובע את המקום המשמש לתרגום מחרוזות מצוטטות פעמיים, שקודם להן $ .

LC_NUMERIC

משתנה זה קובע את הקטגוריה המקומית המשמשת לעיצוב מספר.

קווים

משמש בפקודה Selectin בחר כדי לקבוע את אורך העמודות להדפסת רשימות בחירה. להגדיר באופן אוטומטי עם קבלת SIGWINCH.

דוֹאַר

אם פרמטר זה מוגדר לשם קובץ ומשתנה MAILPATH אינו מוגדר, bash מודיע למשתמש על הגעת הדואר בקובץ שצוין.

MAILCHECK

מציין כמה פעמים (בשניות) בדיקות באש עבור דואר. ברירת המחדל היא 60 שניות. כאשר הגיע הזמן לבדוק את הדואר, הקליפה תעשה זאת לפני הצגת הפקודה הראשית. אם משתנה זה אינו מוגדר, או מוגדר לערך שאינו מספר גדול או שווה לאפס, הקליפה משביתה את בדיקת הדואר.

MAILPATH

רשימה מופרדת של שמות קבצים המופיעה במעי הגס לצורך בדיקה עבור דואר. ההודעה להודפס כאשר הדואר מגיע בקובץ מסוים עשויה להיות מוגדרת על ידי הפרדת שם הקובץ מהודעה עם '?'. בעת שימוש בטקסט של ההודעה, $ _ מתרחב לשם של קובץ הדואר הנוכחי. דוגמא:

MAILPATH = '/ var / mail / bfox? "יש לך דואר": ~ / shell-mail? "$ _ יש דואר!"

Bash מספק ערך ברירת מחדל עבור משתנה זה, אך המיקום של קובצי הדואר של המשתמש שבהם הוא משתמש תלוי במערכת (לדוגמה, / var / mail / USER ).

אופרטר

אם מוגדר הערך 1, מציג bash הודעות שגיאה שנוצר על ידי פקודת getopts מובנית (ראה SHELL BUILTIN COMMANDS להלן). OPTERR הוא מאותחל ל 1 בכל פעם פגז הוא מופעל או סקריפט פגז מבוצע.

נָתִיב

נתיב החיפוש עבור פקודות. זוהי רשימת ספריות המופרדות על ידי המעי הגס, שבהן הקליפה מחפשת פקודות (ראה פקודת פקודה למטה). נתיב ברירת המחדל תלוי במערכת, והוא מוגדר על-ידי מנהל המערכת המתקינה את bash . ערך נפוץ הוא `` / usr / gnu / bin: / usr / local / bin: / usr / ucb: / bin: / usr / bin :. '' '.

POSIXLY_CORRECT

אם משתנה זה נמצא בסביבה כאשר מתחיל bash , הקליפה נכנסת למצב posix לפני קריאת קבצי האתחול, כאילו אפשרות הפניה -posix סופקה. אם הוא מוגדר בזמן הפגז פועל, bash מאפשר מצב posix , כאילו פקודה להגדיר -O posix הוצא להורג.

PROMPT_COMMAND

אם מוגדר, הערך מתבצע כפקודה לפני הנפקת כל הנחיה ראשית.

PS1

הערך של פרמטר זה מורחב (ראה PROMPTING להלן) ומשמש כמחרוזת הפקודה הראשית. ערך ברירת המחדל הוא `` \ s- \ v \ $ ''.

PS2

הערך של פרמטר זה מורחב כמו ב- PS1 ומשמש כמחרוזת הנחיה משנית. ברירת המחדל היא `` > ''.

PS3

הערך של פרמטר זה משמש כהנחיה עבור הפקודה הנבחרת (ראה SHELL GRAMMAR לעיל).

PS4

הערך של פרמטר זה מורחב כמו ב- PS1 והערך מודפס לפני כל תצוגת באש פקודות במהלך עקבות ביצוע. התו הראשון של PS4 משוכפל מספר פעמים, לפי הצורך, כדי להצביע על מספר רמות של עקיפה. ברירת המחדל היא ' + ' '.

פורמט זמן

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

קה

אחוז מילולי.

% [ p ] [l] R

הזמן שחלף בשניות.

% [ p ] [l] U

מספר שניות ה- CPU שהשתמשו במצב המשתמש.

% [ p ] [l] S

מספר השניות של ה- CPU המושקע במצב המערכת.

% P

אחוז המעבד, מחושב כ- (% U +% S) /% R.

ה- p האופציונלי הוא ספרה המציינת את הדיוק , מספר הספרות החלקיות לאחר נקודה עשרונית. ערך 0 גורם לנקודה עשרונית או לחלק להיות פלט. לכל היותר ניתן לציין שלושה מקומות אחרי הנקודה העשרונית; ערכים של p מעל 3 משתנים ל -3. אם p לא צוין, הערך 3 משמש.

אופציונלי l מציין תבנית ארוכה יותר, כולל דקות, של הטופס MM MM SS . FF s. ערך p קובע אם השבר כלול או לא.

אם משתנה זה אינו מוגדר, bash פועל כאילו היה הערך \ n \ n \ n% \ r \ nuser \ t% 3lU \ n% s% 3l ' . אם הערך הוא null, לא יוצג מידע תזמון. שורה חדשה עוקבת מתווספת כאשר מחרוזת הפורמט מוצגת.

TMOUT

אם מוגדר לערך גדול מאפס, TMOUT יטופל כזמן ברירת המחדל עבור הקריאה המובנית. הפקודה Select מסתיימת אם הקלט אינו מגיע לאחר TMOUT שניות כאשר קלט מגיע ממסוף. בקליפה אינטראקטיבית, הערך מתפרש כמספר השניות להמתין לקלט לאחר הנפקת ההנחיה הראשית. Bash מסתיים לאחר המתנה למספר זה של שניות אם קלט אינו מגיע.

אוטומטי

משתנה זה שולט כיצד פגז אינטראקציה עם המשתמש ואת השליטה בעבודה. אם משתנה זה משתנה, פקודות פשוטות של מילה בודדת ללא ניתובים מחדש מטופלות כמועמדות לחידוש עבודה קיימת. אין אי-בהירות; אם יש יותר ממשימה אחת שמתחילה במחרוזת שהוקלדה, נבחרה המשימה האחרונה שבה ניגשת. שם של עבודה הפסיק, בהקשר זה, הוא שורת הפקודה המשמש להתחיל את זה. אם נקבע לערך המדויק , המחרוזת שסופקה חייבת להתאים לשם של עבודה שהושהה בדיוק; אם נקבע למחרוזת, המחרוזת שסופקה צריכה להתאים למחרוזת של שם של עבודה שהפסיקה. ערך המחרוזת מספק פונקציונליות מקבילה ל- %? מזהה עבודה (ראה JOB CONTROL להלן). אם נקבע לערך אחר, המחרוזת המסופקת חייבת להיות קידומת של שם העבודה שהושהה; זה מספק פונקציונליות מקביל למזהה % עבודה.

histchars

שתיים או שלוש תווים השולטים בהרחבת ההיסטוריה ובטוקניזציה (ראה HISTORY EXPANSION להלן). התו הראשון הוא אופי התרחבות ההיסטוריה , הדמות אשר מסמנת את תחילת התרחבות ההיסטוריה, בדרך כלל ` ! '. התו השני הוא תו ההחלפה המהיר , אשר משמש כקיצור עבור הפעלה מחדש של הפקודה הקודמת נכנס, החלפת מחרוזת אחת עבור אחר בפקודה. ברירת המחדל היא ' ^ '. התו השלישי האופציונלי הוא התו שמציין כי שאר הקו הוא הערה כאשר נמצא כדמות הראשונה של מילה, בדרך כלל # # . תכונת ההערה ההיסטורית גורמת להחלפת ההיסטוריה לדלג על שאר המילים על הקו. זה לא בהכרח לגרום לנתח מנתח לטפל בשאר הקו כהערה.

מערכים

Bash מספק משתני מערך חד-מימדיים. כל משתנה יכול לשמש כמערך; ההצהרה המובנית תצהיר במפורש על מערך. אין הגבלה מקסימלית על גודל המערך, ולא כל דרישה כי חברים להיות באינדקס או שהוקצו ברציפות. מערכים מצורפים באמצעות מספרים שלמים והם מבוססים על אפס.

מערך נוצר באופן אוטומטי אם כל משתנה מוקצה לשימוש בשם התחביר [ subscript ] = value . התמליל מטופל כהבעה אריתמטית שעליה להעריך למספר גדול או שווה לאפס. כדי להצהיר במפורש על מערך, השתמש בהצהרה - שם (ראה פקודות SHELL BUILTIN להלן). להכריז - שם [ תת-מחליף ] מתקבל גם הוא; תתעלם מהכתב. ניתן להגדיר מאפיינים עבור משתנה מערך באמצעות ההכרזה ו - readonly מובנית. כל תכונה חלה על כל החברים במערך.

מערכים מוקצים לשימוש בהקצאות מתחם של שם הטופס = ( ערך 1 ... ערך n ) , כאשר כל ערך הוא בטופס [ subscript ] = string . רק מחרוזת נדרשת. אם הסוגריים האופציונליים ותת-הטקסטים מסופקים, המדד מוקצה ל: אחרת המדד של האלמנט שהוקצה הוא המדד האחרון שהוקצה על ידי ההצהרה בתוספת אחד. האינדקס מתחיל באפס. תחביר זה מקובל גם על ידי ההצהרה המובנית. ניתן להקצות רכיבי מערך בודדים לשימוש בתחביר שם [ subscript ] = value שהובא לעיל.

הבניה unset משמש להשמדת מערכים. Unset name [ subscript ] הורס את אלמנט המערך בתת - אינדקס. שם לא מוגדר , כאשר שם הוא מערך, או שם לא מוגדר [ subscript ], שם subscript הוא * או @ , מסיר את המערך כולו.

הבנויים , המקומיים , ו readonly מובנים כל לקבל a - אפשרות לציין מערך. קריאה מובנית מקבלת a - אפשרות להקצות רשימה של מילים לקרוא מן הקלט הסטנדרטי למערך. להגדיר ולהצהיר מובנים להציג ערכי מערך באופן המאפשר להם לעשות שימוש חוזר כמשימות.

הַרחָבָה

הרחבה מתרחשת בשורת הפקודה לאחר שהיא מחולקת למילים. ישנם שבעה סוגים של התרחבות שבוצעו: הרחבת הסד , הרחבת טילדה , פרמטר והרחבת משתנה , החלפת פקודות , התרחבות אריתמטית , פיצול מילים והרחבת נתיב .

סדר ההרחבות הוא: הרחבת קשת, הרחבת טילדה, פרמטר, משתנה והרחבה אריתמטית ותחליפי פקודות (שנעשו באופנה משמאל לימין), פיצול מילים והרחבת נתיב.

במערכות שיכולות לתמוך בה, קיימת הרחבה נוספת: החלפת תהליכים .

הרחבת הסד

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

הרחבות הסד יכול להיות מקוננות. התוצאות של כל מחרוזת מורחבת אינן מסודרות; משמאל לימין הסדר נשמר. לדוגמה, { d, c, b } e מתרחב ל- `ade ace abe '.

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

מבנה זה משמש בדרך כלל קצרנות כאשר הקידומת המשותפת של המיתרים להיות שנוצר יותר מאשר בדוגמה לעיל:

mkdir / usr / local / src / bash / {old, new, dist, bugs}

אוֹ

chown root /usr/{ucb/{ex ,edit},lib/{ex?.?*,how_ex}}

הרחבת סדים מציגה חוסר תאימות קל עם גרסאות היסטוריות של ש . sh אינו מטפל בפתיחה או סגירת הפלטה במיוחד כאשר הם מופיעים כחלק ממילה, ומשמרים אותם בפלט. באש מסיר את הפלטה של ​​מילים כתוצאה של הרחבת הסד. לדוגמה, מילה שהוזנה כדי להציג את הקובץ {1,2} מופיעה באופן זהה בפלט. אותה מילה היא פלט כמו file1 file2 לאחר הרחבה על ידי bash . אם יש צורך בתאימות קפדנית עם sh , התחל בשח עם האפשרות + B או השבת את הרחבת הסד עם אפשרות + B לפקודת הסט (ראה פקודות SHELL BUILTIN להלן).

הרחבת טילדה

אם מילה מתחילה בתו tilde לא מצוטט (' ~ '), כל התווים שקודמים לקו נטוי ראשון לא רשום (או כל התווים, אם אין קו נטוי לא רשום) נחשבים לקידומת טילדה . אם אף אחד מהדמויות בקידומת tilde לא מצוטט, התווים בקידומת הטילדה בעקבות הטילדה מטופלים כשם כניסה אפשרי. אם שם ההתחברות הוא מחרוזת null, הטילדה מוחלפת עם הערך של הפרמטר shell. אם ה - HOME אינו מוגדר, ספריית הבית של המשתמש המבצע את הקליפה מוחלפת במקום זאת. אחרת, קידומת tilde מוחלפת בספריית הבית המשויכת לשם ההתחברות שצוין.

אם הקידומת 'טילדה' היא '~', הערך של המשתנה PWD משתנה יחליף את קידומת הטילדה. אם הקידומת tilde היא ~ ~, הערך של משתנה הקליפה OLDPWD , אם הוא מוגדר, מוחלף. אם התווים הבאים אחרי הטילדה בקידומת הטילדה מורכבים ממספר N , אופציונלי עם קידומת '+' או '-', קידומת tilde מוחלפת באלמנט המתאים מערימת המדריכים, כפי שהיא תוצג על ידי dirs מובנית מופעלת עם קידומת טילדה כטיעון. אם התווים הבאים בטילדה בקידומת הטילדה מורכבים ממספר ללא '+' או '-' המובילים, מניחים '+'.

אם שם ההתחברות אינו חוקי, או שההרחבה של הטילדה נכשלת, המילה אינה משתנה.

כל הקצאה משתנה נבדקת עבור קידומות tilde לא מצוטט מיד לאחר : או = . במקרים אלה, הרחבת tilde מבוצעת גם. כתוצאה מכך, ניתן להשתמש בשמות קבצים עם tildes בהקצאות ל- PathH , MAILPATH ו- CDPATH , והקונכייה מקצה את הערך המורחב.

הרחבת הפרמטר

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

כאשר נעשה שימוש בסוגריים, הסדין התואם הוא '#' הראשון שלא נמחק על ידי קו נטוי הפוך או בתוך מחרוזת מצוטטת, ולא בתוך הרחבה אריתמטית מוטמעת, החלפה של פקודות או הרחבת פרמטר.

ערך הפרמטר מוחלף. הפלטה נדרשת כאשר הפרמטר הוא פרמטר positional עם יותר מספרת אחת, או כאשר פרמטר ואחריו דמות אשר לא ניתן לפרש כחלק משמה.

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

השתמש בערכי ברירת מחדל . אם הפרמטר אינו מוגדר או ריק, ההרחבה של המילה מוחלפת. אחרת, ערך הפרמטר מוחלף.

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

שגיאת תצוגה אם Null או Unset . אם הפרמטר הוא ריק או לא מוגדר, הרחבת המילה (או הודעה בתוקף אם המילה אינה קיימת) נכתבת לשגיאה הסטנדרטית והפגז, אם הוא אינו אינטראקטיבי, יוצא. אחרת, ערך הפרמטר מוחלף.

השתמש בערך חלופי . אם הפרמטר הוא ריק או לא מוגדר, שום דבר לא מוחלף, אחרת הרחבת המילה מוחלפת.

מתרחב לשמות המשתנים ששמותיהם מתחילים בקידומת , מופרדים על ידי התו הראשון של המשתנה המיוחד של IFS .

האורך בתווים של ערך הפרמטר מוחלף. אם הפרמטר הוא * או @ , הערך המחליף הוא מספר הפרמטרים הפוזיציוניים. אם הפרמטר הוא שם מערך שכותרתו * או @ , הערך המחליף הוא מספר האלמנטים במערך.

המילה מורחבת כדי לייצר דפוס בדיוק כמו הרחבת נתיב. אם התבנית תואמת את תחילת הערך של הפרמטר , אז התוצאה של ההתרחבות היא הערך המורחב של הפרמטר עם דפוס ההתאמה הקצר ביותר (המקרה ' # ' ') או דפוס ההתאמה הארוך ביותר ( ## ' 'מקרה') נמחק. אם הפרמטר הוא @ או * , פעולת הסרת התבנית מוחלת על כל פרמטר positional בתורו, וההרחבה היא הרשימה הנובעת. אם הפרמטר הוא משתנה מערך שכותרתו ב- @ או * , פעולת הסרת התבנית מוחלת על כל חבר במערך בתורו, וההרחבה היא הרשימה המתקבלת.

המילה מורחבת כדי לייצר דפוס בדיוק כמו הרחבת נתיב. אם התבנית תואמת חלק נגרר מהערך המורחב של הפרמטר , אזי התוצאה של ההתרחבות היא הערך המורחב של הפרמטר עם דפוס ההתאמה הקצר ביותר (המקרה " % ") או דפוס ההתאמה הארוך ביותר (" % '') נמחק. אם הפרמטר הוא @ או * , פעולת הסרת התבנית מוחלת על כל פרמטר positional בתורו, וההרחבה היא הרשימה הנובעת. אם הפרמטר הוא משתנה מערך שכותרתו ב- @ או * , פעולת הסרת התבנית מוחלת על כל חבר במערך בתורו, וההרחבה היא הרשימה המתקבלת.

התבנית מורחבת כדי ליצור תבנית בדיוק כמו בהרחבת נתיב. פרמטר מורחב ואת ההתאמה הארוכה של דפוס נגד הערך שלה מוחלף עם מחרוזת . בטופס הראשון, רק ההתאמה הראשונה מוחלפת. הטופס השני גורם לכל התאמות של דפוס להיות מוחלף עם מחרוזת . אם התבנית מתחילה ב- # , עליה להתאים בתחילת הערך המורחב של הפרמטר . אם דפוס מתחיל ב- % , עליו להתאים בסוף הערך המורחב של הפרמטר . אם מחרוזת היא null, התאמות של תבנית נמחקות והדפוס / אם הפרמטר הוא @ או * , פעולת החלפה מוחלת על כל פרמטר positional בתורו, וההרחבה היא הרשימה הנובעת. אם הפרמטר הוא משתנה מערך שכותרתו עם @ או * , פעולת החלפה מוחלת על כל חבר במערך בתורו, וההרחבה היא הרשימה הנובעת.

החלפת פיקוד

החלפת פקודה מאפשרת לפלט של פקודה להחליף את שם הפקודה. ישנן שתי צורות:

$ ( הפקודה )

אוֹ

הפקודה `

Bash מבצע את ההרחבה על ידי ביצוע הפקודה והחלפת הפקודה החלפה עם הפלט הסטנדרטי של הפקודה, עם כל השורות האחרונות נגררים. שורות חדשות מוטמעות אינן נמחקות, אך ייתכן שהן יוסרו במהלך פיצול מילים. החלפה הפקודה $ ( קובץ חתול ) ניתן להחליף את המקבילה, אבל מהר יותר (< קובץ ).

כאשר נעשה שימוש בסגנון הישן של backquote צורה של החלפת, Backslash שומרת על המשמעות המילולית שלה, אלא כאשר ואחריו $ $ , ` או \ . הראשון backquote לא קדמו על ידי קו נטוי מסיים את החלפת הפקודה. בעת שימוש בטופס $ ( הפקודה ), כל התווים בין הסוגריים מהווים את הפקודה; אף אחד מהם אינו מטופל במיוחד.

חילופי פקודות עשויים להיות מקוננים. כדי לקנן בעת ​​שימוש בטופס backquotes, לברוח הפנימי backquotes עם backslashes.

אם החלופה מופיעה בתוך מרכאות כפולות, פיצול מילים והרחבת נתיב לא מבוצעות בתוצאות.

הרחבה אריתמטית

התרחבות אריתמטית מאפשרת הערכה של ביטוי אריתמטי והחלפת התוצאה. פורמט ההתרחבות האריתמטית הוא:

$ (( ביטוי ))

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

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

החלפת תהליכים

החלפה של תהליכים נתמכת במערכות התומכות ב- pipe pipe ( FIFO ) או בשיטת dev / fd של מתן שמות לקבצים פתוחים. זה לוקח את הטופס של ( רשימה ) או > ( רשימה ) . רשימת התהליך מופעלת עם הקלט או הפלט שלה מחוברים ל- FIFO או לקובץ כלשהו ב- dev / fd . שמו של קובץ זה מועבר כארגומנט לפקודה הנוכחית כתוצאה מההרחבה. אם הטופס ( רשימה ) משמש, כתיבה לקובץ תספק קלט עבור הרשימה . אם נעשה שימוש בטופס <( רשימה ) , יש להעביר את הקובץ כארגומנט כדי לקבל את פלט הרשימה .

כאשר ניתן לבצע, החלפה תהליך מבוצע בו זמנית עם הפרמטר משתנה הרחבה, החלפה הפקודה, הרחבה אריתמטית.

פיצול Word

הקליפה סורקת את התוצאות של הרחבת פרמטרים, החלפה של פקודות והרחבה אריתמטית שלא התרחשו בתוך ציטוטים כפולים של פיצול מילים .

הקליפה מתייחסת לכל דמות של IFS כמפריד, ומחלקת את תוצאות הרחבות האחרות למילים על הדמויות האלה. אם IFS אינו מוגדר, או שערכו הוא בדיוק , ברירת המחדל, ולאחר מכן כל רצף של תווים IFS משמש לתיחום מילים. אם ל- IFS יש ערך שונה מברירת המחדל, אזי רצפים של מרחב התווים והשטח של הלשון הלבנה מתעלמים בהתחלה ובסיום של המילה, כל עוד תו הרווח הלבן הוא הערך של IFS (תו רווח לבן של IFS ). כל תו ב- IFS שאינו שטח לבן של IFS , יחד עם כל תווי רווח לבנים של IFS , מציין תחום. רצף של תווים IFS רווח לבן מטופל גם כמפריד. אם הערך של IFS הוא ריק, לא מתרחש פיצול מילים.

ארגומנטים null מפורשים ( "" או "" ) נשמרים. טיוטות null לא מוצהרות, שנבעו מהרחבת פרמטרים ללא ערכים, יוסרו. אם פרמטר ללא ערך מורחב במרכאות כפולות, ארגומנט null יישמר ונשמר.

שים לב שאם לא מתרחשת התרחבות, לא מתבצע פיצול.

הרחבת נתיב

לאחר פיצול מילים, אלא אם כן הוגדרה אפשרות -F , bash סורק כל מילה עבור התווים * ,? , ו [ . אם אחת מהתווים מופיעה, המילה נתפסת כתבנית , ומוחלפת ברשימה ממוינת בסדר אלפביתי של שמות קבצים התואמים את התבנית. אם לא נמצאו שמות תואמים של קבצים, ואפשרות הקליפה nullglob מושבתת, המילה נשארת ללא שינוי. אם האפשרות nullglob מוגדרת, ולא נמצאו התאמות, המילה מוסרת. אם האפשרות nocaseglob אופציונלי מופעלת, המשחק מבוצע ללא קשר למקרה של תווים אלפביתיים. כאשר נעשה שימוש בתבנית להרחבת שם נתיב, התו '`.' ' בתחילת שם או מיד לאחר קו נטוי חייב להיות מותאם באופן מפורש, אלא אם כן אופציה של קליפת dotglob מוגדרת. בעת התאמת שם נתיב, יש תמיד להתאים את תו הסלאש באופן מפורש. במקרים אחרים, הדמות '' '' אינה מטופלת במיוחד. ראה תיאור של shopt למטה תחת SHELL BUILTIN COMMANDS לתיאור האפשרויות nocaseglob , nullglob ו- dotglob .

ניתן להשתמש במשתנה הקליפה GLOBIGNORE כדי להגביל את קבוצת שמות הקבצים המתאימים לדפוס . אם ה- GLOBIGNORE מוגדר, כל שם קובץ תואם שמתאים גם לאחד מהדפוסים ב- GLOBIGNORE יוסר מרשימת ההתאמות. שמות הקבצים "" ו - ".." "" תמיד מתעלמים, גם כאשר GLOBIGNORE מוגדר. עם זאת, הגדרת GLOBIGNORE יש את האפקט של הפעלת אפשרות קליפת dotglob , כך שכל שמות הקבצים האחרים המתחילים ב- `` ' יתאימו. כדי לקבל את ההתנהגות הישנה של התעלמות משמות קבצים המתחילים ב- '' '' , בצעו את ''. '' '' אחד מהדפוסים ב- GLOBIGNORE . האפשרות dotglob מושבתת כאשר GLOBIGNORE אינו מוגדר.

התאמת תבנית

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

לדפוסים המיוחדים יש את המשמעויות הבאות:

*

מתאים לכל מחרוזת, כולל מחרוזת null.

?

מתאים לכל תו בודד.

[...]

מתאים לכל אחד מהתווים המצורפים. זוג תווים המופרדים על ידי מקף מציין ביטוי טווח ; כל תו שמתקיים בין שתי התווים, כולל, תוך שימוש ברצף האוסף ובמערכת התווים של האזור הנוכחי, מותאם. אם התו הראשון בעקבות [ הוא ! או ^ אז כל תו לא סגור הוא מותאם. סדר המיון של תווים בביטויים של טווח נקבע על ידי האזור הנוכחי ואת הערך של משתנה הקליפה LC_COLLATE , אם מוגדר. A - עשויים להיות מותאמים על ידי הכללת אותו כתו הראשון או האחרון בקבוצה. A ] ניתן להתאים על ידי הכללת אותו בתור התו הראשון במערך.

בתוך [ ו ] , ניתן לציין את סוגי התווים באמצעות התחביר [: class :] , כאשר המחלקה היא אחד מהכיתות הבאות המוגדרים בתקן POSIX.2:

אלפא אלפא אסקי ריק cntrl ספרות גרף נמוך יותר להדפיס שטח פנוי המילה העליונה
מחלקה של תו מתאימה לכל תו השייך למחלקה זו. המילה ' תו אופי' מתאימה אותיות, ספרות ותו _.

בתוך [ ו ] , ניתן להגדיר את סוג השקלול באמצעות התחביר [= c =] , התואם את כל התווים בעלי אותו משקל איסוף (כפי שהוגדר על ידי המיקום הנוכחי), כדמות c .

בתוך [ ו ] , התחביר [. סמל .] תואם לסמל סמל collating.

אם האפשרות shell extlob מופעלת באמצעות ה - Shopt מובנית, מספר מפעילי התאמת דפוסים מורחבים מזוהים. בתיאור הבא, רשימת תבניות היא רשימה של דפוס אחד או יותר מופרדים על ידי | . דפוסים מורכבים עשויים להיווצר תוך שימוש באחד או יותר מדפוסי המשנה הבאים:

? ( תבנית רשימה )

התאמת אפס או התרחשות אחת של דפוסי נתון

* ( תבנית רשימה )

תואם אפס או יותר המופעים של דפוסי נתון

+ ( רשימת דוגמאות )

מתאים לתופעה אחת או יותר של התבניות הנתונות

@ ( תבנית רשימה )

מתאים בדיוק אחד הדפוסים הנתפסים

! ( תבנית רשימה )

מתאים לכל דבר מלבד אחד מהדפוסים הנתפסים

ציטוט להסרה

לאחר ההרחבות הקודמות, כל המופעים שאינם מצוטטים של התווים \ , ' , ו' שלא נבעו מאחת מההרחבות הנ"ל מוסרים.

הפחתה

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

בתיאורים הבאים, אם מספר המתאר של הקובץ מושמט, והתו הראשון של אופרטור הניתוב מחדש הוא < , ההפניה מתייחסת לקלט הסטנדרטי (מתאר קובץ 0). אם התו הראשון של אופרטור הניתוב מחדש הוא > , ההפניה מתייחסת לפלט הסטנדרטי (מתאר קובץ 1).

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

שים לב שסדר ההפניות משמעותי. לדוגמה, הפקודה

ls > dirlist 2 > 1

מפנה הן פלט סטנדרטי שגיאת תקן הקובץ dirlist , בעוד הפקודה

ls 2 > 1 > dirlist

מפנה רק את הפלט הסטנדרטי קובץ dirlist , כי שגיאה סטנדרטית היה כפולות כמו פלט סטנדרטי לפני הפלט הסטנדרטי הופנה אל dirlist .

בשא מטפל בכמה שמות קבצים במיוחד כאשר הם משמשים ניתובים מחדש, כמתואר בטבלה הבאה:

/ dev / fd / fd

אם Fd הוא מספר שלם חוקי, קובץ ה- dd של מתאר הקובץ משוכפל.

/ dev / stdin

תיאור הקובץ 0 משוכפל.

/ dev / stdout

מתאר קובץ 1 משוכפל.

/ dev / stderr

מתאר קובץ 2 משוכפל.

/ dev / tcp / host / port

אם המארח הוא שם מארח חוקי או כתובת אינטרנט, והיציאה היא מספר יציאת מספר שלם או שם שירות, bash מנסה לפתוח חיבור TCP לשקע המתאים.

/ dev / udp / host / port

אם המארח הוא שם מארח חוקי או כתובת אינטרנט, והיציאה היא מספר יציאת מספר שלם או שם שירות, bash מנסה לפתוח חיבור UDP לשקע המתאים.

כשל בפתיחת קובץ או יצירתו גורם להיכשל להיכשל.

מפנה מחדש את הקלט

ניתוב מחדש של הקלט גורם לקובץ ששמו נבע מהרחבת המילה להיפתח לקריאה בתיאור קובץ n או בקלט הסטנדרטי (מתאר קובץ 0) אם n לא צוין.

הפורמט הכללי להפניה מחדש של הקלט הוא:

[ n ] < word

הפניה מחדש של פלט

ניתוב מחדש של הפלט גורם לקובץ ששמו נבע מהרחבת המילה לפתיחת הכתיבה ב- n , או בפלט הסטנדרטי (מתאר קובץ 1) אם n לא צוין. אם הקובץ אינו קיים הוא נוצר; אם הוא קיים הוא חתוך לאפס גודל.

הפורמט הכללי להפניה מחדש של הפלט הוא:

[ n ] > מילה

אם אופרטור הניתוב מחדש הוא < , והאפשרות noclobber ל- set מובנה הופעלה, ההנחיה תיכשל אם הקובץ שמקורו בהרחבת המילה קיים וקובץ רגיל. אם אופרטור הניתוב מחדש הוא <| , או אופרטור הניתוב מחדש הוא > והאפשרות noclobber לפקודת set מובנית אינה מופעלת, ניתוב מחדש נעשה גם אם הקובץ בשם המילה קיים.

צירוף פלט מנותב

ניתוב מחדש של פלט בצורה זו גורם לקובץ ששמו נבע מהרחבת המילה להיפתח עבור צירוף על מתאר הקובץ n , או הפלט הסטנדרטי (מתאר קובץ 1) אם n לא צוין. אם הקובץ אינו קיים הוא נוצר.

הפורמט הכללי לפלט פלט הוא:

[ n ] >> מילה

הפניה של פלט סטנדרטי ושגיאה רגילה

Bash מאפשר גם את הפלט הסטנדרטי (מתאר קובץ 1) ואת פלט השגיאה הסטנדרטי (קובץ מתאר 2) כדי להפנות מחדש לקובץ ששמו הוא הרחבת המילה עם מבנה זה.

קיימים שני פורמטים להפניה מחדש של פלט סטנדרטי ושגיאה סטנדרטית:

המילה

ו

> מילה

מבין שתי צורות, הראשון הוא המועדף. זה שווה ערך סמנטית ל

> word 2 > & 1

כאן מסמכים

סוג זה של ניתוב מחדש מורה לקליפה לקרוא קלט מהמקור הנוכחי עד שנמצא קו המכיל רק מילה (ללא החסר). כל השורות לקרוא עד לנקודה זו משמשים אז קלט רגיל עבור פקודה.

הפורמט של המסמכים כאן הוא:

<< [ - ] מילה כאן-מסמך מפריד

אין הרחבת פרמטר, החלפת פקודות, הרחבת אריתמטית או הרחבת נתיב מתבצעת במילה . אם תווים כלשהם במילה מצוטטים, המפריד הוא תוצאה של הסרת ציטוט על מילה , והקווים במסמך זה אינם מורחבים. אם המילה אינה מצוטטת, כל השורות של מסמך זה כפופות להרחבת פרמטרים, תחליף פקודות והרחבה אריתמטית. במקרה האחרון, רצף התווים \ מתעלמים, ו \ יש להשתמש בו כדי לצטט את התווים \ , $ ו- ` .

אם האופרטור של הניתוב מחדש הוא << - , לאחר מכן כל תו הכרטיסיה המובילה מופשטים מקווי קלט והקו המכיל מפריד . זה מאפשר כאן מסמכים בתוך סקריפטים פגז להיות מזויף באופן טבעי.

הנה מיתרים

וריאציה של מסמכים כאן, הפורמט הוא:

<<< המילה

המילה מורחבת ומסופקת לפקודה על הקלט הסטנדרטי שלה.

שכפול תיאורי קבצים

מפעיל ההפעלה מחדש

[ n ] <& word

משמש לשכפל מתארי קובץ קלט. אם המילה מתרחבת לספרה אחת או יותר, מתאר הקובץ מסומן על-ידי n כדי להיות עותק של מתאר קובץ זה. אם הספרות במילה אינן מציינות מתאר קובץ פתוח לקלט, מתרחשת שגיאת ניתוב מחדש. אם המילה מעריכה ל - , n מתאר את הקובץ נסגר. אם n לא צוין, נעשה שימוש בקלט הסטנדרטי (מתאר קובץ 0).

המפעיל

[ n ] > & מילה

משמש באופן דומה לשכפל קבצי פלט כפולים. אם n לא צוין, נעשה שימוש בפלט הסטנדרטי (מתאר קובץ 1). אם הספרות במילה אינן מציינות מתאר קובץ פתוח לפלט, מתרחשת שגיאת ניתוב מחדש. במקרה מיוחד, אם n מושמט, והמילה אינה מתפשטת לספרה אחת או יותר, הפלט הסטנדרטי ושגיאת התקן מופנים כמתואר לעיל.

העברת קובץ מתארים

מפעיל ההפעלה מחדש

[ n ] <& ספרה -

הזז את הספרה של קובץ התיאור לתיבת הקובץ n , או הקלט הרגיל (מתאר קובץ 0) אם n לא צוין. ספרה סגורה לאחר כפילות n .

באופן דומה, אופרטור הניתוב מחדש

[ n ] > & ספרות -

הזז את ספרת הקובץ של הקובץ לתיאור הקובץ n , או הפלט הסטנדרטי (מתאר קובץ 1) אם n לא צוין.

פתיחת קובץ מתאר עבור קריאה וכתיבה

מפעיל ההפעלה מחדש

[ n ] <> מילה

גורם לקובץ ששמו הוא הרחבת המילה להיפתח עבור קריאה וכתיבה על מתאר קובץ n או על קובץ 0 אם לא צוין n . אם הקובץ אינו קיים, הוא נוצר.

כינויים

כינויים מאפשרים מחרוזת להיות מוחלפת עבור מילה כאשר היא משמשת כמילה הראשונה בפקודה פשוטה. הקונכייה שומרת רשימה של כינויים שניתן להגדיר ולא נקבעה בכינוי ובפקודות מובנות (ראה פקודות SHELL BUILTIN להלן). המילה הראשונה של כל פקודה, אם לא מצוטטת, נבדקת כדי לראות אם יש לה שם כינוי. אם כן, המילה מוחלפת בטקסט של הכינוי. שם הכינוי והטקסט החלופי עשויים להכיל קלט פגז חוקי, כולל המטא - תווים המפורטים למעלה, למעט שם הכינוי לא יכול להכיל = . המילה הראשונה של הטקסט החלופי נבדקת עבור כינויים, אך מילה זהה לשם כינוס מורחבת אינה מורחבת בפעם השנייה. משמעות הדבר היא כי ייתכן כינוי אחד ls-f , למשל, bash לא מנסה להרחיב רקורסיבית את הטקסט החלופי. אם התו האחרון של שם הכינוי הוא ריק , ולאחר מכן מילת הפקודה הבאה לאחר הכינוי נבחנת גם עבור הרחבת כינוי.

כינויים נוצרים ומופיעים עם הפקודה כינוי , ומוסרים עם הפקודה unalias .

אין מנגנון לשימוש בארגומנטים בטקסט החלופי. אם יש צורך בארגומנטים, יש להשתמש בפונקציית פגז (ראה FUNCTIONS להלן).

כינויים אינם מורחבים כאשר הקליפה אינה אינטראקטיבית, אלא אם כן אופציית הקליפה של הרחבה מתרחשת באמצעות shopt (ראה תיאור shopt תחת SHELL BUILTIN COMMANDS להלן).

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

עבור כמעט כל מטרה, כינויים מוחלפים על ידי פונקציות פגז.

פונקציות

פונקצית פגז, המוגדרת כמתואר לעיל תחת SHELL GRAMMAR , מאחסנת סדרה של פקודות לביצוע מאוחר יותר. כאשר השם של פונקציית פגז משמש כשם פקודה פשוט, רשימת הפקודות המשויכות לשם פונקציה זה מבוצעת. פעולות מבוצעות בהקשר של פגז הנוכחי; לא נוצר תהליך חדש כדי לפרש אותם (בניגוד זה עם ביצוע של התסריט פגז). כאשר פונקציה מבוצעת, הארגומנטים לפונקציה הופכים להיות הפרמטרים positional במהלך הביצוע שלה. הפרמטר המיוחד # מתעדכן כדי לשקף את השינוי. הפרמטר 0 אינו משתנה. המשתנה FUNCNAME מוגדר לשם הפונקציה בזמן ביצוע הפונקציה. כל ההיבטים האחרים של סביבת ביצוע הקליפה זהים בין פונקציה לבין המתקשר שלה, למעט העובדה שמלכודת ה- DEBUG (ראה תיאור המלכודת המובנית תחת פקודות SHELL BUILTIN להלן) אינה מורשת, אלא אם ניתנה לפונקציה התכונה Trace ( ראה תיאור של ההצהרה המובנית להלן).

משתנים מקומיים לפונקציה עשויים להיות מוצהרים בפקודה המקומית . בדרך כלל, משתנים וערכיהם משותפים בין הפונקציה לבין המתקשר.

אם החזרה של פקודות Builtin מבוצעת בפונקציה, הפונקציה משלימה והפעלה מתחדשת עם הפקודה הבאה לאחר שיחת הפונקציה. כאשר פונקציה משלימה, ערכי הפרמטרים הפוזיציוניים והפרמטר המיוחד משוחזרים לערכים שהיו להם לפני ביצוע הפונקציה.

שמות הפונקציות והגדרות עשויים להופיע עם אפשרות -f לפקודות המצהירות או להוספת פקודות. האפשרות -F להצהרה או לסידור תציג את שמות הפונקציות בלבד. ניתן לייצא פונקציות כך שקובצי משנה באופן אוטומטי יוגדרו עם אפשרות -f אל הייצוא המובנה.

הפונקציות עשויות להיות רקורסיביות. אין מגבלה על מספר שיחות רקורסיבית.

הערכה ארתמטית

הקליפה מאפשרת ביטוי אריתמטי להערכה, בנסיבות מסוימות (ראה את הפקודה המובנית והאריתמטית). ההערכה נעשית במספרים שלמים ברוחב קבוע ללא בדיקה על הצפת, אם כי חלוקה של 0 נלכדת ומסומנת כשגיאה. המפעילים והקדימות שלהם והאסוציאטיביות הם זהים בשפת C. רשימת המפעילים הבאה מקובצת לרמות של אופרטורים שווים. הרמות מפורטות בסדר יורד.

id ++ id -

משתנה שלאחר ואחרי הפחתה

+ + id - id

משתנה מראש מראש מראש הפחתה

- +

מינוס unari פלוס

! ~

שלילה לוגית ושלילית

**

-

* /%

כפל, חלוקה, שארית

Map -

חיבור, חיסור

<< >>

משמאל וימין משמרות

<=> = <>

השוואה

==! =

שוויון ואי-שוויון

&

ביט ו

^

אור בלעדי

|

ביט או

Ball

לוגית

||

לוגי או

expr? expr : expr

הערכה מותנית

= = = = =% = = = = = = = = = = = = = = = =

מְשִׁימָה

expr1 , expr2

פסיק

משתני מעטפת מותרים כאופרנדים; הרחבת הפרמטרים מבוצעת לפני הערכת הביטוי. בתוך ביטוי, משתנים פגז ניתן גם הפניה בשם ללא שימוש בתחביר הרחבת הפרמטר. הערך של משתנה נבחן כהבעה אריתמטית כאשר הוא מופנה. משתנה פגז לא צריך להיות תכונה שלו שלם מופעלת על מנת לשמש ביטוי.

קונסטנטים עם 0 מובילים מתפרשים כמספרים אוקטליים. מובילים 0x או 0X מציין הקסדצימלי. אחרת, מספרים לוקחים את הטופס [ base # ] n, כאשר הבסיס הוא מספר עשרוני בין 2 ל -64 המייצג את הבסיס האריתמטי, ו- n הוא מספר בבסיס זה. אם הבסיס מושמט, לאחר מכן בסיס 10 משמש. הספרות הגדולות מ -9 מיוצגות באותיות קטנות, באותיות רישיות, ב- @ וב- _ בסדר זה. אם הבסיס נמוך או שווה ל -36, אותיות קטנות וקטנות יכולות לשמש באופן בלתי נפרד כדי לייצג מספרים בין 10 ל -35.

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

ביטויים רגילים

ביטויים מותנים משמשים את [[ הפקודה המורכבת ואת הבדיקה ו [ פקודות מובנות לבדיקת תכונות קובץ ולבצע השוואות מחרוזות ואריתמטיות. ביטויים נוצרים מן הפריימריס unari או בינארי הבאים. אם כל ארגומנט קובץ לאחד הפריימריז הוא של הטופס / dev / fd / n , אז מתואר הקובץ n מסומנת. אם ארגומנט הקובץ לאחד הפריימריז הוא אחד / dev / stdin , / dev / stdout , או / dev / stderr , קובץ מתאר 0, 1, או 2, בהתאמה, מסומנת.

- קובץ

נכון אם הקובץ קיים.

-b הקובץ

נכון אם הקובץ קיים והוא קובץ בלוק מיוחד.

קובץ c

נכון אם הקובץ קיים הוא קובץ מיוחד אופי.

קובץ

נכון אם הקובץ קיים והוא ספרייה.

הקובץ

נכון אם הקובץ קיים.

- קובץ

נכון אם הקובץ קיים והוא קובץ רגיל.

- קובץ

נכון אם הקובץ קיים והוא מוגדר-מזהה קבוצה.

-h קובץ

נכון אם הקובץ קיים הוא קישור סמלי.

-k קובץ

נכון אם הקובץ קיים והקטע `` דביק`` שלו מוגדר.

-p הקובץ

נכון אם הקובץ קיים והוא צינור בשם (FIFO).

- קובץ

נכון אם הקובץ קיים וניתן לקריאה.

- קובץ

נכון אם הקובץ קיים ויש לו גודל גדול מאפס.

- FD

נכון אם מתאר הקובץ FD פתוח ומתייחס למסוף.

-u קובץ

אם הקובץ קיים וקבוצת סיביות-המשתמש שלו מוגדרת.

קובץ

נכון אם הקובץ קיים וניתן לכתיבה.

-x

נכון אם הקובץ קיים וניתן להפעלה.

-או קובץ

נכון אם הקובץ קיים והוא בבעלות מזהה משתמש יעיל.

-G קובץ

נכון אם הקובץ קיים והוא בבעלות מזהה הקבוצה יעיל.

קובץ LL

נכון אם הקובץ קיים הוא קישור סמלי.

-S

נכון אם הקובץ קיים והוא שקע.

-N קובץ

נכון אם הקובץ קיים ושונה מאז שהוא נקרא לאחרונה.

קובץ

נכון אם file1 הוא חדש יותר (על פי תאריך השינוי) מאשר file2 , או אם file1 קיים ו file2 לא.

קובץ

נכון אם file1 הוא ישן יותר מאשר file2 , או אם file2 קיים file1 לא.

ילותמור

נכון אם file1 ו file2 מתייחסים לאותו התקן ומספרים inode.

-O שם משתמש

אפשרות אופציונלית של אפשרות פגז מופעלת. ראה את רשימת האפשרויות תחת התיאור של אפשרות -O לקבוצה המובנית להלן.

מחרוזת

נכון אם אורך המחרוזת הוא אפס.

מחרוזת

חוּט

נכון אם אורך מחרוזת הוא לא אפס.

string1 == String2

נכון אם המיתרים שווים. = ניתן להשתמש במקום == עבור תאימות קפדנית POSIX.

מחרוזת 1! = String2

נכון אם המיתרים אינם שווים.

מחרוזת 1

נכון אם string1 מיון לפני string2 לקסיקוגרפית במקום הנוכחי.

מחרוזת 1> String2

אמת אם string1 מיון לאחר string2 לקסיקוגרפית במקום הנוכחי.

אג

OP הוא אחד -q , -ne , -lt , -l , -gt , או . אופרטורים בינאריים אריתמטיים אלה חוזרים נכון אם arg1 שווה ל, פחות או שווה ל, או גדול מ, או שווה ל, Arg1 ו- arg2 עשויים להיות מספרים שלמים חיוביים או שליליים.

הפשטה פשוטה

כאשר פקודה פשוטה מבוצעת, הקליפה מבצעת את ההרחבות, ההקצאות וההפניות הבאות, משמאל לימין.

1. המילים שהמנתח סימן כמשימות משתנות (אלה שקדמו לשם הפקודה) והפניות מחדש נשמרות לעיבוד מאוחר יותר.

2.המילים שאינן מטלות או ניתובים מחדש משתנים מורחבות. אם כל מילה נשארת לאחר הרחבה, המילה הראשונה נלקחת כדי להיות שם הפקודה ואת המילים הנותרות הם הארגומנטים.

3.Redirections מבוצעות כמתואר לעיל תחת REDIRECTION .

4. הטקסט אחרי = בכל הקצאה משתנה עובר הרחבת tilde, הרחבת פרמטר, החלפה הפקודה, הרחבה אריתמטית, והסרת ציטוט לפני שהוקצו למשתנה.

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

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

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

פקודת ביצוע

לאחר פקודה מפוצלת למילים, אם התוצאה היא פקודה פשוטה ורשימה אופציונלית של ארגומנטים, מתבצעות הפעולות הבאות.

אם שם הפקודה אינו מכיל חתכים, הקליפה מנסה לאתר אותו. אם קיימת פונקציית פגז בשם זה, פונקציה זו מופעלת כמתואר לעיל ב - FUNCTIONS . אם השם אינו תואם לפונקציה, הקליפה מחפשת את זה ברשימה של מבנים פגז. אם נמצאה התאמה, המערכת מבוצעת.

אם השם אינו פונקציה פגז ולא מובנה, ולא מכיל חתכים, חיפוש באש כל אלמנט של PathH עבור ספריה המכילה קובץ הפעלה בשם זה. Bash משתמש בטבלת חשיש כדי לזכור את שמות הנתיב המלאים של קובצי הפעלה (ראה חשיש מתחת לפיקוד SHELL BUILTIN להלן). חיפוש מלא של הספריות ב PATH מבוצע רק אם הפקודה לא נמצא בטבלה חשיש. אם החיפוש נכשל, הקליפה מדפיסה הודעת שגיאה ומחזירה סטטוס יציאה של 127.

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

אם ביצוע זה נכשל מכיוון שהקובץ אינו בתבנית הפעלה, והקובץ אינו ספריה, ההנחה היא שתסריט פגז , קובץ המכיל פקודות shell. תת-קרקע הולידה אותה. זה משנה מחדש את עצמו, כך ההשפעה היא כאילו פגז חדש הופעל כדי להתמודד עם התסריט, למעט כי במקומות פקודות לזכור על ידי ההורה (ראה חשיש מתחת תחתונים BUELLTIN SHELL ) נשמרים על ידי הילד.

אם התוכנית היא קובץ מתחיל #! , שאר השורה הראשונה מציינת מתורגמן לתכנית. הקליפה מבצעת את המתורגמן שצוין במערכות הפעלה שאינן מטפלות בתבנית ההפעלה עצמה. הארגומנטים למתורגמן מכילים ארגומנט אופציונלי יחיד לאחר שם המתורגמן בשורה הראשונה של התוכנית, ולאחר מכן את שם התוכנית, ולאחר מכן את טיעוני הפקודה, אם קיימים.

סביבת ביצוע פקודה

לקליפה סביבת ביצוע , המורכבת מאלה:

* קבצים פתוחים בירושה על ידי פגז בעת הפניה, כפי ששונו על ידי ניתובים מחדש שסופקו על מנת לבנות את exec

* ספריית העבודה הנוכחית כפי שנקבע על ידי תקליטור , pushd , או popd , או בירושה על ידי פגז בעת הפניה

* מסכת מצב יצירת הקובץ כפי שנקבע על ידי umask או בירושה מההורה של פגז

* מלכודות הנוכחי שנקבע על ידי מלכודת

* פרמטרים פגז אשר נקבעים על ידי הקצאה משתנה או עם קבוצה או בירושה מההורה של פגז בסביבה

* פונקציות פגז שהוגדרו במהלך ביצוע או בירושה מההורה של פגז בסביבה

* אופציות מופעלות בהפניה (או כברירת מחדל או בארגומנטים של שורת הפקודה) או על ידי קבוצה

* אופציות מופעלות על ידי shopt

* כינויים פגז מוגדר עם כינוי

* מזהי תהליך שונים, כולל אלה של עבודות רקע, הערך של $$ , ואת הערך של $ PPID

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

* קבצים פגז פתוח, בתוספת כל השינויים והתוספות שצוין על ידי ניתוב מחדש של הפקודה

* ספריית העבודה הנוכחית

* מסכת מצב יצירת הקובץ

* משתנים פגז מסומנים לייצוא, יחד עם משתנים המיוצאים עבור הפקודה, עברו בסביבה

* מלכודות שנתפסו על ידי הקליפה מאופסות לערכים שירשו מההורה של הקליפה, ומלכודות שהתעלמו מהקליפה אינן מתעלמות

פקודה המופיעה בסביבה נפרדת זו אינה יכולה להשפיע על סביבת ביצוע הקליפה.

החלפה פיקודית פקודות אסינכרוני מופעלים בסביבה subshell כי הוא שכפול של הסביבה פגז, אלא כי מלכודות שנתפסו על ידי פגז הם לאפס את הערכים כי פגז בירושה מן ההורה שלו בעת הפניה. פקודות מובנות המופעלות כחלק מצינור מתבצע גם בסביבת משנה. שינויים שבוצעו בסביבת המשנה אינם יכולים להשפיע על סביבת ביצוע הקליפה.

אם פקודה מלווה בפקודה & & work אינה פעילה, ברירת המחדל של קלט סטנדרטי עבור הפקודה היא קובץ ריק / dev / null . אחרת, הפקודה המופעלת יורשת את מתארי הקובץ של הקליפה המתבקשת כפי ששונתה על-ידי ניתוב מחדש.