Bash - εντολή Linux - εντολή Unix

ΟΝΟΜΑ

bash - GNU Bourne-Και πάλι SHell

ΣΥΝΟΨΗ

bash [επιλογές] [αρχείο]

ΠΕΡΙΓΡΑΦΗ

Το Bash είναι ένας ερμηνευτής γλώσσας εντολών συμβατού με sh που εκτελεί εντολές που διαβάζονται από την τυπική είσοδο ή από ένα αρχείο. Το Bash ενσωματώνει επίσης χρήσιμα χαρακτηριστικά από τα κελύφη Korn και C ( ksh και csh ).

Το Bash προορίζεται να είναι μια συμβατή εφαρμογή της προδιαγραφής IEEE POSIX Shell and Tools (IEEE Working Group 1003.2).

ΕΠΙΛΟΓΕΣ

Εκτός από τις επιλογές κελύφους ενός χαρακτήρα που τεκμηριώνονται στην περιγραφή της εντολής εντολών που έχει οριστεί , το bash ερμηνεύει τις ακόλουθες επιλογές όταν καλείται:

-c συμβολοσειρά

Εάν υπάρχει η επιλογή -c , τότε οι εντολές διαβάζονται από τη συμβολοσειρά . Αν υπάρχουν επιχειρήματα μετά από τη συμβολοσειρά , αυτά αντιστοιχίζονται στις παραμέτρους θέσης, ξεκινώντας από $ 0 .

-Εγώ

Εάν υπάρχει η επιλογή -i , το κέλυφος είναι αλληλεπιδραστικό .

-μεγάλο

Κάντε το bash να λειτουργεί σαν να είχε χρησιμοποιηθεί ως κέλυφος σύνδεσης (βλ. INVOCATION παρακάτω).

-r

Εάν υπάρχει η επιλογή -r , το κέλυφος περιορίζεται (ανατρέξτε στην ενότητα RESTRICTED SHELL παρακάτω).

-μικρό

Εάν υπάρχει η επιλογή -s ή αν δεν υπάρχουν παραμέτρους μετά την επεξεργασία των επιλογών, τότε οι εντολές διαβάζονται από την τυπική είσοδο. Αυτή η επιλογή επιτρέπει να οριστούν οι παράμετροι θέσης κατά την κλήση ενός διαδραστικού κελύφους.

-ΡΕ

Εμφανίζεται μια λίστα όλων των συμβολοσειρών με διπλό εισηγήσεις που προηγούνται του $ και εκτυπώνεται στην τυπική έξοδο. Αυτές είναι οι σειρές που υπόκεινται σε μετάφραση γλώσσας όταν η τρέχουσα τοπική ρύθμιση δεν είναι C ή POSIX . Αυτό συνεπάγεται την επιλογή -n . δεν θα εκτελεστούν εντολές.

[- +] O [ shopt_option ]

Το shopt_option είναι μία από τις επιλογές κελύφους που γίνονται αποδεκτές από τον ενσωματωμένο εντοπισμό (δείτε SHELL BUILTIN COMMANDS παρακάτω). Αν υπάρχει shopt_option , -O ορίζει την τιμή αυτής της επιλογής. + O το αφαιρεί. Εάν το shopt_option δεν παρέχεται, τα ονόματα και οι τιμές των επιλογών κελύφους που είναι αποδεκτές από το shopt εκτυπώνονται στην τυπική έξοδο. Εάν η επιλογή κλήσης είναι + O , η έξοδος εμφανίζεται σε μορφή που μπορεί να επαναχρησιμοποιηθεί ως είσοδος.

-

A - σηματοδοτεί το τέλος των επιλογών και απενεργοποιεί την περαιτέρω επεξεργασία των επιλογών. Οποιαδήποτε επιχειρήματα μετά από το - αντιμετωπίζονται ως ονόματα αρχείων και επιχειρήματα. Ένα επιχείρημα του - είναι ισοδύναμο με - .

Το Bash ερμηνεύει επίσης διάφορες επιλογές πολλαπλών χαρακτήρων. Αυτές οι επιλογές πρέπει να εμφανίζονται στη γραμμή εντολών πριν από τις επιλογές ενός χαρακτήρα που πρέπει να αναγνωριστούν.

--dump-po-strings

Ισοδύναμο με το -D , αλλά η έξοδος είναι στη μορφή αρχείου GNU gettext po (φορητό αντικείμενο).

- χορδές αποθέματος

Ισοδύναμο με -D .

--βοήθεια

Εμφανίστε ένα μήνυμα χρήσης στην τυπική έξοδο και ολοκληρώστε με επιτυχία.

- αρχείο αρχείου

- αρχείο αρχείου rcfile

Εκτελέστε εντολές από αρχείο αντί για το πρότυπο αρχείο αρχικής αρχικοποίησης ~ / .bashrc αν το κέλυφος είναι διαδραστικό (βλ. INVOCATION παρακάτω).

--Σύνδεση

Ισοδύναμο με -l .

--μετάθεση

Μην χρησιμοποιείτε τη βιβλιοθήκη readline του GNU για να διαβάσετε τις γραμμές εντολών όταν το κέλυφος είναι διαδραστικό.

- νοπροφίλ

Μην διαβάσετε το αρχείο εκκίνησης / etc / profile ή οποιοδήποτε από τα προσωπικά αρχεία προετοιμασίας ~ / .bash_profile , ~ / .bash_login ή ~ / .profile . Από προεπιλογή, το bash διαβάζει αυτά τα αρχεία όταν καλείται ως κέλυφος σύνδεσης (δείτε το INVOCATION παρακάτω).

-Νωρίς

Μην διαβάσετε και εκτελέσετε το προσωπικό αρχείο αρχικοποίησης ~ / .bashrc αν το κέλυφος είναι διαδραστικό. Αυτή η επιλογή είναι ενεργοποιημένη από προεπιλογή εάν το κέλυφος χρησιμοποιείται ως sh .

--posix

Αλλάξτε τη συμπεριφορά του bash όπου η προεπιλεγμένη λειτουργία διαφέρει από το πρότυπο POSIX 1003.2 ώστε να ταιριάζει με το πρότυπο ( λειτουργία posix).

--περιορισμένος

Το κέλυφος γίνεται περιορισμένο (βλ. ΠΕΡΙΟΡΙΣΜΕΝΗ ΚΟΛΙΕ παρακάτω).

-rpm-απαιτεί

Δημιουργήστε τη λίστα των αρχείων που απαιτούνται για την εκτέλεση του σεναρίου κελύφους. Αυτό σημαίνει '-n' και υπόκειται στους ίδιους περιορισμούς όπως ο έλεγχος του ελέγχου σφαλμάτων κατά τη συμπλήρωση. Τα backticks, [] οι δοκιμές και οι evals δεν αναλύονται, έτσι μπορεί να χάσουν κάποιες εξαρτήσεις. --verbose Ισοδύναμο με -v .

--εκδοχή

Προβάλετε τις πληροφορίες έκδοσης για αυτήν την εμφάνιση του bash στην τυπική έξοδο και ολοκληρώστε με επιτυχία.

ARGUMENTS

Εάν παραμένουν τα επιχειρήματα μετά την επεξεργασία των επιλογών και δεν έχει παρασχεθεί ούτε η επιλογή -c ούτε η επιλογή -s , το πρώτο όρισμα θεωρείται ότι είναι το όνομα ενός αρχείου που περιέχει εντολές κελύφους. Αν το bash χρησιμοποιείται με αυτόν τον τρόπο, το $ 0 έχει οριστεί στο όνομα του αρχείου και οι παράμετροι θέσης έχουν οριστεί στα υπόλοιπα επιχειρήματα. Ο Bash διαβάζει και εκτελεί εντολές από αυτό το αρχείο και μετά βγαίνει. Η κατάσταση εξόδου του Bash είναι η κατάσταση εξόδου της τελευταίας εντολής που εκτελέστηκε στο σενάριο. Αν δεν εκτελεστούν εντολές, η κατάσταση εξόδου είναι 0. Ας γίνει πρώτα μια προσπάθεια να ανοίξει το αρχείο στον τρέχοντα κατάλογο και, εάν δεν βρεθεί κανένα αρχείο, τότε το κέλυφος αναζητά τους καταλόγους στο PATH για το σενάριο.

ΕΠΙΚΛΗΣΗ

Ένα κέλυφος σύνδεσης είναι εκείνο του οποίου ο πρώτος χαρακτήρας του argument μηδέν είναι ένα - ή ένα ξεκίνησε με την επιλογή --login .

Ένα διαδραστικό κέλυφος είναι ένα ξεκίνημα χωρίς επιχειρήματα μη επιλογής και χωρίς την επιλογή -c , των οποίων η τυπική είσοδος και έξοδος είναι αμφότερα συνδεδεμένα με τερματικά (όπως καθορίζεται από το isatty (3)), ή ένα ξεκίνησε με την επιλογή -i . Το PS1 έχει οριστεί και το $ - περιλαμβάνει i αν το bash είναι διαδραστικό, επιτρέποντας σε ένα σενάριο κελύφους ή ένα αρχείο εκκίνησης να δοκιμάσει αυτή την κατάσταση.

Οι παρακάτω παράγραφοι περιγράφουν τον τρόπο με τον οποίο το bash εκτελεί τα αρχεία εκκίνησης. Αν κάποιο από τα αρχεία υπάρχει αλλά δεν μπορεί να διαβαστεί, το bash αναφέρει ένα σφάλμα. Τα Tildes επεκτείνονται σε ονόματα αρχείων, όπως περιγράφεται παρακάτω στην επέκταση Tilde στην ενότητα EXPANSION .

Όταν το bash χρησιμοποιείται ως διαδραστικό κέλυφος σύνδεσης ή σαν ένα μη αλληλεπιδραστικό κέλυφος με την επιλογή --login , πρώτα διαβάζει και εκτελεί εντολές από το αρχείο / etc / profile , αν το αρχείο υπάρχει. Μετά την ανάγνωση αυτού του αρχείου, αναζητά τα ~ / .bash_profile , ~ / .bash_login και ~ / .profile , σε αυτή τη σειρά και διαβάζει και εκτελεί εντολές από την πρώτη που υπάρχει και είναι αναγνώσιμη. Η επιλογή - noprofile μπορεί να χρησιμοποιηθεί όταν το κέλυφος αρχίσει να αναστέλλει αυτή τη συμπεριφορά.

Όταν εξέρχεται ένα κέλυφος σύνδεσης, το bash διαβάζει και εκτελεί εντολές από το αρχείο ~ / .bash_logout , αν υπάρχει.

Όταν ένα αλληλεπιδραστικό κέλυφος που δεν είναι κέλυφος σύνδεσης ξεκινά, το bash διαβάζει και εκτελεί εντολές από το ~ / .bashrc , αν το αρχείο υπάρχει. Αυτό μπορεί να ανασταλεί χρησιμοποιώντας την επιλογή -norc . Η επιλογή αρχείου --rcfile θα αναγκάσει το bash να διαβάσει και να εκτελέσει εντολές από αρχείο αντί για / / .bashrc .

Όταν το bash ξεκινά μη-διαδραστικά, για να εκτελέσει ένα σενάριο κελύφους, για παράδειγμα ψάχνει για τη μεταβλητή BASH_ENV στο περιβάλλον, επεκτείνει την τιμή του αν εμφανίζεται εκεί και χρησιμοποιεί την επεκταμένη τιμή ως όνομα ενός αρχείου για ανάγνωση και εκτέλεση . Ο Bash συμπεριφέρεται σαν να εκτελέστηκε η ακόλουθη εντολή:

αν [-n "$ BASH_ENV"]; έπειτα . "$ BASH_ENV"; fi

αλλά η τιμή της μεταβλητής PATH δεν χρησιμοποιείται για την αναζήτηση του ονόματος αρχείου.

Αν το bash χρησιμοποιείται με το όνομα sh , προσπαθεί να μιμηθεί τη συμπεριφορά έναρξης των ιστορικών εκδόσεων του sh όσο το δυνατόν πιο στενά, ενώ συμμορφώνεται επίσης με το πρότυπο POSIX. Όταν καλείται ως διαδραστικό κέλυφος σύνδεσης ή με ένα μη αλληλεπιδραστικό κέλυφος με την επιλογή --login , προσπαθεί πρώτα να διαβάσει και να εκτελέσει εντολές από / etc / profile και ~ / .profile , με αυτή τη σειρά. Η επιλογή - noprofile μπορεί να χρησιμοποιηθεί για να εμποδίσει αυτή τη συμπεριφορά. Όταν χρησιμοποιείται ως αλληλεπιδραστικό κέλυφος με το όνομα sh , το bash αναζητά τη μεταβλητή ENV , επεκτείνει την αξία του αν έχει οριστεί και χρησιμοποιεί την διευρυμένη τιμή ως το όνομα ενός αρχείου για ανάγνωση και εκτέλεση. Δεδομένου ότι ένα κελί που χρησιμοποιείται ως sh δεν προσπαθεί να διαβάσει και να εκτελέσει εντολές από οποιαδήποτε άλλα αρχεία εκκίνησης, η επιλογή -rcfile δεν έχει καμία επίδραση. Ένα μη αλληλεπιδραστικό κέλυφος που επικαλείται με το όνομα sh δεν επιχειρεί να διαβάσει άλλα αρχεία εκκίνησης. Όταν ενεργοποιείται ως sh , το bash εισέρχεται σε κατάσταση posix μετά την ανάγνωση των αρχείων εκκίνησης.

Όταν το bash ξεκινά σε κατάσταση posix , όπως και στην επιλογή γραμμής εντολών - POSIX, ακολουθεί το πρότυπο POSIX για αρχεία εκκίνησης. Σε αυτήν τη λειτουργία, τα διαδραστικά κελύφη επεκτείνουν τη μεταβλητή ENV και οι εντολές διαβάζονται και εκτελούνται από το αρχείο του οποίου το όνομα είναι η διευρυμένη τιμή. Δεν γίνεται ανάγνωση άλλων αρχείων εκκίνησης.

Ο Bash προσπαθεί να προσδιορίσει πότε τρέχει από το απομακρυσμένο κέλυφος daemon, συνήθως rshd . Αν το bash καθορίσει ότι εκτελείται από το rshd , διαβάζει και εκτελεί εντολές από ~ / .bashrc , αν το αρχείο υπάρχει και είναι αναγνώσιμο. Δεν θα το κάνει αυτό αν επικαλείται ως sh . Η επιλογή -norc μπορεί να χρησιμοποιηθεί για την παρεμπόδιση αυτής της συμπεριφοράς και η επιλογή -rcfile μπορεί να χρησιμοποιηθεί για να αναγκάσει την ανάγνωση ενός άλλου αρχείου, αλλά το rshd δεν επικαλείται γενικά το κέλυφος με αυτές τις επιλογές ή τους επιτρέπει να προσδιοριστεί.

Εάν το κέλυφος ξεκινήσει με την πραγματική ταυτότητα χρήστη (ομάδα) δεν είναι ίση με το πραγματικό όνομα χρήστη (ομάδα) και η επιλογή -p δεν παρέχεται, δεν γίνεται ανάγνωση αρχείων εκκίνησης, οι λειτουργίες κελύφους δεν κληρονομούνται από το περιβάλλον, τα SHELLOPTS μεταβλητή, εάν εμφανίζεται στο περιβάλλον, αγνοείται και το πραγματικό αναγνωριστικό χρήστη έχει οριστεί ως το πραγματικό αναγνωριστικό χρήστη. Εάν η επιλογή -p παρέχεται κατά την κλήση, η συμπεριφορά εκκίνησης είναι ίδια, αλλά το πραγματικό αναγνωριστικό χρήστη δεν επαναφέρεται.

ΟΡΙΣΜΟΙ

Οι ακόλουθοι ορισμοί χρησιμοποιούνται σε όλο το υπόλοιπο έγγραφο.

κενό

Ένας χώρος ή καρτέλα.

λέξη

Μια ακολουθία χαρακτήρων που θεωρείται ως μία μονάδα από το κέλυφος. Επίσης γνωστό ως διακριτικό .

όνομα

Μια λέξη που αποτελείται μόνο από αλφαριθμητικούς χαρακτήρες και υπογράμμιση, και ξεκινώντας με έναν αλφαβητικό χαρακτήρα ή μια υπογράμμιση. Αναφέρεται επίσης ως αναγνωριστικό .

metacharacter

Ένας χαρακτήρας που, όταν είναι μη καταγεγραμμένος, διαχωρίζει τις λέξεις. Ένα από τα ακόλουθα:

| &; () <> καρτέλα χώρου

χειριστή ελέγχου

Ένα διακριτικό που εκτελεί μια λειτουργία ελέγχου. Είναι ένα από τα παρακάτω σύμβολα:

|| & &&; · · () |

ΚΡΑΤΗΣΕΙΣ ΛΕΞΕΙΣ

Οι δεσμευμένες λέξεις είναι λέξεις που έχουν ιδιαίτερη σημασία στο κέλυφος. Οι ακόλουθες λέξεις αναγνωρίζονται ως δεσμευμένες όταν είναι μη καταγεγραμμένες και είτε η πρώτη λέξη μιας απλής εντολής (βλ. SHELL GRAMMAR παρακάτω) είτε η τρίτη λέξη μιας περίπτωσης ή για εντολή:

! περίπτωση κάνουμε elif αλλιώς esac fi για λειτουργία αν σε επιλέξτε τότε έως ότου {} χρόνο [[]]

SHELL GRAMMAR

Απλές εντολές

Μια απλή εντολή είναι μια ακολουθία προαιρετικών μεταβλητών αναθέσεων ακολουθούμενη από κενές λέξεις-κλειδιά και ανακατευθύνσεις και τερματίζεται από έναν χειριστή ελέγχου . Η πρώτη λέξη καθορίζει την εντολή που πρέπει να εκτελεστεί και μεταβιβάζεται ως μηδέν. Οι υπόλοιπες λέξεις μεταβιβάζονται ως επιχειρήματα στην εντολή που καλείται.

Η τιμή επιστροφής μιας απλής εντολής είναι η κατάσταση εξόδου ή 128+ n αν η εντολή τερματιστεί από το σήμα n .

Αγωγούς

Ένας αγωγός είναι μια ακολουθία μιας ή περισσότερων εντολών που χωρίζονται από τον χαρακτήρα | . Η μορφή ενός αγωγού είναι:

[ χρόνος [ -p ]] [! ] εντολή [ command2 ...]

Η τυπική έξοδος εντολής συνδέεται μέσω ενός σωλήνα με την τυπική είσοδο της εντολής2 . Αυτή η σύνδεση εκτελείται πριν από οποιεσδήποτε ανακατευθύνσεις καθορίζονται από την εντολή (δείτε REDIRECTION παρακάτω).

Εάν η δεσμευμένη λέξη ! πριν από έναν αγωγό, η κατάσταση εξόδου αυτού του αγωγού είναι το λογικό NOT της κατάστασης εξόδου της τελευταίας εντολής. Διαφορετικά, η κατάσταση του αγωγού είναι η κατάσταση εξόδου της τελευταίας εντολής. Το κέλυφος περιμένει για να τερματίσει όλες οι εντολές στον αγωγό πριν επιστρέψει μια τιμή.

Εάν η λέξη που προορίζεται για χρονικό διάστημα προηγείται μιας αγωγού, ο χρόνος που έχει περάσει καθώς και ο χρόνος χρήσης και του συστήματος που καταναλώνεται από την εκτέλεσή της, αναφέρονται όταν τερματιστεί ο αγωγός. Η επιλογή -p αλλάζει τη μορφή εξόδου σε εκείνη που καθορίζεται από το POSIX. Η μεταβλητή TIMEFORMAT μπορεί να οριστεί σε μια συμβολοσειρά μορφοποίησης που καθορίζει τον τρόπο εμφάνισης των πληροφοριών χρονισμού. ανατρέξτε στην περιγραφή του TIMEFORMAT κάτω από τις μεταβλητές Shell παρακάτω.

Κάθε εντολή σε έναν αγωγό εκτελείται ως ξεχωριστή διαδικασία (δηλ. Σε ένα υποσύνολο).

Τόπος αγώνων

Μια λίστα είναι μια ακολουθία ενός ή περισσοτέρων αγωγών που διαχωρίζονται από έναν από τους χειριστές . , & , && , ή || , και προαιρετικά τερματίζεται από έναν από αυτούς . , & , ή .

Από αυτούς τους χειριστές λίστας, && και || έχουν την ίδια προτεραιότητα, ακολουθούμενη από · και &, που έχουν την ίδια προτεραιότητα.

Μια σειρά από μία ή περισσότερες νέες γραμμές μπορεί να εμφανιστεί σε μια λίστα αντί για ένα ερωτηματικό για να οριοθετήσετε τις εντολές.

Αν μια εντολή τερματίζεται από τον χειριστή ελέγχου & , το κέλυφος εκτελεί την εντολή στο παρασκήνιο σε ένα υποκεφάλαιο. Το κέλυφος δεν περιμένει την ολοκλήρωση της εντολής και η κατάσταση επιστροφής είναι 0. Οι εντολές χωρίζονται από ένα . εκτελούνται διαδοχικά. το κέλυφος περιμένει για κάθε εντολή να τερματίσει με τη σειρά του. Η κατάσταση επιστροφής είναι η κατάσταση εξόδου της τελευταίας εντολής που εκτελέστηκε.

Οι χειριστές ελέγχου && και || υποδηλώνουν λίστες AND και λίστες OR, αντίστοιχα. Μια λίστα AND έχει τη φόρμα

command1 && command2

η εντολή2 εκτελείται αν και μόνο αν η εντολή1 επιστρέφει μηδενική κατάσταση εξόδου.

Μια λίστα OR έχει τη φόρμα

command1 || command2

η εντολή2 εκτελείται αν και μόνο αν η εντολή1 επιστρέφει μια μη μηδενική κατάσταση εξόδου. Η κατάσταση επιστροφής των λιστών AND και OR είναι η κατάσταση εξόδου της τελευταίας εντολής που εκτελέστηκε στη λίστα.

Σύνθετες εντολές

Μια σύνθετη εντολή είναι μία από τις ακόλουθες:

( κατάλογος )

η λίστα εκτελείται σε ένα υποσύνολο. Οι αναθέσεις μεταβλητών και οι ενσωματωμένες εντολές που επηρεάζουν το περιβάλλον του κελύφους δεν παραμένουν σε ισχύ μετά την ολοκλήρωση της εντολής. Η κατάσταση επιστροφής είναι η κατάσταση εξόδου της λίστας .

{ list ; }}

η λίστα γίνεται απλά στο τρέχον περιβάλλον κελύφους. η λίστα πρέπει να τερματιστεί με μια νέα γραμμή ή με ένα ερωτηματικό. Αυτό είναι γνωστό ως εντολή ομάδας . Η κατάσταση επιστροφής είναι η κατάσταση εξόδου της λίστας . Σημειώστε ότι σε αντίθεση με τα metacharacters ( και ) , τα { και } είναι αποκλειστικές λέξεις και πρέπει να εμφανίζονται όταν επιτρέπεται η αναγνώριση μιας δεσμευμένης λέξης. Δεδομένου ότι δεν προκαλούν διάλειμμα λέξης, πρέπει να διαχωριστούν από τη λίστα με κενά.

(( έκφραση ))

Η έκφραση αξιολογείται σύμφωνα με τους κανόνες που περιγράφονται κατωτέρω υπό ΑΡΙΘΜΙΚΗ ΑΞΙΟΛΟΓΗΣΗ . Εάν η τιμή της έκφρασης είναι μηδενική, η κατάσταση επιστροφής είναι 0. διαφορετικά η κατάσταση επιστροφής είναι 1. Αυτό είναι ακριβώς ισοδύναμο με το " έκφραση ".

[[ έκφραση ]]

Επιστρέφει μια κατάσταση 0 ή 1 ανάλογα με την αξιολόγηση της έκφρασης έκφρασης υπό όρους. Οι εκφράσεις αποτελούνται από τα αρχέγονα που περιγράφονται παρακάτω υπό ΣΥΝΘΕΤΙΚΕΣ ΕΚΦΡΑΣΕΙΣ . Η διαίρεση του Word και η επέκταση του ονόματος διαδρομής δεν εκτελούνται στις λέξεις μεταξύ των [[ και ]] ; η επέκταση tilde, η παράμετρος και η μεταβλητή επέκταση, η αριθμητική επέκταση, η υποκατάσταση της εντολής, η αντικατάσταση της διαδικασίας και η αφαίρεση των τιμών.

Όταν χρησιμοποιούνται οι χειριστές == και ! = , Η συμβολοσειρά στα δεξιά του χειριστή θεωρείται ένα μοτίβο και ταιριάζει σύμφωνα με τους κανόνες που περιγράφονται παρακάτω στο πλαίσιο Matching . Η τιμή επιστροφής είναι 0 αν η συμβολοσειρά ταιριάζει ή δεν ταιριάζει με το μοτίβο, αντίστοιχα, και 1 διαφορετικά. Οποιοδήποτε τμήμα του μοτίβου μπορεί να αναφερθεί για να το αναγκάσει να ταιριάζει ως κορδόνι.

Οι εκφράσεις μπορούν να συνδυαστούν χρησιμοποιώντας τους ακόλουθους χειριστές, οι οποίοι απαριθμούνται με φθίνουσα σειρά προτεραιότητας:

( έκφραση )

Επιστρέφει την τιμή της έκφρασης . Αυτό μπορεί να χρησιμοποιηθεί για να παρακάμψει την κανονική προτεραιότητα των χειριστών.

! έκφραση

Αλήθεια αν η έκφραση είναι ψευδής.

έκφραση1 && έκφραση2

Αληθές αν και η έκφραση1 και η έκφραση2 είναι αληθείς.

έκφραση1 || expression2 Αληθές αν ισχύει είτε expression1 είτε expression2 .

Οι && και || οι χειριστές δεν αξιολογούν την έκφραση2 εάν η τιμή της έκφρασης1 είναι επαρκής για να καθορίσει την τιμή επιστροφής ολόκληρης της έκφρασης υπό όρους.

για το όνομα [ σε λέξη ]. κάνει λίστα ? Έγινε

Ο κατάλογος των λέξεων που ακολουθούν διευρύνεται, δημιουργώντας μια λίστα στοιχείων. Το όνομα της μεταβλητής ρυθμίζεται σε κάθε στοιχείο αυτής της λίστας με τη σειρά του και η λίστα εκτελείται κάθε φορά. Εάν η λέξη παραλείπεται, η εντολή for εκτελεί μια λίστα μία φορά για κάθε παραμετρική θέση που έχει οριστεί (βλ. ΠΑΡΑΜΕΤΡΟΙ παρακάτω). Η κατάσταση επιστροφής είναι η κατάσταση εξόδου της τελευταίας εντολής που εκτελείται. Εάν η επέκταση των στοιχείων που ακολουθούν σε αποτελέσματα σε μια κενή λίστα, δεν εκτελούνται εντολές και η κατάσταση επιστροφής είναι 0.

για (( expr1 , expr2 , expr3 )), κάνει λίστα ? Έγινε

Πρώτον, η αριθμητική έκφραση expr1 αξιολογείται σύμφωνα με τους κανόνες που περιγράφονται παρακάτω κάτω από την ARITHMETIC EVALUATION . Η αριθμητική έκφραση expr2 αξιολογείται στη συνέχεια επανειλημμένα έως ότου αξιολογηθεί στο μηδέν. Κάθε φορά που το expr2 αξιολογείται σε μη μηδενική τιμή, εκτελείται λίστα και υπολογίζεται η αριθμητική έκφραση expr3 . Αν οποιαδήποτε παράσταση παραλείπεται, συμπεριφέρεται σαν να εκτιμάται στο 1. Η τιμή επιστροφής είναι η κατάσταση εξόδου της τελευταίας εντολής στη λίστα που εκτελείται ή ψευδής εάν οποιαδήποτε από τις εκφράσεις είναι άκυρη.

επιλέξτε όνομα [ σε λέξη ]. κάνει λίστα ? Έγινε

Ο κατάλογος των λέξεων που ακολουθούν διευρύνεται, δημιουργώντας μια λίστα στοιχείων. Το σύνολο των διευρυμένων λέξεων εκτυπώνεται στο τυπικό σφάλμα, το καθένα από το οποίο προηγείται από έναν αριθμό. Αν παραλείπεται η λέξη με λέξεις , εκτυπώνονται οι παράμετροι θέσης (βλ. ΠΑΡΑΜΕΤΡΟΙ παρακάτω). Στη συνέχεια εμφανίζεται η εντολή του PS3 και διαβάζεται μια γραμμή από την τυπική είσοδο. Εάν η γραμμή αποτελείται από έναν αριθμό που αντιστοιχεί σε μία από τις εμφανιζόμενες λέξεις, τότε η τιμή του ονόματος ορίζεται στη λέξη αυτή. Αν η γραμμή είναι κενή, εμφανίζονται ξανά οι λέξεις και η ερώτηση. Αν διαβαστεί ο EOF, ολοκληρώνεται η εντολή. Οποιαδήποτε άλλη τιμή διαβάζει προκαλεί το όνομα να είναι μηδενικό. Η ανάγνωση γραμμής αποθηκεύεται στη μεταβλητή ΑΠΑΝΤΗΣΗ . Η λίστα εκτελείται μετά από κάθε επιλογή μέχρι να εκτελεστεί μια εντολή διακοπής . Η κατάσταση εξόδου της επιλογής είναι η κατάσταση εξόδου της τελευταίας εντολής που εκτελέστηκε στη λίστα ή μηδέν εάν δεν εκτελέστηκαν εντολές.

λέξη περίπτωσης σε [[(] μοτίβο [ | μοτίβο ]

Μια εντολή για την περίπτωση επεκτείνει πρώτα τη λέξη και προσπαθεί να την ταιριάξει με κάθε μοτίβο με τη σειρά της, χρησιμοποιώντας τους ίδιους κανόνες αντιστοίχισης όπως για την επέκταση ονομάτων διαδρομών (ανατρέξτε στην ενότητα Επέκταση ονόματος διαδρομής παρακάτω). Όταν εντοπιστεί μια αντιστοίχιση, εκτελείται η αντίστοιχη λίστα . Μετά τον πρώτο αγώνα, δεν επιχειρούνται επόμενες αντιστοιχίες. Η κατάσταση εξόδου είναι μηδέν εάν δεν ταιριάζει με το πρότυπο. Διαφορετικά, είναι η κατάσταση εξόδου της τελευταίας εντολής που εκτελέστηκε στη λίστα .

εάν λίστα ? στη συνέχεια λίστα? [ κατάλογος elif ; στη συνέχεια λίστα ? ] ... [ άλλος κατάλογος . ] fi

Η λίστα if εκτελείται. Αν η κατάσταση εξόδου του είναι μηδέν, τότε εκτελείται ο κατάλογος . Διαφορετικά, κάθε λίστα elif εκτελείται με τη σειρά της και αν η κατάσταση εξόδου της είναι μηδέν, εκτελείται η αντίστοιχη λίστα και εκτελείται η εντολή. Διαφορετικά, εκτελείται η άλλη λίστα , εάν υπάρχει. Η κατάσταση εξόδου είναι η κατάσταση εξόδου της τελευταίας εντολής που εκτελέστηκε ή μηδέν, αν δεν υπάρχει δοκιμαστική κατάσταση αληθής.

ενώ λίστα ? κάνει λίστα ? Έγινε

μέχρι τη λίστα . κάνει λίστα ? Έγινε

Η εντολή while συνεχώς εκτελεί τον κατάλογο εκτέλεσης εφόσον η τελευταία εντολή στη λίστα επιστρέφει μηδενική κατάσταση εξόδου. Η εντολή until είναι ταυτόσημη με την εντολή while , με εξαίρεση ότι η δοκιμή αναιρείται. η λίστα εκτέλεσης εκτελείται εφ 'όσον η τελευταία εντολή στη λίστα επιστρέφει μια μη μηδενική κατάσταση εξόδου. Η κατάσταση εξόδου του χρόνου και μέχρι τις εντολές είναι η κατάσταση εξόδου της τελευταίας εντολής λίστας εκτέλεσης που εκτελέστηκε ή μηδέν εάν δεν εκτελέστηκε καμία.

[ function ] όνομα () { λίστα ; }}

Αυτό ορίζει μια συνάρτηση που ονομάζεται όνομα . Το σώμα της συνάρτησης είναι η λίστα εντολών μεταξύ {και}. Αυτή η λίστα εκτελείται κάθε φορά που ορίζεται το όνομα ως το όνομα μιας απλής εντολής. Η κατάσταση εξόδου μιας συνάρτησης είναι η κατάσταση εξόδου της τελευταίας εντολής που εκτελέστηκε στο σώμα. (Βλέπε ΛΕΙΤΟΥΡΓΙΕΣ παρακάτω.)

ΣΧΟΛΙΑ

Σε ένα μη αλληλεπιδραστικό κέλυφος ή σε ένα διαδραστικό κέλυφος στο οποίο είναι ενεργοποιημένη η επιλογή interactive_comments στην ενσωματωμένη εντολή (βλέπε SHELL BUILTIN COMMANDS παρακάτω), μια λέξη που αρχίζει με # προκαλεί την παραβίαση αυτής της λέξης και όλων των υπόλοιπων χαρακτήρων στη γραμμή αυτή. Ένα διαδραστικό κέλυφος χωρίς την ενεργοποιημένη επιλογή interactive_comments δεν επιτρέπει σχόλια. Η επιλογή interactive_comments είναι ενεργοποιημένη από προεπιλογή σε διαδραστικά κελύφη.

QUOTTING

Η παραπομπή χρησιμοποιείται για να αφαιρέσει την ειδική έννοια ορισμένων χαρακτήρων ή λέξεων στο κέλυφος. Η παραπομπή μπορεί να χρησιμοποιηθεί για να απενεργοποιήσετε την ειδική επεξεργασία ειδικών χαρακτήρων, για να αποτρέψετε την αναγνώριση των αποκλεισμένων λέξεων ως τέτοια και για να αποτρέψετε την επέκταση παραμέτρων.

Κάθε ένα από τα μεταχαρακτήρια που αναφέρονται παραπάνω στο DEFINITIONS έχει ιδιαίτερη σημασία για το κέλυφος και πρέπει να αναφέρεται εάν πρόκειται να αναπαρασταθεί.

Όταν χρησιμοποιούνται οι εγκαταστάσεις επέκτασης ιστορικού εντολών, ο χαρακτήρας επέκτασης ιστορίας , συνήθως ! , πρέπει να αναφέρονται για να αποφευχθεί η επέκταση της ιστορίας.

Υπάρχουν τρεις μηχανισμοί παραπομπής: ο χαρακτήρας διαφυγής , τα μοναδικά αποσπάσματα και τα διπλά εισαγωγικά.

Μια μη αναφερόμενη αντίστροφη κάθετος ( \ ) είναι ο χαρακτήρας διαφυγής . Διατηρεί την κυριολεκτική τιμή του επόμενου χαρακτήρα που ακολουθεί, με εξαίρεση το . Εάν εμφανιστεί ένα ζεύγος \ και η ίδια η αντίστροφη κάθετος δεν αναφέρεται, τότε το \ αντιμετωπίζεται ως συνέχιση γραμμής (δηλαδή αφαιρείται από τη ροή εισόδου και αγνοείται αποτελεσματικά).

Ο κλεισμός χαρακτήρων σε απλά εισαγωγικά διατηρεί την κυριολεκτική τιμή κάθε χαρακτήρα μέσα στα εισαγωγικά. Ένα μοναδικό απόσπασμα δεν μπορεί να συμβεί μεταξύ των μοναδικών εισαγωγικών, ακόμα και όταν προηγείται από μια ανάστροφη κάθετο.

Η συμπλήρωση χαρακτήρων σε διπλά εισαγωγικά διατηρεί την κυριολεκτική τιμή όλων των χαρακτήρων μέσα στα εισαγωγικά, με εξαίρεση τα $ , ` , και \ . Οι χαρακτήρες $ και ` διατηρούν την ειδική τους σημασία μέσα σε διπλά εισαγωγικά. Η αντίστροφη κάθετος διατηρεί την ιδιαίτερη σημασία της μόνο όταν ακολουθείται από έναν από τους παρακάτω χαρακτήρες: $ , ` , ' , \ ή . Ένα διπλό απόσπασμα μπορεί να αναφερθεί μέσα σε διπλά εισαγωγικά προτείνοντας με μια αντίστροφη κάθετο.

Οι ειδικές παράμετροι * και @ έχουν ιδιαίτερη σημασία όταν είναι σε διπλά εισαγωγικά (δείτε ΠΑΡΑΜΕΤΡΟΙ παρακάτω).

Οι λέξεις της φόρμας $ ' string ' αντιμετωπίζονται ειδικά. Η λέξη επεκτείνεται σε συμβολοσειρά , με αντικαταστάτες χαρακτήρες που αντικαταστάθηκαν σύμφωνα με το πρότυπο ANSI C. Οι ακολουθίες διαφυγής επαναφοράς, εάν υπάρχουν, αποκωδικοποιούνται ως εξής:

\ένα

ειδοποίηση (κουδούνι)

\σι

backspace

\μι

ένα χαρακτήρα διαφυγής

\φά

φόρτωση φόρμας

\ n

νέα γραμμή

\ r

επιστροφή της μεταφοράς

\ t

οριζόντια καρτέλα

\ v

κατακόρυφη καρτέλα

\\

αντίστροφη κάθετος

\ '

ενιαίο απόσπασμα

\ nnn

ο χαρακτήρας οκτώ δυαδικών ψηφίων του οποίου η τιμή είναι η οκταδική τιμή nnn (ένα έως τρία ψηφία)

\ xHH

ο χαρακτήρας οκτώ δυαδικών ψηφίων του οποίου η τιμή είναι η δεκαεξαδική τιμή HH (ένα ή δύο δεκαδικά ψηφία)

\ c x

ένα χαρακτήρα control- x

Το εκτεταμένο αποτέλεσμα είναι μονοψήφιο, σαν να μην υπήρχε το σύμβολο του δολαρίου.

Μια συμβολοσειρά διπλής παραπομπής που προηγείται από ένα σύμβολο του δολαρίου ( $ ) θα μεταφράσει τη συμβολοσειρά σύμφωνα με την τρέχουσα τοπική ρύθμιση. Εάν η τρέχουσα τοπική ρύθμιση είναι C ή POSIX , το σύμβολο του δολαρίου αγνοείται. Αν η συμβολοσειρά μεταφραστεί και αντικατασταθεί, η αντικατάσταση είναι διπλή.

ΠΑΡΑΜΕΤΡΟΙ

Μια παράμετρος είναι μια οντότητα που αποθηκεύει τιμές. Μπορεί να είναι ένα όνομα , ένας αριθμός ή ένας από τους ειδικούς χαρακτήρες που παρατίθενται παρακάτω στην ενότητα Ειδικές παράμετροι . Για τους σκοπούς του κελύφους, μια μεταβλητή είναι μια παράμετρος που δηλώνεται με ένα όνομα . Μια μεταβλητή έχει μια τιμή και μηδέν ή περισσότερα χαρακτηριστικά . Τα χαρακτηριστικά αποδίδονται χρησιμοποιώντας την εντολή εντολής εντολής (βλ. Παρακάτω δηλώστε στο SHELL BUILTIN COMMANDS ).

Μια παράμετρος έχει οριστεί εάν έχει εκχωρηθεί μια τιμή. Η μηδενική συμβολοσειρά είναι μια έγκυρη τιμή. Μόλις οριστεί μια μεταβλητή, μπορεί να απενεργοποιηθεί μόνο με τη χρήση της εντολής unset builtin (βλ. SHELL BUILTIN COMMANDS παρακάτω).

Μια μεταβλητή μπορεί να ανατεθεί από μια δήλωση του εντύπου

όνομα = [ τιμή ]

Εάν η τιμή δεν είναι δεδομένη, η μεταβλητή έχει εκχωρηθεί η μηδενική συμβολοσειρά. Όλες οι τιμές υφίστανται επέκταση tilde, παράμετροι και μεταβλητή επέκταση, αντικατάσταση εντολών, αριθμητική επέκταση και αφαίρεση προσφοράς (βλ. EXPANSION παρακάτω). Εάν η μεταβλητή έχει σύνολο ακέραιων χαρακτηριστικών, τότε η τιμή υπόκειται σε αριθμητική επέκταση ακόμη και αν η επέκταση $ ((...)) δεν χρησιμοποιείται (δείτε Αριθμητική Επέκταση παρακάτω). Ο διαχωρισμός λέξεων δεν εκτελείται, με εξαίρεση το "$ @" όπως εξηγείται παρακάτω στην ενότητα Ειδικές παράμετροι . Η επέκταση του ονόματος διαδρομής δεν εκτελείται. Οι εντολές αντιστοίχισης μπορούν επίσης να εμφανίζονται ως επιχειρήματα για τις εντολές δήλωσης , γραφής , εξαγωγής , ανάγνωσης και τοπικής εντολής.

Παράμετροι θέσης

Μια παράμετρος θέσης είναι μια παράμετρος που υποδηλώνεται με ένα ή περισσότερα ψηφία, εκτός από τον μονοψήφιο αριθμό 0. Οι παραμέτρους θέσης εκχωρούνται από τα επιχειρήματα του κελύφους κατά την κλήση και μπορούν να εκχωρηθούν εκ νέου χρησιμοποιώντας την εντολή built in εντολών. Οι παραμέτρους θέσης μπορεί να μην εκχωρηθούν με δηλώσεις αντιστοίχισης. Οι παράμετροι θέσης αντικαθίστανται προσωρινά όταν εκτελείται μια λειτουργία κελύφους (βλ. ΛΕΙΤΟΥΡΓΙΕΣ παρακάτω).

Όταν επεκτείνεται μια παράμετρος θέσης που αποτελείται από περισσότερα από ένα ψηφία, πρέπει να περικλείεται σε τιράντες (βλ. EXPANSION παρακάτω).

Ειδικές παράμετροι

Το κέλυφος αντιμετωπίζει μερικές παραμέτρους ειδικά. Αυτές οι παράμετροι μπορούν να αναφέρονται μόνο. η ανάθεση σε αυτά δεν επιτρέπεται.

*

Επέκταση στις παραμέτρους θέσης, ξεκινώντας από μία. Όταν η επέκταση εμφανίζεται μέσα σε διπλά εισαγωγικά, επεκτείνεται σε μία μόνο λέξη με την τιμή κάθε παραμέτρου διαχωρισμένη από τον πρώτο χαρακτήρα της ειδικής μεταβλητής IFS . Δηλαδή, το " $ * " ισοδυναμεί με " $ 1 c $ 2 c ... ", όπου c είναι ο πρώτος χαρακτήρας της τιμής της μεταβλητής IFS . Εάν το IFS είναι απενεργοποιημένο, οι παράμετροι χωρίζονται με κενά. Εάν το IFS είναι μηδενικό, οι παράμετροι ενώνονται χωρίς παρεμβολείς διαχωριστές.

@

Επέκταση στις παραμέτρους θέσης, ξεκινώντας από μία. Όταν η επέκταση γίνεται μέσα σε διπλά εισαγωγικά, κάθε παράμετρος επεκτείνεται σε μια ξεχωριστή λέξη. Δηλαδή, το " $ @ " ισοδυναμεί με " $ 1 " " $ 2 " ... Όταν δεν υπάρχουν παράμετροι θέσης, τα " $ @ " και $ @ δεν επεκτείνονται σε τίποτα (δηλαδή, καταργούνται).

# #

Επεκτείνει τον αριθμό των παραμέτρων θέσης σε δεκαδική τιμή.

;

Επέκταση στην κατάσταση της πιο πρόσφατα εκτελούμενης αγωγού προσκηνίου.

-

Επεκτείνει στις τρέχουσες σημαίες επιλογών όπως καθορίζονται κατά την κλήση, από την καθορισμένη εντολή που έχει οριστεί , ή εκείνες που έχουν οριστεί από το ίδιο το κέλυφος (όπως η επιλογή -i ).

$

Επεκτείνεται στο αναγνωριστικό διαδικασίας του κελύφους. Σε ένα subshell (), επεκτείνεται στο αναγνωριστικό διαδικασίας του τρέχοντος κελύφους, όχι του υποσέλιδου.

!

Επέκταση στο αναγνωριστικό διαδικασίας της εντολής πιο πρόσφατης εκτέλεσης (ασύγχρονης).

0

Επέκταση στο όνομα του σεναρίου κελύφους ή shell. Αυτό ορίζεται στην αρχικοποίηση του κελύφους. Αν το bash είναι ενεργοποιημένο με ένα αρχείο εντολών, το $ 0 έχει οριστεί στο όνομα του αρχείου. Αν το bash ξεκινάει με την επιλογή -c , τότε το $ 0 έχει οριστεί στο πρώτο παράγωγο μετά την εκτέλεση της συμβολοσειράς, εάν υπάρχει. Διαφορετικά, έχει οριστεί στο όνομα αρχείου που χρησιμοποιείται για την κλήση bash , όπως δίνεται από το μηδενικό όρισμα.

_

Κατά την εκκίνηση του κελύφους, ορίστε το απόλυτο όνομα αρχείου του κελύφους ή του κελύφους κελύφους που εκτελείται όπως μεταβιβάστηκε στη λίστα παραμέτρων. Στη συνέχεια, επεκτείνεται στο τελευταίο όρισμα στην προηγούμενη εντολή, μετά την επέκταση. Ορίστε επίσης το πλήρες όνομα του αρχείου κάθε εντολής που εκτελέστηκε και τοποθετήθηκε στο περιβάλλον που εξήχθη σε αυτήν την εντολή. Κατά τον έλεγχο της αλληλογραφίας, αυτή η παράμετρος περιέχει το όνομα του αρχείου αλληλογραφίας που βρίσκεται υπό έλεγχο.

Shell Μεταβλητές

Οι ακόλουθες μεταβλητές ορίζονται από το κέλυφος:

ΚΤΥΠΩ ΔΥΝΑΤΑ

Επέκταση στο πλήρες όνομα αρχείου που χρησιμοποιείται για την επίκληση αυτού του στιγμιότυπου 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

Μια μεταβλητή πίνακα (βλ. Πίνακες παρακάτω) που περιέχει τα τρέχοντα περιεχόμενα της στοίβας καταλόγων. Οι κατάλογοι εμφανίζονται στη στοίβα με τη σειρά που εμφανίζονται από τη βάση δεδομένων. Η αντιστοίχιση με τα μέλη αυτής της μεταβλητής πίνακα μπορεί να χρησιμοποιηθεί για να τροποποιήσει τους καταλόγους που είναι ήδη στη στοίβα, αλλά οι ενσωματωμένες στο pushd και popd πρέπει να χρησιμοποιούνται για την προσθήκη και την κατάργηση καταλόγων. Η εκχώρηση σε αυτήν τη μεταβλητή δεν θα αλλάξει τον τρέχοντα κατάλογο. Εάν το DIRSTACK είναι απενεργοποιημένο, χάνει τις ειδικές ιδιότητές του, ακόμη και αν στη συνέχεια επαναρυθμιστεί.

EUID

Επεκτείνεται στο ενεργό αναγνωριστικό χρήστη του τρέχοντος χρήστη, που αρχικοποιήθηκε κατά την εκκίνηση του κελύφους. Αυτή η μεταβλητή είναι readonly.

FUNCNAME

Το όνομα οποιασδήποτε συνάρτησης κελύφους που εκτελείται αυτήν τη στιγμή. Αυτή η μεταβλητή υπάρχει μόνο όταν εκτελείται μια λειτουργία κελύφους. Οι κατανομές στο FUNCNAME δεν έχουν αποτέλεσμα και επιστρέφουν κατάσταση σφάλματος. Αν το FUNCNAME είναι απενεργοποιημένο, χάνει τις ειδικές ιδιότητές του, ακόμη και αν επανεκκινήσει στη συνέχεια.

ΟΜΑΔΕΣ

Μια μεταβλητή πίνακα που περιέχει τη λίστα των ομάδων των οποίων ο τρέχων χρήστης είναι μέλος. Οι αναθέσεις στις ΟΜΑΔΕΣ δεν έχουν αποτέλεσμα και επιστρέφουν κατάσταση σφάλματος. Αν οι ΟΜΑΔΕΣ είναι απενεργοποιημένες, χάνει τις ειδικές ιδιότητές του, ακόμη και αν στη συνέχεια επαναρυθμιστεί.

HISTCMD

Ο αριθμός ιστορικού ή ευρετήριο στη λίστα ιστορικού της τρέχουσας εντολής. Αν το HISTCMD είναι απενεργοποιημένο, χάνει τις ειδικές ιδιότητές του, ακόμα και αν στη συνέχεια επαναρυθμιστεί.

HOSTNAME

Αυτόματη ρύθμιση στο όνομα του τρέχοντος κεντρικού υπολογιστή.

HOSTTYPE

Αυτόματη ρύθμιση σε μια συμβολοσειρά που περιγράφει με μοναδικό τρόπο τον τύπο της μηχανής στην οποία εκτελείται bash . Η προεπιλογή είναι εξαρτώμενη από το σύστημα.

LINENO

Κάθε φορά που αναφέρεται αυτή η παράμετρος, το κέλυφος υποκαθιστά έναν δεκαδικό αριθμό που αντιπροσωπεύει τον τρέχοντα αριθμό διαδοχικών γραμμών (ξεκινώντας από το 1) μέσα σε ένα σενάριο ή μια συνάρτηση. Όταν δεν είναι σε μια δέσμη ενεργειών ή μια λειτουργία, η αξία που αντικαθίσταται δεν είναι εγγυημένη για να έχει νόημα. Αν το LINENO είναι απενεργοποιημένο, χάνει τις ειδικές ιδιότητές του, ακόμα και αν στη συνέχεια επαναρυθμιστεί.

MACHTYPE

Ρυθμίζεται αυτόματα σε μια συμβολοσειρά που περιγράφει πλήρως τον τύπο του συστήματος στον οποίο εκτελείται bash , στην τυπική μορφή του GNU cpu-company-system . Η προεπιλογή είναι εξαρτώμενη από το σύστημα.

OLDPWD

Ο προηγούμενος κατάλογος εργασίας όπως ορίστηκε από την εντολή cd .

OPTARG

Η τιμή του τελευταίου όρου επιλογής που επεξεργάζεται η εντολή getopts builtin (βλ. SHELL BUILTIN COMMANDS παρακάτω).

OPTIND

Ο δείκτης του επόμενου όρου που θα επεξεργαστεί με την εντολή getopts builtin (βλ. SHELL BUILTIN COMMANDS παρακάτω).

ΟΣΤΥΠΕ

Αυτόματη ρύθμιση σε μια συμβολοσειρά που περιγράφει το λειτουργικό σύστημα στο οποίο εκτελείται bash . Η προεπιλογή είναι εξαρτώμενη από το σύστημα.

PIPESTATUS

Μια μεταβλητή πίνακα (βλ. Πίνακες παρακάτω) που περιέχει μια λίστα με τις τιμές κατάστασης εξόδου από τις διεργασίες στον πιό πρόσφατα εκτελεμένο αγωγό προσκηνίου (ο οποίος μπορεί να περιέχει μόνο μία μόνο εντολή).

PPID

Το αναγνωριστικό διαδικασίας του γονέα του κελύφους. Αυτή η μεταβλητή είναι readonly.

PWD

Ο τρέχων κατάλογος εργασίας όπως ορίζεται από την εντολή cd .

ΤΥΧΑΙΟΣ

Κάθε φορά που αναφέρεται αυτή η παράμετρος, παράγεται ένας τυχαίος ακέραιος μεταξύ 0 και 32767. Η ακολουθία των τυχαίων αριθμών μπορεί να αρχικοποιηθεί αναθέτοντας μια τιμή στο RANDOM . Εάν η λειτουργία RANDOM είναι απενεργοποιημένη, χάνει τις ειδικές ιδιότητές της, ακόμη και αν στη συνέχεια επαναρυθμιστεί.

ΑΠΑΝΤΗΣΗ

Ρυθμίστε στη γραμμή εισόδου που διαβάζεται από την ενσωματωμένη εντολή ανάγνωσης όταν δεν παρέχονται παράπονα.

SECONDS

Κάθε φορά που αναφέρεται αυτή η παράμετρος, επιστρέφεται ο αριθμός των δευτερολέπτων από την κλήση του κελύφους. Αν μια τιμή έχει εκχωρηθεί σε SECONDS , η τιμή που επιστρέφεται με μεταγενέστερες αναφορές είναι ο αριθμός δευτερολέπτων από την εκχώρηση συν την εκχωρημένη τιμή. Αν το SECONDS είναι απενεργοποιημένο, χάνει τις ειδικές ιδιότητές του, ακόμη και αν επαναφερθεί στη συνέχεια.

ΣΚΟΥΛΑΡΙΚΙΑ

Μια λίστα χωριστών παχέος εντέρου με ενεργοποιημένες επιλογές κελύφους. Κάθε λέξη στη λίστα είναι ένα έγκυρο όρισμα για την επιλογή -o στην καθορισμένη εντολή (βλ. SHELL BUILTIN COMMANDS παρακάτω). Οι επιλογές που εμφανίζονται στα SHELLOPTS είναι εκείνες που αναφέρθηκαν από το set -o . Εάν αυτή η μεταβλητή βρίσκεται στο περιβάλλον κατά την εκκίνηση bash , κάθε επιλογή κελύφους στη λίστα θα είναι ενεργοποιημένη πριν διαβάσετε οποιαδήποτε αρχεία εκκίνησης. Αυτή η μεταβλητή είναι μόνο για ανάγνωση.

SHLVL

Αυξάνεται κατά μία φορά κάθε φορά που ξεκινάει μια εμφάνιση bash .

UID

Επέκταση στο αναγνωριστικό χρήστη του τρέχοντος χρήστη, αρχικοποιημένο κατά την εκκίνηση του κελύφους. Αυτή η μεταβλητή είναι readonly.

Οι ακόλουθες μεταβλητές χρησιμοποιούνται από το κέλυφος. Σε ορισμένες περιπτώσεις, το bash εκχωρεί μια προεπιλεγμένη τιμή σε μια μεταβλητή. Αυτές οι περιπτώσεις σημειώνονται παρακάτω.

BASH_ENV

Εάν αυτή η παράμετρος έχει οριστεί όταν το bash εκτελεί ένα σενάριο κελύφους, η τιμή του ερμηνεύεται ως όνομα αρχείου που περιέχει εντολές για την προετοιμασία του κελύφους, όπως στο ~ / .bashrc . Η τιμή του BASH_ENV υπόκειται σε επέκταση παραμέτρων, υποκατάσταση εντολών και αριθμητική επέκταση προτού ερμηνευτεί ως όνομα αρχείου. Το PATH δεν χρησιμοποιείται για την αναζήτηση του προκύπτοντος ονόματος αρχείου.

CDPATH

Η διαδρομή αναζήτησης για την εντολή cd . Πρόκειται για μια λίστα με καταλόγους χωρισμένες στο κόλον, όπου το κέλυφος αναζητά τους καταλόγους προορισμού που καθορίζονται από την εντολή cd . Μια τιμή δείγματος είναι ".: ~: / Usr".

ΣΤΗΛΕΣ

Χρησιμοποιείται από την επιλεγμένη εντολή για να καθορίσετε το πλάτος του τερματικού κατά την εκτύπωση λιστών επιλογής. Ρυθμίζεται αυτόματα κατά την παραλαβή ενός SIGWINCH.

Συμπληρώστε

Μια μεταβλητή συστοιχιών από την οποία το bash διαβάζει τις πιθανές ολοκληρώσεις που παράγονται από μια συνάρτηση κελύφους που καλείται από την προγραμματιζόμενη εγκατάσταση ολοκλήρωσης (βλ. Προγραμματιζόμενη ολοκλήρωση παρακάτω).

FCEDIT

Ο προεπιλεγμένος επεξεργαστής για την εντολή fc builtin.

FIGNORE

Μια λίστα επιθημάτων που χωρίζονται από κόλον, τα οποία πρέπει να αγνοήσετε κατά την ολοκλήρωση της εκτέλεσης του αρχείου (βλ. READLINE παρακάτω). Ένα όνομα αρχείου του οποίου το επίθημα αντιστοιχεί σε μία από τις καταχωρήσεις στο FIGNORE εξαιρείται από τη λίστα αντιστοιχισμένων αρχείων. Μια τιμή δείγματος είναι ".o: ~".

GLOBIGNORE

Μια λίστα μοτίβων διαχωρισμένων από κόλον που καθορίζουν το σύνολο των ονομάτων αρχείων που πρέπει να αγνοηθούν από την επέκταση της διαδρομής. Εάν ένα όνομα αρχείου που ταιριάζει με ένα μοντέλο επέκτασης διαδρομής ταιριάζει επίσης με ένα από τα μοτίβα στο GLOBIGNORE , καταργείται από τη λίστα των αντιστοιχιών.

HISTCONTROL

Αν οριστεί σε τιμή ignorespace , οι γραμμές που αρχίζουν με ένα χαρακτήρα διαστήματος δεν καταχωρούνται στη λίστα ιστορικού. Εάν έχει οριστεί τιμή Igoredups , δεν έχουν εισαχθεί γραμμές που ταιριάζουν με την τελευταία γραμμή ιστορικού. Μια τιμή του ignoreboth συνδυάζει τις δύο επιλογές. Εάν είναι απενεργοποιημένο ή εάν έχει οριστεί σε οποιαδήποτε άλλη τιμή από αυτές που αναφέρθηκαν παραπάνω, όλες οι γραμμές που διαβάζονται από τον προγραμματιστή αποθηκεύονται στη λίστα ιστορικού, με την επιφύλαξη της τιμής HISTIGNORE . Η λειτουργία αυτής της μεταβλητής αντικαθίσταται από το HISTIGNORE . Η δεύτερη και οι επόμενες γραμμές μιας σύνθετης εντολής πολλών γραμμών δεν ελέγχονται και προστίθενται στην ιστορία ανεξάρτητα από την τιμή του HISTCONTROL .

HISTFILE

Το όνομα του αρχείου στο οποίο αποθηκεύεται το ιστορικό εντολών (βλ. ΙΣΤΟΡΙΑ παρακάτω). Η προεπιλεγμένη τιμή είναι ~ / .bash_history . Εάν είναι απενεργοποιημένο, το ιστορικό εντολών δεν αποθηκεύεται όταν εξέρχεται ένα διαδραστικό κέλυφος.

HISTFILESIZE

Ο μέγιστος αριθμός γραμμών που περιέχονται στο αρχείο ιστορικού. Όταν αυτή η μεταβλητή έχει εκχωρηθεί μια τιμή, το αρχείο ιστορικού περικόπτεται, εάν είναι απαραίτητο, να περιέχει μόνο τον αριθμό των γραμμών. Η προεπιλεγμένη τιμή είναι 500. Το αρχείο ιστορικού είναι επίσης περικομμένο σε αυτό το μέγεθος μετά την εγγραφή του όταν βγει ένα διαδραστικό κέλυφος.

HISTIGNORE

Μια λίστα μοτίβων που διαχωρίζεται από το παχύ έντερο και χρησιμοποιείται για να αποφασίσει ποιες γραμμές εντολών θα πρέπει να αποθηκευτούν στη λίστα ιστορικού. Κάθε μοτίβο είναι αγκυρωμένο στην αρχή της γραμμής και πρέπει να ταιριάζει με την πλήρη γραμμή (δεν υπάρχει συνημμένο ` * '). Κάθε πρότυπο δοκιμάζεται ενάντια στη γραμμή αφού εφαρμοστούν οι έλεγχοι που καθορίζονται από το HISTCONTROL . Εκτός από τους κανονικούς χαρακτήρες που ταιριάζουν με τα πρότυπα κελύφους, το ' & ' ταιριάζει με την προηγούμενη γραμμή ιστορικού. Το ` & 'μπορεί να διαφύγει χρησιμοποιώντας μια πίσω κάθετο. η αντίστροφη κάθετος έχει απομακρυνθεί πριν επιχειρήσετε μια αντιστοίχιση. Η δεύτερη και οι επόμενες γραμμές μιας σύνθετης εντολής πολλών γραμμών δεν ελέγχονται και προστίθενται στην ιστορία ανεξάρτητα από την τιμή του HISTIGNORE .

HISTSIZE

Ο αριθμός εντολών που πρέπει να θυμάστε στο ιστορικό εντολών (βλ. ΙΣΤΟΡΙΑ παρακάτω). Η προεπιλεγμένη τιμή είναι 500.

ΣΠΙΤΙ

Ο αρχικός κατάλογος του τρέχοντος χρήστη. το προεπιλεγμένο όρισμα για την εντολή cd builtin. Η τιμή αυτής της μεταβλητής χρησιμοποιείται επίσης όταν εκτελείται επέκταση tilde.

HOSTFILE

Περιέχει το όνομα ενός αρχείου στην ίδια μορφή με το / etc / hosts που πρέπει να διαβαστεί όταν το κέλυφος χρειάζεται να συμπληρώσει ένα όνομα κεντρικού υπολογιστή. Ο κατάλογος των πιθανών συμπληρώσεων του κεντρικού υπολογιστή μπορεί να αλλάξει ενώ εκτελείται το κέλυφος. η επόμενη ολοκλήρωση του ονόματος κεντρικού υπολογιστή που επιχειρείται μετά την αλλαγή της τιμής, bash προσθέτει τα περιεχόμενα του νέου αρχείου στην υπάρχουσα λίστα. Εάν το HOSTFILE έχει οριστεί, αλλά δεν έχει αξία, η προσπάθεια bash προσπαθεί να διαβάσει το αρχείο / etc / hosts για να αποκτήσει τον κατάλογο των πιθανών συμπληρώσεων του hostname. Όταν το HOSTFILE είναι απενεργοποιημένο, η λίστα με το όνομα του κεντρικού υπολογιστή είναι διαγραμμένη.

IFS

Ο εσωτερικός διαχωριστής πεδίων που χρησιμοποιείται για διαχωρισμό λέξεων μετά την επέκταση και για τη διαίρεση γραμμών σε λέξεις με την ενσωματωμένη εντολή ανάγνωσης . Η προεπιλεγμένη τιμή είναι `` ''.

IGNOREEOF

Ελέγχει τη δράση ενός διαδραστικού κελύφους όταν λαμβάνεται ένας χαρακτήρας EOF ως μοναδική είσοδος. Εάν έχει οριστεί, η τιμή είναι ο αριθμός των διαδοχικών χαρακτήρων EOF, οι οποίοι πρέπει να πληκτρολογούνται ως οι πρώτοι χαρακτήρες μιας γραμμής εισόδου πριν από την έξοδο bash . Εάν η μεταβλητή υπάρχει αλλά δεν έχει αριθμητική τιμή ή δεν έχει τιμή, η προεπιλεγμένη τιμή είναι 10. Αν δεν υπάρχει, το EOF δηλώνει το τέλος της εισόδου στο κέλυφος.

INPUTRC

Το όνομα αρχείου για το αρχείο εκκίνησης readline , παρακάμπτοντας την προεπιλογή του ~ / .inputrc (ανατρέξτε παρακάτω στο READLINE ).

LANG

Χρησιμοποιείται για τον προσδιορισμό της κατηγορίας τοπικής ρύθμισης για οποιαδήποτε κατηγορία που δεν έχει επιλεγεί ειδικά με μια μεταβλητή ξεκινώντας από την LC_ .

LC_ALL

Αυτή η μεταβλητή υπερισχύει της τιμής του LANG και οποιασδήποτε άλλης μεταβλητής LC_ που καθορίζει μια τοπική κατηγορία.

LC_COLLATE

Αυτή η μεταβλητή καθορίζει τη σειρά ταξινόμησης που χρησιμοποιείται κατά την ταξινόμηση των αποτελεσμάτων επέκτασης διαδρομής και καθορίζει τη συμπεριφορά των εκφράσεων εύρους, των τάξεων ισοδυναμίας και των αλληλουχιών σύγκλισης μεταξύ της επέκτασης διαδρομής και της αντιστοίχισης προτύπων.

LC_CTYPE

Αυτή η μεταβλητή καθορίζει την ερμηνεία των χαρακτήρων και τη συμπεριφορά των τάξεων χαρακτήρων στην επέκταση διαδρομής και την αντιστοίχιση προτύπων.

LC_MESSAGES

Αυτή η μεταβλητή καθορίζει την τοπική ρύθμιση που χρησιμοποιείται για τη μετάφραση των συμβολοσειρών με διπλό εισηγήσεις που προηγούνται από ένα $ .

LC_NUMERIC

Αυτή η μεταβλητή καθορίζει την κατηγορία locale που χρησιμοποιείται για τη μορφοποίηση αριθμών.

LINES

Χρησιμοποιείται από την επιλεγμένη εντολή για να προσδιοριστεί το μήκος της στήλης για την εκτύπωση λιστών επιλογής. Ρυθμίζεται αυτόματα κατά την παραλαβή ενός SIGWINCH.

ΤΑΧΥΔΡΟΜΕΙΟ

Εάν αυτή η παράμετρος έχει οριστεί σε ένα όνομα αρχείου και δεν έχει οριστεί η μεταβλητή MAILPATH , το bash ενημερώνει τον χρήστη για την άφιξη του μηνύματος στο καθορισμένο αρχείο.

MAILCHECK

Καθορίζει πόσο συχνά (σε δευτερόλεπτα) ελέγχονται bash για τα μηνύματα. Η προεπιλογή είναι 60 δευτερόλεπτα. Όταν έρθει η ώρα να ελέγξετε την αλληλογραφία, το κέλυφος το κάνει πριν εμφανίσει την κύρια προτροπή. Εάν αυτή η μεταβλητή είναι απενεργοποιημένη ή έχει οριστεί σε τιμή που δεν είναι αριθμός μεγαλύτερος ή ίσος με μηδέν, το κέλυφος απενεργοποιεί τον έλεγχο αλληλογραφίας.

MAILPATH

Μια λίστα με τα ονόματα αρχείων που διαχωρίζεται από το παχύ έντερο, για να ελεγχθεί το μήνυμα. Το μήνυμα που θα εκτυπωθεί όταν φτάσει το μήνυμα σε ένα συγκεκριμένο αρχείο μπορεί να καθοριστεί διαχωρίζοντας το όνομα του αρχείου από το μήνυμα με ένα γράμμα "?". Όταν χρησιμοποιείται στο κείμενο του μηνύματος, το $ _ επεκτείνεται στο όνομα του τρέχοντος αρχείου αλληλογραφίας. Παράδειγμα:

MAILPATH = '/ var / mail / bfox;' Έχετε mail ": ~ / shell-mail;" $ _ έχει ταχυδρομείο! "'

Το Bash παρέχει μια προεπιλεγμένη τιμή για αυτήν τη μεταβλητή, αλλά η θέση των αρχείων αλληλογραφίας χρήστη που χρησιμοποιεί εξαρτάται από το σύστημα (π.χ. / var / mail / $ USER ).

OPTERR

Εάν έχει οριστεί η τιμή 1, το bash εμφανίζει μηνύματα σφάλματος που παράγονται από την εντολή getopts builtin (βλ. SHELL BUILTIN COMMANDS παρακάτω). Το OPTERR αρχικοποιείται σε 1 κάθε φορά που γίνεται επίκληση του κελύφους ή εκτελείται ένα σενάριο κελύφους.

ΜΟΝΟΠΑΤΙ

Η διαδρομή αναζήτησης για τις εντολές. Πρόκειται για μια λίστα με τους καταλόγους που χωρίζει τον κόλον και στον οποίο το κέλυφος ψάχνει για εντολές (βλ. Παρακάτω την ΕΠΑΓΓΕΛΜΑΤΙΚΗ ΕΚΤΕΛΕΣΗ ). Η προεπιλεγμένη διαδρομή είναι εξαρτώμενη από το σύστημα και καθορίζεται από το διαχειριστή που εγκαθιστά το bash . Μια κοινή τιμή είναι `` / usr / gnu / bin: / usr / local / bin: / usr / ucb: / bin: / usr / bin:.

POSIXLY_CORRECT

Εάν αυτή η μεταβλητή βρίσκεται στο περιβάλλον κατά την εκκίνηση του bash , το κέλυφος εισέρχεται στη λειτουργία posix πριν να διαβάσει τα αρχεία εκκίνησης, σαν να είχε παρασχεθεί η επιλογή - posix κλήσης. Αν έχει ρυθμιστεί όσο λειτουργεί το κέλυφος, το bash ενεργοποιεί τη λειτουργία posix , σαν να είχε εκτελεστεί η εντολή set -o posix .

PROMPT_COMMAND

Εάν έχει οριστεί, η τιμή εκτελείται ως εντολή πριν από την έκδοση κάθε πρωτογενούς προτροπής.

PS1

Η τιμή αυτής της παραμέτρου επεκτείνεται (δείτε παρακάτω) και χρησιμοποιείται ως η κύρια συμβολοσειρά προτροπής. Η προεπιλεγμένη τιμή είναι `` \ s- \ v \ $ ''.

PS2

Η τιμή αυτής της παραμέτρου επεκτείνεται όπως και με το PS1 και χρησιμοποιείται ως δευτερεύουσα συμβολοσειρά προτροπής. Η προεπιλογή είναι `` > ''.

PS3

Η τιμή αυτής της παραμέτρου χρησιμοποιείται ως προτροπή για την εντολή επιλογής (βλ. SHELL GRAMMAR παραπάνω).

PS4

Η τιμή αυτής της παραμέτρου επεκτείνεται όπως και με το PS1 και η τιμή εκτυπώνεται πριν από κάθε εντολή bash που εμφανίζεται κατά τη διάρκεια μιας ανάλυσης εκτέλεσης. Ο πρώτος χαρακτήρας του PS4 επαναλαμβάνεται πολλές φορές, όπως είναι απαραίτητο, για να υποδείξει πολλαπλά επίπεδα διεύθυνσης. Η προεπιλογή είναι `` + ''.

ΜΟΡΦΗ ΩΡΑΣ

Η τιμή αυτής της παραμέτρου χρησιμοποιείται ως συμβολοσειρά μορφοποίησης που καθορίζει τον τρόπο με τον οποίο θα πρέπει να εμφανίζονται οι πληροφορίες χρονισμού για αγωγούς που έχουν προκαθοριστεί με τη λέξη που έχει επιλεγεί με την ώρα . Ο χαρακτήρας % εισάγει μια ακολουθία διαφυγής που επεκτείνεται σε τιμή χρόνου ή άλλες πληροφορίες. Οι αλληλουχίες διαφυγής και οι έννοιές τους έχουν ως εξής: τα τιράντες σημαίνουν προαιρετικά τμήματα.

%%

Ένα κυριολεκτικό % .

% [ p ] [1] R

Ο χρόνος που έχει περάσει σε δευτερόλεπτα.

% [ p ] [l] U

Ο αριθμός των δευτερολέπτων CPU που δαπανάται στη λειτουργία χρήστη.

% [ p ] [l] S

Ο αριθμός των δευτερολέπτων CPU που δαπανάται σε λειτουργία συστήματος.

Το ποσοστό CPU, υπολογίζεται ως (% U +% S) /% R.

Το προαιρετικό p είναι ένα ψηφίο που καθορίζει την ακρίβεια , τον αριθμό των κλασματικών ψηφίων μετά από ένα δεκαδικό σημείο. Μια τιμή 0 δεν προκαλεί την έξοδο ενός δεκαδικού σημείου ή κλάσματος. Μπορούν να καθοριστούν το πολύ τρία μέρη μετά το δεκαδικό σημείο. οι τιμές του p μεγαλύτερες από 3 αλλάζουν σε 3. Εάν το p δεν έχει καθοριστεί, χρησιμοποιείται η τιμή 3.

Το προαιρετικό l καθορίζει μια μακρύτερη μορφή, συμπεριλαμβανομένων των λεπτών, του εντύπου MM m SS . FF s. Η τιμή του p καθορίζει εάν το κλάσμα συμπεριλαμβάνεται ή όχι.

Αν αυτή η μεταβλητή δεν έχει οριστεί, το bash λειτουργεί σαν να είχε την τιμή $ '\ nreal \ t% 3lR \ nuser \ t% 3lU \ nsys% 3lS' . Εάν η τιμή είναι μηδενική, δεν εμφανίζονται πληροφορίες χρονισμού. Μια νέα γραμμή που προστίθεται όταν εμφανίζεται η συμβολοσειρά μορφής.

TMOUT

Αν έχει οριστεί τιμή μεγαλύτερη από μηδέν, το TMOUT αντιμετωπίζεται ως το προεπιλεγμένο χρονικό όριο για τη ενσωματωμένη διαβάθμιση. Η εντολή επιλογής τερματίζεται εάν η είσοδος δεν φθάνει μετά από τα δευτερόλεπτα TMOUT όταν η είσοδος προέρχεται από ένα τερματικό. Σε ένα διαδραστικό κέλυφος, η τιμή ερμηνεύεται ως ο αριθμός των δευτερολέπτων που περιμένουν την είσοδο μετά την έκδοση της κύριας προτροπής. Το Bash τερματίζεται μετά την αναμονή για αυτόν τον αριθμό δευτερολέπτων αν η είσοδος δεν φθάνει.

auto_resume

Αυτή η μεταβλητή ελέγχει τον τρόπο αλληλεπίδρασης του κελύφους με τον χρήστη και τον έλεγχο της εργασίας. Εάν αυτή η μεταβλητή έχει οριστεί, απλές εντολές απλής λέξης χωρίς ανακατευθύνσεις αντιμετωπίζονται ως υποψήφιοι για επανάληψη μιας υπάρχουσας εργασίας που έχει σταματήσει. Δεν υπάρχει καμία αμφιβολία επιτρέπεται. εάν υπάρχουν περισσότερες από μία εργασίες που ξεκινούν με την πληκτρολογημένη συμβολοσειρά, επιλέγεται η τελευταία προσπελάσιμη εργασία. Το όνομα μιας εργασίας που σταμάτησε, σε αυτό το πλαίσιο, είναι η γραμμή εντολών που χρησιμοποιείται για την εκκίνησή της. Εάν έχει οριστεί ακριβής τιμή, η συμβολοσειρά που παρέχεται πρέπει να ταιριάζει ακριβώς με το όνομα μιας εργασίας διακοπής. εάν έχει οριστεί σε υποστέλεση , η συμβολοσειρά που παρέχεται πρέπει να ταιριάζει με μια υποκλειδί του ονόματος μιας εργασίας διακοπής. Η τιμή υποσχηματισμού παρέχει λειτουργικότητα ανάλογη με το %; αναγνωριστικό εργασίας (βλ. παρακάτω ΕΛΕΓΧΟΣ ΕΡΓΑΣΙΑΣ ). Εάν έχει οριστεί σε οποιαδήποτε άλλη τιμή, η παρεχόμενη συμβολοσειρά πρέπει να είναι ένα πρόθεμα ενός ονόματος μιας θέσης διακοπής. αυτό παρέχει λειτουργικότητα ανάλογη με το αναγνωριστικό % εργασίας.

ιστοχάρες

Οι δύο ή τρεις χαρακτήρες που ελέγχουν την επέκταση ιστορικού και τον διαχωρισμό (δείτε την επέκταση ΙΣΤΟΡΙΑΣ παρακάτω). Ο πρώτος χαρακτήρας είναι ο χαρακτήρας επέκτασης ιστορικού , ο χαρακτήρας που σηματοδοτεί την έναρξη μιας επέκτασης ιστορικού, συνήθως ` ! '. Ο δεύτερος χαρακτήρας είναι ο χαρακτήρας γρήγορης υποκατάστασης , ο οποίος χρησιμοποιείται ως συντομογραφία για την εκ νέου εκτέλεση της προηγούμενης εντολής που εισήχθη, αντικαθιστώντας μια εντολή με μια συμβολοσειρά με άλλη. Η προεπιλογή είναι ` ^ '. Ο προαιρετικός τρίτος χαρακτήρας είναι ο χαρακτήρας ο οποίος υποδεικνύει ότι το υπόλοιπο της γραμμής είναι ένα σχόλιο όταν βρίσκεται ως ο πρώτος χαρακτήρας μιας λέξης, συνήθως ` # '. Ο χαρακτήρας σχολίου ιστορικού προκαλεί την παραγραφή της υποκατάστασης ιστορικού για τις υπόλοιπες λέξεις στη γραμμή. Δεν προκαλεί αναγκαστικά στον αναλυτή κελύφους να αντιμετωπίζει την υπόλοιπη γραμμή ως σχόλιο.

Array

Το Bash παρέχει μονοδιάστατες μεταβλητές πίνακα. Οποιαδήποτε μεταβλητή μπορεί να χρησιμοποιηθεί ως πίνακας. η δηλωμένη ενσωματωμένη θα δηλώσει ρητά μια διάταξη. Δεν υπάρχει μέγιστο όριο στο μέγεθος ενός πίνακα, ούτε οποιαδήποτε απαίτηση τα μέλη να αναπροσαρμόζονται ή να αντιστοιχίζονται συνεχόμενα. Οι πίνακες είναι ευρετηριασμένοι με ακέραιους αριθμούς και είναι μηδενικοί.

Ένας πίνακας δημιουργείται αυτόματα αν οποιαδήποτε μεταβλητή έχει εκχωρηθεί με τη χρήση του ονόματος σύνταξης [ δείκτης ] = τιμή . Ο δείκτης αντιμετωπίζεται ως αριθμητική έκφραση που πρέπει να αξιολογηθεί σε αριθμό μεγαλύτερο ή ίσο με το μηδέν. Για να δηλώσετε ρητά μια συστοιχία, χρησιμοποιήστε δηλώστε -a όνομα (δείτε SHELL BUILTIN COMMANDS παρακάτω). δηλώστε -ένα όνομα [ δείκτης ] είναι επίσης αποδεκτό. ο δείκτης αγνοείται. Χαρακτηριστικά μπορεί να καθορίζονται για μια μεταβλητή πίνακα χρησιμοποιώντας τις δηλωμένες και readonly ενσωματωμένες. Κάθε χαρακτηριστικό ισχύει για όλα τα μέλη ενός πίνακα.

Οι συστοιχίες έχουν εκχωρηθεί χρησιμοποιώντας αναθέσεις σύνθετων στοιχείων του ονόματος φόρμας = ( τιμή 1 ... τιμή n ) , όπου κάθε τιμή είναι της φόρμας [ subscript ] = string . Απαιτείται μόνο συμβολοσειρά . Αν παρέχονται οι προαιρετικές παρενθέσεις και ο δείκτης, ο δείκτης αυτός έχει εκχωρηθεί. αλλιώς ο δείκτης του εκχωρηθέντος στοιχείου είναι ο τελευταίος δείκτης ο οποίος εκχωρείται από τη δήλωση συν ένα. Η ευρετηρίαση αρχίζει από το μηδέν. Αυτή η σύνταξη γίνεται επίσης αποδεκτή από το δηλωμένο ενσωματωμένο. Τα επιμέρους στοιχεία συστοιχίας μπορεί να αντιστοιχούν στη χρήση της σύνθεσης τιμής [ subscript ] = value που έχει εισαχθεί παραπάνω.

Το unset builtin χρησιμοποιείται για να καταστρέψει συστοιχίες. unset όνομα [ δείκτης ] καταστρέφει το στοιχείο πίνακα σε δείκτη ευρετηρίου. ανενεργό όνομα , όπου το όνομα είναι ένας πίνακας ή ανενεργό όνομα [ δείκτης ], όπου ο δείκτης είναι * ή @ , αφαιρεί ολόκληρο τον πίνακα.

Οι δηλωτικοί , τοπικοί και readonly ενσωματωμένοι υιοθετούν κάθε μια -a επιλογή για να καθορίσουν έναν πίνακα. Η ενσωματωμένη διαβάθμιση δέχεται μια επιλογή -a για να εκχωρήσει μια λίστα λέξεων που διαβάζονται από την τυπική είσοδο σε έναν πίνακα. Ορίστε και δηλώστε τις ενσωματωμένες τιμές διάταξης οθόνης με τρόπο που τους επιτρέπει να επαναχρησιμοποιηθούν ως αναθέσεις.

ΕΠΕΚΤΑΣΗ

Η επέκταση πραγματοποιείται στη γραμμή εντολών αφού έχει διαχωριστεί σε λέξεις. Υπάρχουν επτά είδη επέκτασης που εκτελούνται: επέκταση στήριξης, επέκταση tilde , παράμετρος και μεταβλητή επέκταση , αντικατάσταση εντολών , αριθμητική επέκταση , διαίρεση λέξεων και επέκταση ονόματος διαδρομής .

Η σειρά των επεκτάσεων είναι: επέκταση στηρίγματος, επέκταση tilde, παράμετρος, μεταβλητή και αριθμητική επέκταση και υποκατάσταση εντολών (γίνεται από αριστερά προς δεξιά), διαίρεση λέξεων και επέκταση ονόματος διαδρομής.

Σε συστήματα που την υποστηρίζουν, υπάρχει μια πρόσθετη επέκταση διαθέσιμη: αντικατάσταση διεργασίας .

Διεύρυνση του βραχίονα

Η επέκταση του βραχίονα είναι ένας μηχανισμός με τον οποίο μπορούν να δημιουργηθούν αυθαίρετες χορδές. Αυτός ο μηχανισμός είναι παρόμοιος με την επέκταση του ονόματος διαδρομής , αλλά δεν πρέπει να υπάρχουν τα παραγόμενα ονόματα αρχείων. Τα μοτίβα που θα επεκταθούν στο στήριγμα θα λάβουν τη μορφή προαιρετικού προαιρετικού, ακολουθούμενου από μια σειρά από χορδές που χωρίζονται με κόμματα μεταξύ ενός ζεύγους τιράντες, ακολουθούμενη από ένα προαιρετικό postcript . Το προοίμιο έχει προθέματα σε κάθε συμβολοσειρά που περιέχεται μέσα στα τιράντες, και στη συνέχεια το postcript προσαρτάται σε κάθε προκύπτουσα συμβολοσειρά, επεκτεινόμενη από αριστερά προς τα δεξιά.

Οι επεκτάσεις των βραχιόνων μπορεί να είναι ένθετες. Τα αποτελέσματα κάθε επεκταμένης συμβολοσειράς δεν ταξινομούνται. η σωστή σειρά διατηρείται. Για παράδειγμα, ένα { d, c, b } επεκτείνεται σε `ade ace abe '.

Η επέκταση του Brace πραγματοποιείται πριν από οποιεσδήποτε άλλες επεκτάσεις και οι χαρακτήρες που είναι ειδικοί σε άλλες επεκτάσεις διατηρούνται στο αποτέλεσμα. Είναι αυστηρά κείμενο. Το Bash δεν εφαρμόζει καμία συντακτική ερμηνεία στο πλαίσιο της επέκτασης ή του κειμένου μεταξύ των τιράντες.

Αυτό το κατασκεύασμα τυπικά χρησιμοποιείται ως συντομογραφία όταν το κοινό πρόθεμα των συμβολοσειρών που πρόκειται να παραχθεί είναι μεγαλύτερο από ό, τι στο παραπάνω παράδειγμα:

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

ή

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

Η επέκταση του Brace εισάγει μια μικρή ασυμβατότητα με τις ιστορικές εκδόσεις του sh . το sh δεν αντιμετωπίζει τα ανοίγματα ή το κλείσιμο των τιράντες ειδικά όταν εμφανίζονται ως μέρος μιας λέξης και τα διατηρεί στην έξοδο. Ο Bash αφαιρεί τις θωρακίσεις από τις λέξεις ως συνέπεια της επέκτασης των αρθρώσεων. Για παράδειγμα, μια λέξη που εισήχθη στο sh ως αρχείο {1,2} εμφανίζεται ταυτόσημα στην έξοδο. Η ίδια λέξη εξάγεται ως file1 file2 μετά από επέκταση από bash . Εάν είναι επιθυμητή η αυστηρή συμβατότητα με το sh , ξεκινήστε το bash με την επιλογή + B ή απενεργοποιήστε την επέκταση της ζεύξης με την επιλογή + B στην εντολή set (βλ. SHELL BUILTIN COMMANDS παρακάτω).

Επέκταση Tilde

Αν μια λέξη ξεκινάει με έναν μη κωδικευμένο χαρακτήρα tilde (` ~ '), όλοι οι χαρακτήρες που προηγούνται της πρώτης μη ταξινομημένης κάθετης (ή όλων των χαρακτήρων, αν δεν υπάρχει καμιά μη ταξινομημένη κάθετος) θεωρούνται πρόθεμα tilde . Εάν δεν αναγράφεται κανένας από τους χαρακτήρες στο πρόθεμα tilde, οι χαρακτήρες στο πρόθεμα tilde που ακολουθεί το tilda αντιμετωπίζονται ως πιθανό όνομα σύνδεσης . Εάν αυτό το όνομα σύνδεσης είναι η μηδενική συμβολοσειρά, η tilde αντικαθίσταται με την τιμή της παραμέτρου shell HOME . Αν το HOME είναι απενεργοποιημένο, αντικαθίσταται ο αρχικός κατάλογος του χρήστη που εκτελεί το κέλυφος. Διαφορετικά, το πρόθεμα tilde αντικαθίσταται από τον αρχικό κατάλογο που σχετίζεται με το καθορισμένο όνομα σύνδεσης.

Εάν το πρόθεμα tilde είναι ένα `~ + ', η τιμή της μεταβλητής PWD της μεταβλητής αντικαθιστά το πρόθεμα tilde. Εάν το πρόθεμα tilde είναι ένα `~ - ', αντικαθίσταται η τιμή της μεταβλητής OLDPWD , εάν έχει οριστεί. Εάν οι χαρακτήρες που ακολουθούν το tilde στο πρόθεμα tilde αποτελούνται από έναν αριθμό N , προαιρετικά προαιρετικό από ένα `+ 'ή ένα` -', το πρόθεμα tilde αντικαθίσταται με το αντίστοιχο στοιχείο από τη στοίβα καταλόγων, όπως θα εμφανίζεται από το dir builtin επικαλούμενο με το πρόθεμα tilde ως επιχείρημα. Αν οι χαρακτήρες που ακολουθούν το tilde στο πρόθεμα tilde αποτελούνται από έναν αριθμό χωρίς οδηγό `+ 'ή` -', `+ 'υποτίθεται.

Εάν το όνομα σύνδεσης δεν είναι έγκυρο ή η επέκταση tilde αποτύχει, η λέξη παραμένει αμετάβλητη.

Κάθε αντιστοίχιση μεταβλητής ελέγχεται για μη-καταγεγραμμένα προθέματα tilde αμέσως μετά από : ή = . Σε αυτές τις περιπτώσεις, εκτελείται επίσης επέκταση tilda. Συνεπώς, κάποιος μπορεί να χρησιμοποιεί ονόματα αρχείων με tilde σε αναθέσεις σε PATH , MAILPATH και CDPATH και το κέλυφος εκχωρεί την επεκταμένη τιμή.

Επέκταση παραμέτρων

Ο χαρακτήρας ` $ 'εισάγει επέκταση παραμέτρων, αντικατάσταση εντολών ή αριθμητική επέκταση. Το όνομα παραμέτρου ή το σύμβολο που πρόκειται να επεκταθεί μπορεί να περικλείεται σε τιράντες, οι οποίες είναι προαιρετικές αλλά χρησιμεύουν για την προστασία της μεταβλητής που επεκτείνεται από τους χαρακτήρες που ακολουθούν αμέσως, οι οποίοι θα μπορούσαν να ερμηνευθούν ως μέρος του ονόματος.

Όταν χρησιμοποιούνται πλάγιες, το αντιστοίχως τέλειο στήριγμα είναι το πρώτο ` } 'που δεν διαφεύγει από μια ανάστροφη κάθετο ή μέσα σε μια συμβαλλόμενη συμβολοσειρά και όχι μέσα από μια ενσωματωμένη αριθμητική επέκταση, υποκατάσταση εντολής ή επέκταση παραμέτρων.

Η τιμή της παραμέτρου αντικαθίσταται. Τα τιράντες απαιτούνται όταν η παράμετρος είναι μια παράμετρος θέσης με περισσότερα από ένα ψηφία ή όταν η παράμετρος ακολουθείται από έναν χαρακτήρα που δεν πρέπει να ερμηνευτεί ως μέρος του ονόματός της.

Σε κάθε μία από τις παρακάτω περιπτώσεις, η λέξη υπόκειται σε επέκταση tilde, επέκταση παραμέτρων, υποκατάσταση εντολών και αριθμητική επέκταση. Όταν δεν εκτελείται επέκταση υποστέλεσης, δοκιμές bash για μια παράμετρο που είναι απενεργοποιημένη ή μηδενική. η παράλειψη του παχέος εντέρου έχει ως αποτέλεσμα μια δοκιμή μόνο για μια παράμετρο που είναι απενεργοποιημένη.

Χρησιμοποιήστε τις προεπιλεγμένες τιμές . Εάν η παράμετρος είναι απενεργοποιημένη ή μηδενική, η επέκταση της λέξης αντικαθίσταται. Διαφορετικά, αντικαθίσταται η τιμή της παραμέτρου .

Εκχώρηση προεπιλεγμένων τιμών . Εάν η παράμετρος είναι απενεργοποιημένη ή μηδενική, η επέκταση της λέξης αντιστοιχεί στην παράμετρο . Στη συνέχεια αντικαθίσταται η τιμή της παραμέτρου . Οι παραμέτρους θέσης και οι ειδικές παράμετροι μπορεί να μην εκχωρηθούν με αυτόν τον τρόπο.

Εμφανίζεται σφάλμα εάν είναι μηδέν ή ανενεργό . Εάν η παράμετρος είναι μηδενική ή μη, η επέκταση της λέξης (ή ένα μήνυμα προς αυτή την κατεύθυνση εάν δεν υπάρχει λέξη ) γράφεται στο τυπικό σφάλμα και το κέλυφος, αν δεν είναι διαδραστικό, εξέρχεται. Διαφορετικά, αντικαθίσταται η τιμή της παραμέτρου .

Χρησιμοποιήστε εναλλακτική τιμή . Εάν η παράμετρος είναι μηδενική ή μη ενεργοποιημένη, τίποτα δεν αντικαθίσταται, διαφορετικά η επέκταση της λέξης αντικαθίσταται.

Επέκταση στα ονόματα μεταβλητών των οποίων τα ονόματα αρχίζουν με πρόθεμα , χωρίζονται από τον πρώτο χαρακτήρα της ειδικής μεταβλητής IFS .

Το μήκος των χαρακτήρων της τιμής της παραμέτρου αντικαθίσταται. Εάν η παράμετρος είναι * ή @ , η τιμή που αντικαταστάθηκε είναι ο αριθμός των παραμέτρων θέσης. Εάν η παράμετρος είναι ένα όνομα συστοιχίας που έχει εγγραφεί με * ή @ , η τιμή που αντικαταστάθηκε είναι ο αριθμός των στοιχείων στον πίνακα.

Η λέξη επεκτείνεται για να παράγει ένα μοτίβο όπως και στην επέκταση της διαδρομής. Αν το πρότυπο ταιριάζει με την αρχή της τιμής της παραμέτρου , τότε το αποτέλεσμα της επέκτασης είναι η διευρυμένη τιμή της παραμέτρου με το βραχύτερο πρότυπο αντιστοίχισης (περίπτωση `` # '') ή το μακρύτερο πρότυπο αντιστοίχισης (`` ## ' "περίπτωση) διαγράφηκε. Αν η παράμετρος είναι @ ή * , η λειτουργία απομάκρυνσης μοτίβων εφαρμόζεται με τη σειρά σε κάθε παράμετρο θέσης και η επέκταση είναι η προκύπτουσα λίστα. Αν η παράμετρος είναι μια μεταβλητή συστοιχίας που είναι συνδρομητή με @ ή * , η λειτουργία απομάκρυνσης μοτίβων εφαρμόζεται με τη σειρά κάθε μέλους της συστοιχίας και η επέκταση είναι η προκύπτουσα λίστα.

Η λέξη επεκτείνεται για να παράγει ένα μοτίβο όπως και στην επέκταση της διαδρομής. Εάν το μοτίβο ταιριάζει με ένα τμήμα που ακολουθεί την αναπτυχθείσα τιμή της παράμετρος , τότε το αποτέλεσμα της επέκτασης είναι η διευρυμένη τιμή της παραμέτρου με το βραχύτερο μοτίβο αντιστοίχισης (η περίπτωση ` % ') ή το μακρύτερο πρότυπο αντιστοίχισης (το % % '' περίπτωση) διαγράφηκε. Αν η παράμετρος είναι @ ή * , η λειτουργία απομάκρυνσης μοτίβων εφαρμόζεται με τη σειρά σε κάθε παράμετρο θέσης και η επέκταση είναι η προκύπτουσα λίστα. Αν η παράμετρος είναι μια μεταβλητή συστοιχίας που είναι συνδρομητή με @ ή * , η λειτουργία απομάκρυνσης μοτίβων εφαρμόζεται με τη σειρά κάθε μέλους της συστοιχίας και η επέκταση είναι η προκύπτουσα λίστα.

Το μοτίβο επεκτείνεται για να παράγει ένα μοτίβο όπως και στην επέκταση της διαδρομής. Η παράμετρος επεκτείνεται και η μακρύτερη αντιστοίχιση του προτύπου με την αξία του αντικαθίσταται με συμβολοσειρά . Στην πρώτη φόρμα, αντικαθίσταται μόνο ο πρώτος αγώνας. Η δεύτερη μορφή προκαλεί την αντικατάσταση όλων των αντιστοιχιών του προτύπου με συμβολοσειρά . Εάν το σχέδιο αρχίζει με # , πρέπει να ταιριάζει στην αρχή της διευρυμένης τιμής της παραμέτρου . Εάν το μοτίβο αρχίζει με % , πρέπει να ταιριάζει στο τέλος της διευρυμένης τιμής της παραμέτρου . Εάν η συμβολοσειρά είναι μηδενική, οι αντιστοιχίσεις του μοτίβου διαγράφονται και το / επόμενο μοτίβο μπορεί να παραλειφθεί. Εάν η παράμετρος είναι @ ή * , η λειτουργία αντικατάστασης εφαρμόζεται με τη σειρά σε κάθε παράμετρο θέσης και η επέκταση είναι η προκύπτουσα λίστα. Εάν η παράμετρος είναι μια μεταβλητή πινάκων που είναι συνδρομητή με @ ή * , η λειτουργία υποκατάστασης εφαρμόζεται σε κάθε μέλος της συστοιχίας με τη σειρά της και η επέκταση είναι η προκύπτουσα λίστα.

Αντικατάσταση εντολών

Η αντικατάσταση εντολών επιτρέπει στην έξοδο μιας εντολής να αντικαταστήσει το όνομα της εντολής. Υπάρχουν δύο μορφές:

$ ( εντολή )

ή

` εντολή '

Ο Bash εκτελεί την επέκταση εκτελώντας εντολή και αντικαθιστώντας την αντικατάσταση εντολών με την τυπική έξοδο της εντολής, με τυχόν διαγραμμένες νέες γραμμές. Οι ενσωματωμένες νέες γραμμές δεν διαγράφονται, αλλά ενδέχεται να καταργηθούν κατά τη διάσπαση λέξεων. Η αντικατάσταση εντολής $ ( αρχείο γάτας ) μπορεί να αντικατασταθεί από το ισοδύναμο, αλλά γρηγορότερο $ (< αρχείο ).

Όταν χρησιμοποιείται η μορφή αντικατάστασης παλαιού τύπου, η αντίστροφη κάθετος διατηρεί την κυριολεκτική σημασία της, εκτός από την περίπτωση που ακολουθείται από $ , ` , ή \ . Η πρώτη αναδρομολόγηση που δεν προηγείται από μια αντίστροφη κάθετος τερματίζει την αντικατάσταση εντολών. Όταν χρησιμοποιείτε τη φόρμα $ ( εντολή ), όλοι οι χαρακτήρες μεταξύ των παρενθέσεων αποτελούν την εντολή. καμία δεν αντιμετωπίζεται ειδικά.

Οι αντικαταστάσεις εντολών μπορεί να είναι ένθετες. Για να φωλιάζεστε όταν χρησιμοποιείτε τη φόρμα που επισυνάπτεται, ξεφύγετε από τις εσωτερικές πίσω κουτάλες με πίσω όρια.

Αν η αντικατάσταση εμφανίζεται μέσα σε διπλά εισαγωγικά, δεν γίνεται διάσπαση λέξεων και επέκταση ονομάτων διαδρομής στα αποτελέσματα.

Αριθμητική επέκταση

Η αριθμητική επέκταση επιτρέπει την αξιολόγηση μιας αριθμητικής έκφρασης και την αντικατάσταση του αποτελέσματος. Η μορφή της αριθμητικής επέκτασης είναι:

$ (( έκφραση ))

Η έκφραση αντιμετωπίζεται σαν να ήταν μέσα σε διπλά εισαγωγικά, αλλά ένα διπλό απόσπασμα μέσα στις παρενθέσεις δεν αντιμετωπίζεται ειδικά. Όλα τα μάρκες της έκφρασης υποβάλλονται σε επέκταση παραμέτρων, επέκταση σειράς, υποκατάσταση εντολών και κατάργηση απόδοσης. Οι αριθμητικές υποκαταστάσεις μπορούν να είναι ένθετες.

Η αξιολόγηση διεξάγεται σύμφωνα με τους κανόνες που απαριθμούνται κατωτέρω με την ΑΡΙΘΜΗΤΙΚΗ ΑΞΙΟΛΟΓΗΣΗ . Εάν η έκφραση είναι άκυρη, το bash εκτυπώνει ένα μήνυμα που υποδεικνύει την αποτυχία και δεν υπάρχει υποκατάσταση.

Διαδικασία αντικατάστασης

Η υποκατάσταση της διαδικασίας υποστηρίζεται σε συστήματα που υποστηρίζουν ονομασμένους σωλήνες ( FIFOs ) ή στη μέθοδο / dev / fd για την ονομασία ανοιχτών αρχείων. Έχει τη μορφή <( λίστας ) ή > ( λίστα ) . Η λίστα διαδικασιών εκτελείται με την είσοδο ή την έξοδό της συνδεδεμένη με ένα FIFO ή κάποιο αρχείο στο / dev / fd . Το όνομα αυτού του αρχείου μεταβιβάζεται ως ένα επιχείρημα στην τρέχουσα εντολή ως αποτέλεσμα της επέκτασης. Εάν χρησιμοποιείται η φόρμα > ( λίστας ) , η εγγραφή στο αρχείο θα παρέχει εισαγωγή για τη λίστα . Εάν χρησιμοποιείται η φόρμα <( λίστας ) , πρέπει να διαβαστεί το αρχείο που διαβιβάστηκε ως ένα όρισμα για να ληφθεί η έξοδος της λίστας .

Όταν είναι διαθέσιμη, η υποκατάσταση της διαδικασίας εκτελείται ταυτόχρονα με παράμετρο και μεταβλητή επέκταση, αντικατάσταση εντολών και αριθμητική επέκταση.

Λεπτολογία

Το κέλυφος σαρώνει τα αποτελέσματα επέκτασης παραμέτρων, αντικατάσταση εντολών και αριθμητική επέκταση που δεν εμφανίστηκαν μέσα σε διπλά εισαγωγικά για διαχωρισμό λέξεων .

Το κέλυφος αντιμετωπίζει κάθε χαρακτήρα του IFS ως οριοθέτη και χωρίζει τα αποτελέσματα των άλλων επεκτάσεων σε λέξεις για αυτούς τους χαρακτήρες. Εάν το IFS είναι απενεργοποιημένο ή η τιμή του είναι ακριβώς , τότε η προεπιλογή και, στη συνέχεια, οποιαδήποτε ακολουθία χαρακτήρων IFS χρησιμεύει για την οριοθέτηση λέξεων. Αν το IFS έχει διαφορετική τιμή από την προεπιλογή, τότε οι ακολουθίες του χώρου και της καρτέλας χαρακτήρων κενής θέσης αγνοούνται στην αρχή και στο τέλος της λέξης, εφόσον ο χαρακτήρας κενής θέσης είναι στην τιμή του IFS (ένας χαρακτήρας IFS ). Οποιοσδήποτε χαρακτήρας στο IFS που δεν είναι κενός χώρος IFS , μαζί με τους παρακείμενους χαρακτήρες κενών χαρακτήρων IFS , οριοθετεί ένα πεδίο. Μια ακολουθία χαρακτήρων κενών χαρακτήρων IFS αντιμετωπίζεται επίσης ως οριοθέτης. Αν η τιμή του IFS είναι μηδενική, δεν υπάρχει διαχωρισμός λέξεων.

Δημιουργούνται ρητά μηδενικά επιχειρήματα ( "" ή "" ). Μη καταγεγραμμένα σιωπηρά μηδενικά επιχειρήματα, που προκύπτουν από την επέκταση παραμέτρων που δεν έχουν τιμές, αφαιρούνται. Εάν μια παράμετρος χωρίς τιμή δεν επεκταθεί μέσα σε διπλά εισαγωγικά, προκύπτει ένα άκυρο παράγωγο και διατηρείται.

Λάβετε υπόψη ότι αν δεν υπάρξει επέκταση, δεν γίνεται διάσπαση.

Επέκταση ονόματος διαδρομής

Μετά τη διάσπαση λέξεων, εκτός εάν έχει οριστεί η επιλογή -f , το bash σαρώνει κάθε λέξη για τους χαρακτήρες * ,? , και [ . Εάν εμφανιστεί ένας από αυτούς τους χαρακτήρες, τότε η λέξη θεωρείται ως μοτίβο και αντικαθίσταται με μια αλφαβητικά ταξινομημένη λίστα ονομάτων αρχείων που ταιριάζουν με το πρότυπο. Εάν δεν βρεθούν αντίστοιχα ονόματα αρχείων και η επιλογή shell nullglob είναι απενεργοποιημένη, η λέξη παραμένει αμετάβλητη. Εάν έχει οριστεί η επιλογή nullglob και δεν υπάρχουν αντιστοιχίσεις, η λέξη αφαιρείται. Αν η επιλογή nocaseglob είναι ενεργοποιημένη, η αντιστοίχιση πραγματοποιείται ανεξάρτητα από την περίπτωση αλφαβητικών χαρακτήρων. Όταν χρησιμοποιείται ένα πρότυπο για την επέκταση διαδρομής, ο χαρακτήρας ``. '' Στην αρχή ενός ονόματος ή αμέσως μετά από μια κάθετο πρέπει να αντιστοιχιστεί ρητά, εκτός εάν έχει οριστεί η επιλογή κελύφους dotglob . Όταν ταιριάζει με ένα όνομα διαδρομής, ο χαρακτήρας κάθετος πρέπει πάντα να αντιστοιχεί ρητά. Σε άλλες περιπτώσεις, ο χαρακτήρας ``. '' Δεν αντιμετωπίζεται ειδικά. Δείτε την περιγραφή του κατωτέρω κάτω από το SHELL BUILTIN COMMANDS για περιγραφή των επιλογών κέλυφος nocaseglob , nullglob και dotglob .

Η μεταβλητή κελύφους GLOBIGNORE μπορεί να χρησιμοποιηθεί για να περιορίσει το σύνολο των ονομάτων αρχείων που ταιριάζουν με ένα μοτίβο . Εάν έχει οριστεί GLOBIGNORE , κάθε αντίστοιχο όνομα αρχείου που ταιριάζει επίσης με ένα από τα μοτίβα στο GLOBIGNORE αφαιρείται από τη λίστα των αντιστοιχιών. Τα ονόματα αρχείων ``. '' Και `` .. '' αγνοούνται πάντα, ακόμα και όταν έχει οριστεί GLOBIGNORE . Ωστόσο, η ρύθμιση GLOBIGNORE έχει ως αποτέλεσμα την ενεργοποίηση της επιλογής κελύφους dotglob , έτσι ώστε όλα τα άλλα ονόματα αρχείων που αρχίζουν με ένα ``. '' Θα ταιριάζουν. Για να πάρετε την παλιά συμπεριφορά του αγνοώντας ονόματα αρχείων ξεκινώντας με ένα ``. '' , Κάντε ``. * '' Ένα από τα μοτίβα στο GLOBIGNORE . Η επιλογή dotglob είναι απενεργοποιημένη όταν το GLOBIGNORE είναι απενεργοποιημένο.

Αντιστοίχιση μοτίβων

Οποιοσδήποτε χαρακτήρας εμφανίζεται σε ένα μοτίβο, εκτός από τους χαρακτήρες ειδικού σχεδίου που περιγράφονται παρακάτω, ταιριάζει. Ο χαρακτήρας NUL ενδέχεται να μην εμφανίζεται σε ένα μοτίβο. Οι ειδικοί χαρακτήρες μοτίβου πρέπει να αναγράφονται εάν πρόκειται να ταιριάξουν κυριολεκτικά.

Οι ειδικοί χαρακτήρες μοτίβων έχουν τις ακόλουθες έννοιες:

*

Αντιστοιχεί σε οποιαδήποτε συμβολοσειρά, συμπεριλαμβανομένης της μηδενικής σειράς.

;

Αντιστοιχεί σε οποιοδήποτε χαρακτήρα.

[...]

Αντιστοιχεί σε οποιονδήποτε από τους κλειστούς χαρακτήρες. Ένα ζεύγος χαρακτήρων που χωρίζονται από μια παύλα υποδηλώνει μια έκφραση εύρους . οποιοσδήποτε χαρακτήρας που ταξινομείται μεταξύ αυτών των δύο χαρακτήρων, συμπεριλαμβάνοντας, χρησιμοποιώντας την ακολουθία σύγκλισης της τρέχουσας ρύθμισης και το σύνολο χαρακτήρων, ταιριάζει. Εάν ο πρώτος χαρακτήρας που ακολουθεί το [ είναι ! ή a ^ τότε οποιοσδήποτε χαρακτήρας δεν περικλείεται. Η σειρά ταξινόμησης των χαρακτήρων σε εκφράσεις εύρους καθορίζεται από την τρέχουσα τοπική ρύθμιση και την τιμή της μεταβλητής κελύφους LC_COLLATE , εάν έχει οριστεί. A - μπορεί να ταιριάζει με την ένταξη του ως πρώτου ή τελευταίου χαρακτήρα στο σετ. A ] μπορεί να ταιριάζει με την ένταξή του ως τον πρώτο χαρακτήρα του σετ.

Μέσα σε [ και ] , οι κλάσεις χαρακτήρων μπορούν να καθοριστούν χρησιμοποιώντας τη σύνταξη [: class :] , όπου η κλάση είναι μία από τις ακόλουθες κλάσεις που ορίζονται στο πρότυπο POSIX.2:

alnum alpha ascii κενό cntrl ψηφίο γράφημα χαμηλότερη εκτύπωση σημείο χώρος επάνω λέξη xdigit
Μια κλάση χαρακτήρων ταιριάζει με κάθε χαρακτήρα που ανήκει σε αυτή την τάξη. Η κλάση χαρακτήρων λέξεων ταιριάζει με τα γράμματα, τα ψηφία και τον χαρακτήρα _.

Εντός [ και ] , μια τάξη ισοτιμίας μπορεί να προσδιοριστεί χρησιμοποιώντας τη σύνταξη [= c =] , η οποία αντιστοιχεί σε όλους τους χαρακτήρες με το ίδιο βάρος κατάταξης (όπως ορίζεται από την τρέχουσα τοπική ρύθμιση) ως χαρακτήρας c .

Μέσα σε [ και ] , η σύνταξη [. σύμβολο ] αντιστοιχεί στο σύμβολο σύμβολο συμβολισμού .

Εάν είναι ενεργοποιημένη η επιλογή του κελύφους extglob με τη χρήση της ενσωματωμένης εντολής , αναγνωρίζονται πολλοί εκτεταμένοι χειριστές αντιστοίχισης προτύπων. Στην ακόλουθη περιγραφή, ένας πίνακας προτύπων είναι ένας κατάλογος με ένα ή περισσότερα μοτίβα που χωρίζονται από ένα | . Μπορούν να σχηματιστούν σύνθετα σχέδια χρησιμοποιώντας ένα ή περισσότερα από τα ακόλουθα υπο-σχέδια:

? ( μοτίβο-λίστα )

Αντιστοιχεί στο μηδέν ή σε μία εμφάνιση των δομών

* ( λίστα προτύπων )

Αντιστοιχεί σε μηδέν ή περισσότερες εμφανίσεις των δομών

+ ( λίστα προτύπων )

Αντιστοιχεί σε μία ή περισσότερες εμφανίσεις των δομών

@ ( μοτίβο-λίστα )

Αντιστοιχεί ακριβώς σε ένα από τα δοθέντα μοτίβα

! ( λίστα μοτίβων )

Αντιστοιχεί σε οτιδήποτε εκτός από ένα από τα δοθέντα πρότυπα

Απόσπασμα από παράθεση

Μετά τις προηγούμενες επεκτάσεις, καταργούνται όλες οι μη ταξινομημένες εμφανίσεις των χαρακτήρων \ , ' και " που δεν προέκυψαν από μία από τις παραπάνω επεκτάσεις.

ΑΝΑΠΑΡΑΓΩΓΗ

Πριν εκτελεστεί μια εντολή, η είσοδος και η έξοδος μπορεί να ανακατευθυνθούν χρησιμοποιώντας μια ειδική συμβολική ερμηνεία από το κέλυφος. Μπορείτε επίσης να χρησιμοποιήσετε την ανακατεύθυνση για να ανοίξετε και να κλείσετε αρχεία για το τρέχον περιβάλλον εκτέλεσης κελύφους. Οι ακόλουθοι χειριστές ανακατεύθυνσης μπορεί να προηγούνται ή να εμφανίζονται οπουδήποτε μέσα σε μια απλή εντολή ή να ακολουθούν μια εντολή . Οι ανακατευθύνσεις υποβάλλονται σε επεξεργασία με τη σειρά που εμφανίζονται, από αριστερά προς τα δεξιά.

Στις ακόλουθες περιγραφές, αν παραλειφθεί ο αριθμός του περιγραφέα αρχείου και ο πρώτος χαρακτήρας του χειριστή ανακατεύθυνσης είναι < , η ανακατεύθυνση αναφέρεται στην τυπική είσοδο (descriptor αρχείου 0). Εάν ο πρώτος χαρακτήρας του χειριστή ανακατεύθυνσης είναι > , η ανακατεύθυνση αναφέρεται στην τυπική έξοδο (περιγραφέας αρχείου 1).

Η λέξη που ακολουθεί τον χειριστή ανακατεύθυνσης στις παρακάτω περιγραφές, εκτός εάν σημειώνεται διαφορετικά, υποβάλλεται σε επέκταση στηρίγματος, επέκταση tilde, επέκταση παραμέτρων, αντικατάσταση εντολών, αριθμητική επέκταση, κατάργηση απόδοσης, επέκταση ονομάτων διαδρομής και διαίρεση λέξεων. Εάν επεκταθεί σε περισσότερες από μία λέξεις, το bash αναφέρει ένα σφάλμα.

Σημειώστε ότι η σειρά των ανακατευθύνσεων είναι σημαντική. Για παράδειγμα, η εντολή

ls > λίστα διεύθυνσης 2 > & 1

κατευθύνει τόσο την τυπική έξοδο όσο και το τυπικό σφάλμα στη λίστα διεύθυνσης αρχείου, ενώ η εντολή

ls 2 > & 1 > dirlist

κατευθύνει μόνο την τυπική έξοδο στη λίστα dirlist , επειδή το τυπικό σφάλμα αντιγράφηκε ως πρότυπη έξοδος πριν από την ανακατεύθυνση της τυπικής εξόδου στη λίστα dirlist .

Το Bash χειρίζεται πολλά ονόματα αρχείων ειδικά όταν χρησιμοποιούνται σε ανακατευθύνσεις, όπως περιγράφεται στον παρακάτω πίνακα:

/ dev / fd / fd

Αν το fd είναι έγκυρος ακέραιος, ο περιγραφέας αρχείου fd είναι διπλός.

/ dev / stdin

Ο περιγραφέας αρχείου 0 είναι διπλός.

/ dev / stdout

Ο περιγραφέας αρχείου 1 είναι διπλός.

/ dev / stderr

Ο περιγραφέας αρχείου 2 αντιγράφεται.

/ dev / tcp / host / θύρα

Εάν ο κεντρικός υπολογιστής είναι έγκυρο όνομα κεντρικού υπολογιστή ή διεύθυνση Internet και η θύρα είναι αριθμός ακέραιας θύρας ή όνομα υπηρεσίας, το bash προσπαθεί να ανοίξει μια σύνδεση TCP στην αντίστοιχη υποδοχή.

/ dev / udp / κεντρικός υπολογιστής / θύρα

Εάν ο κεντρικός υπολογιστής είναι έγκυρο όνομα κεντρικού υπολογιστή ή διεύθυνση Internet και η θύρα είναι αριθμός ακέραιας θύρας ή όνομα υπηρεσίας, το bash προσπαθεί να ανοίξει μια σύνδεση UDP στην αντίστοιχη υποδοχή.

Η αποτυχία ανοίγματος ή δημιουργίας ενός αρχείου προκαλεί την αποτυχία της ανακατεύθυνσης.

Ανακατεύθυνση εισόδου

Η ανακατεύθυνση της εισαγωγής προκαλεί το άνοιγμα του αρχείου του οποίου το όνομα προκύπτει από την επέκταση της λέξης για την ανάγνωση στον περιγραφέα αρχείων n ή την τυπική είσοδο (descriptor αρχείου 0) εάν το n δεν έχει καθοριστεί.

Η γενική μορφή για την ανακατεύθυνση εισόδου είναι:

[ n ] < λέξη

Αναπροσανατολισμός εξόδου

Η ανακατεύθυνση της εξόδου προκαλεί το άνοιγμα του αρχείου του οποίου το όνομα προκύπτει από την επέκταση της λέξης για το γράψιμο στον περιγραφέα αρχείων n ή την τυπική έξοδο (περιγραφέας αρχείου 1) εάν το n δεν έχει καθοριστεί. Εάν το αρχείο δεν υπάρχει, δημιουργείται. αν υπάρχει, είναι περικομμένο σε μηδενικό μέγεθος.

Η γενική μορφή για την ανακατεύθυνση της εξόδου είναι:

[ n ] > λέξη

Εάν ο χειριστής ανακατεύθυνσης είναι > και έχει ενεργοποιηθεί η επιλογή noclobber στο ενσωματωμένο σετ , η ανακατεύθυνση θα αποτύχει εάν το αρχείο του οποίου το όνομα προκύπτει από την επέκταση της λέξης υπάρχει και είναι κανονικό αρχείο. Αν ο χειριστής ανακατεύθυνσης είναι > | , ή ο χειριστής ανακατεύθυνσης είναι > και η επιλογή noclobber για την καθορισμένη εντολή δεν είναι ενεργοποιημένη, επιχειρείται η ανακατεύθυνση ακόμα και αν υπάρχει το αρχείο που ονομάζεται με λέξη .

Προσάρτηση ανακατευθυνόμενης εξόδου

Η ανακατεύθυνση της εξόδου με αυτόν τον τρόπο προκαλεί το άνοιγμα του αρχείου του οποίου το όνομα προκύπτει από την επέκταση της λέξης για την προσθήκη στον περιγραφέα αρχείων n ή την τυπική έξοδο (περιγραφέας αρχείου 1) εάν το n δεν έχει καθοριστεί. Εάν το αρχείο δεν υπάρχει, δημιουργείται.

Η γενική μορφή για την προσάρτηση εξόδου είναι:

[ n ] >> λέξη

Ανακατεύθυνση τυπικής εξόδου και τυπικού σφάλματος

Το Bash επιτρέπει τόσο την τυπική έξοδο (περιγραφέα αρχείου 1) όσο και την τυπική έξοδο σφάλματος (περιγραφέα αρχείου 2) να επαναπροσανατολιστεί στο αρχείο του οποίου το όνομα είναι η επέκταση λέξης με αυτήν την κατασκευή.

Υπάρχουν δύο μορφές για την ανακατεύθυνση της τυπικής εξόδου και του τυπικού σφάλματος:

&> λέξη

και

> & λέξη

Από τις δύο μορφές, η πρώτη προτιμάται. Αυτό είναι σημασιολογικά ισοδύναμο με

> λέξη 2 > & 1

Εδώ έγγραφα

Αυτός ο τύπος ανακατεύθυνσης καθοδηγεί το κέλυφος να διαβάζει την είσοδο από την τρέχουσα πηγή μέχρι να δει μια γραμμή που περιέχει μόνο λέξη (χωρίς κενά κενά). Όλες οι γραμμές που διαβάζονται μέχρι εκείνο το σημείο στη συνέχεια χρησιμοποιούνται ως τυπική είσοδος για μια εντολή.

Η μορφή των εδώ εγγράφων είναι:

<< [ - ] λέξη εδώ- αποσυμπιεστής εγγράφου

Δεν γίνεται επέκταση παραμέτρων, αντικατάσταση εντολών, αριθμητική επέκταση ή επέκταση ονομάτων διαδρομής με λέξη . Αν αναφέρονται κάποιοι χαρακτήρες σε λέξη , ο οριοθέτης είναι το αποτέλεσμα της αφαίρεσης από την λέξη με λέξεις και οι γραμμές του παρόντος εγγράφου δεν επεκτείνονται. Αν η λέξη είναι μη ταξινομημένη, όλες οι γραμμές του παρόντος εγγράφου υπόκεινται σε επέκταση παραμέτρων, υποκατάσταση εντολών και αριθμητική επέκταση. Στην τελευταία περίπτωση, η ακολουθία χαρακτήρων \ αγνοείται και \ πρέπει να χρησιμοποιηθεί για να παραθέσουμε τους χαρακτήρες \ , $ , και ` .

Αν ο χειριστής ανακατεύθυνσης είναι << - , τότε όλοι οι χαρακτήρες της καρτέλας απογυμνώνουν από τις γραμμές εισόδου και η γραμμή που περιέχει τον οριοθέτη . Αυτό επιτρέπει εδώ-τα έγγραφα μέσα σε κελύφη κελύφους να είναι χαραγμένα με φυσικό τρόπο.

Εδώ Χορδές

Μια παραλλαγή των εγγράφων εδώ, η μορφή είναι:

<<< λέξη

Η λέξη επεκτείνεται και παρέχεται στην εντολή με την τυπική είσοδο της.

Αντιγραφή των περιγραφικών αρχείων

Ο χειριστής ανακατεύθυνσης

[ n ] <& λέξη

χρησιμοποιείται για την αναπαραγωγή περιγραφικών αρχείων εισόδου. Εάν η λέξη επεκτείνεται σε ένα ή περισσότερα ψηφία, ο περιγραφέας του αρχείου που δηλώνεται από το n γίνεται ως αντίγραφο αυτού του περιγραφέα αρχείου. Εάν τα ψηφία στη λέξη δεν καθορίζουν έναν περιγραφέα αρχείου ανοιχτό για είσοδο, εμφανίζεται ένα σφάλμα ανακατεύθυνσης. Αν η λέξη εκτιμάται σε - , ο περιγραφέας αρχείου n είναι κλειστός. Εάν το n δεν έχει καθοριστεί, χρησιμοποιείται η τυπική είσοδος (descriptor αρχείου 0).

Ο χειριστής

[ n ] > & λέξη

χρησιμοποιείται παρόμοια με την αναπαραγωγή περιγραφικών αρχείων εξόδου. Εάν το n δεν έχει καθοριστεί, χρησιμοποιείται η τυπική έξοδος (περιγραφέας αρχείου 1). Εάν τα ψηφία στη λέξη δεν καθορίζουν έναν περιγραφέα αρχείου ανοιχτό για την έξοδο, εμφανίζεται ένα σφάλμα ανακατεύθυνσης. Ως ειδική περίπτωση, αν το n παραλείπεται και η λέξη δεν επεκτείνεται σε ένα ή περισσότερα ψηφία, η τυπική έξοδος και το τυπικό σφάλμα ανακατευθύνονται όπως περιγράφηκε προηγουμένως.

Μετακίνηση περιγραφικών αρχείων

Ο χειριστής ανακατεύθυνσης

[ n ] <& ψηφίο -

μετακινεί το ψηφίο του περιγραφέα αρχείου στον περιγραφέα αρχείου n ή την τυπική είσοδο (περιγραφέας αρχείου 0) εάν το n δεν έχει καθοριστεί. Το ψηφίο κλείνει αφού αντιγραφεί σε n .

Ομοίως, ο χειριστής ανακατεύθυνσης

[ n ] > & ψηφίο -

μετακινεί το ψηφίο του περιγραφέα αρχείου στον περιγραφέα αρχείου n ή την τυπική έξοδο (περιγραφέας αρχείου 1) εάν το n δεν έχει οριστεί.

Άνοιγμα περιγραφικών αρχείων για ανάγνωση και γραφή

Ο χειριστής ανακατεύθυνσης

[ n ] <> λέξη

προκαλεί το άνοιγμα του αρχείου του οποίου το όνομα είναι η επέκταση της λέξης τόσο για την ανάγνωση όσο και για την εγγραφή στον περιγραφέα αρχείων n ή στον περιγραφέα αρχείου 0 αν το n δεν έχει καθοριστεί. Εάν το αρχείο δεν υπάρχει, δημιουργείται.

ALIASES

Οι αλλοιώσεις επιτρέπουν σε μια συμβολοσειρά να αντικατασταθεί μια λέξη όταν χρησιμοποιείται ως πρώτη λέξη απλής εντολής. Το κέλυφος διατηρεί μια λίστα με ψευδώνυμα που μπορούν να οριστούν και να ακυρωθούν με τις εντολές ψευδωνύμου και unalias (βλ. SHELL BUILTIN COMMANDS παρακάτω). Η πρώτη λέξη κάθε εντολής, εάν είναι μη ταξινομημένη, ελέγχεται για να δει αν έχει ένα ψευδώνυμο. Αν ναι, η λέξη αυτή αντικαθίσταται από το κείμενο του ψευδωνύμου. Το ψευδώνυμο και το κείμενο αντικατάστασης μπορεί να περιέχουν οποιαδήποτε έγκυρη είσοδο κελύφους, συμπεριλαμβανομένων των μεταχαρακτηριστών που αναφέρονται παραπάνω, με την εξαίρεση ότι το ψευδώνυμο μπορεί να μην περιέχει = . Η πρώτη λέξη του κειμένου αντικατάστασης δοκιμάζεται για ψευδώνυμα, αλλά μια λέξη που είναι ίδια με ένα επεκτάσιμο ψευδώνυμο δεν επεκτείνεται για δεύτερη φορά. Αυτό σημαίνει ότι κάποιος μπορεί ψευδώνυμο ls να ls -F , για παράδειγμα, και bash δεν προσπαθεί να επεκτείνει αναδρομικά το κείμενο αντικατάστασης. Εάν ο τελευταίος χαρακτήρας της τιμής ψευδωνύμου είναι κενός , τότε η επόμενη λέξη εντολής που ακολουθεί το ψευδώνυμο ελέγχεται επίσης για επέκταση ψευδωνύμου.

Τα ψευδώνυμα δημιουργούνται και απαριθμούνται με την εντολή ψευδώνυμα και καταργούνται με την εντολή unalias .

Δεν υπάρχει μηχανισμός για τη χρήση επιχειρημάτων στο κείμενο αντικατάστασης. Εάν χρειάζονται επιχειρήματα, πρέπει να χρησιμοποιηθεί μια λειτουργία κελύφους (βλ. ΛΕΙΤΟΥΡΓΙΕΣ παρακάτω).

Τα ψευδώνυμα δεν επεκτείνονται όταν το κέλυφος δεν είναι αλληλεπιδραστικό, εκτός αν έχει οριστεί η επιλογή expand_aliases κέλυφος χρησιμοποιώντας την εντολή shopt (δείτε την περιγραφή του κτυπήματος κάτω από τις εντολές SHELL BUILTIN παρακάτω).

Οι κανόνες σχετικά με τον ορισμό και τη χρήση των ψευδώνυμα είναι κάπως συγκεχυμένοι. Ο Bash διαβάζει πάντοτε τουλάχιστον μία πλήρη σειρά εισόδου πριν εκτελέσει οποιαδήποτε από τις εντολές στη γραμμή αυτή. Τα ψευδώνυμα επεκτείνονται όταν διαβάζεται μια εντολή, όχι όταν εκτελείται. Επομένως, ένας ορισμός ψευδωνύμου που εμφανίζεται στην ίδια γραμμή με μια άλλη εντολή δεν έχει αποτέλεσμα μέχρι να διαβάσει η επόμενη γραμμή εισαγωγής. Οι εντολές που ακολουθούν τον ορισμό ψευδωνύμου σε αυτή τη γραμμή δεν επηρεάζονται από το νέο ψευδώνυμο. Αυτή η συμπεριφορά αποτελεί επίσης ένα ζήτημα όταν εκτελούνται λειτουργίες. Τα ψευδώνυμα επεκτείνονται όταν διαβάζεται ένας ορισμός λειτουργίας, όχι όταν εκτελείται η συνάρτηση, επειδή ένας ορισμός συνάρτησης είναι ο ίδιος μια σύνθετη εντολή. Κατά συνέπεια, τα ψευδώνυμα που ορίζονται σε μια συνάρτηση δεν είναι διαθέσιμα παρά μόνο μετά την εκτέλεση αυτής της λειτουργίας. Για να είμαστε ασφαλείς, πάντα να θέτουμε ορισμούς ψευδώνυμων σε μια ξεχωριστή γραμμή και να μην χρησιμοποιούμε ψευδώνυμα σε σύνθετες εντολές.

Για σχεδόν κάθε σκοπό, τα ψευδώνυμα αντικαθίστανται από λειτουργίες κελύφους.

ΛΕΙΤΟΥΡΓΙΕΣ

Μια λειτουργία κελύφους, που ορίζεται όπως περιγράφεται παραπάνω στο SHELL GRAMMAR , αποθηκεύει μια σειρά εντολών για μεταγενέστερη εκτέλεση. Όταν χρησιμοποιείται το όνομα μιας συνάρτησης κελύφους ως απλό όνομα εντολής, εκτελείται η λίστα των εντολών που σχετίζονται με αυτό το όνομα συνάρτησης. Οι λειτουργίες εκτελούνται στο πλαίσιο του τρέχοντος κελύφους. δεν δημιουργείται νέα διαδικασία για την ερμηνεία τους (σε αντίθεση με την εκτέλεση ενός σεναρίου κελύφους). Όταν εκτελείται μια συνάρτηση, τα επιχειρήματα στη συνάρτηση γίνονται οι παράμετροι θέσης κατά την εκτέλεση της. Η ειδική παράμετρος # ενημερώνεται για να αντικατοπτρίζει την αλλαγή. Η παράμετρος θέσης 0 παραμένει αμετάβλητη. Η μεταβλητή FUNCNAME έχει οριστεί στο όνομα της συνάρτησης κατά την εκτέλεση της λειτουργίας. Όλες οι άλλες πτυχές του περιβάλλοντος εκτέλεσης κελύφους είναι πανομοιότυπες μεταξύ μίας συνάρτησης και του καλούντος της, με την εξαίρεση ότι η παγίδα DEBUG (βλέπε την περιγραφή της παγίδας που είναι ενσωματωμένη στο SHELL BUILTIN COMMANDS παρακάτω) δεν κληρονόμησε, εκτός αν η συνάρτηση έχει δώσει το χαρακτηριστικό ίχνους ανατρέξτε στην περιγραφή της δήλωσης ενσωματωμένης παρακάτω).

Οι μεταβλητές τοπικές στη συνάρτηση μπορούν να δηλωθούν με την τοπική ενσωματωμένη εντολή. Συνήθως, οι μεταβλητές και οι τιμές τους μοιράζονται μεταξύ της λειτουργίας και του καλούντος.

Εάν η εσωτερική εντολή επιστροφής εκτελείται σε μια συνάρτηση, η λειτουργία ολοκληρώνεται και η εκτέλεση συνεχίζεται με την επόμενη εντολή μετά την κλήση λειτουργίας. Όταν ολοκληρωθεί μια λειτουργία, οι τιμές των παραμέτρων θέσης και της ειδικής παραμέτρου # αποκαθίστανται στις τιμές που είχαν πριν από την εκτέλεση της λειτουργίας.

Τα ονόματα των λειτουργιών και οι ορισμοί μπορούν να παρατίθενται με την επιλογή -f για να δηλώσουν ή να δακτυλογραφηθούν ενσωματωμένες εντολές. Η επιλογή -F για να δηλώσετε ή να δακτυλογραφήσει θα εμφανίσει μόνο τα ονόματα των λειτουργιών. Οι λειτουργίες μπορούν να εξάγονται έτσι ώστε τα υποσύνολα να τα ορίσουν αυτόματα με την επιλογή -f στην ενσωματωμένη εξαγωγή .

Οι λειτουργίες μπορεί να είναι αναδρομικές. Δεν επιβάλλεται όριο στον αριθμό των επαναληπτικών κλήσεων.

ΑΡΙΘΜΙΤΙΚΗ ΑΞΙΟΛΟΓΗΣΗ

Το κέλυφος επιτρέπει να αξιολογούνται οι αριθμητικές εκφράσεις υπό ορισμένες συνθήκες (βλ. Την εντολή αφηρημένης εντολής και την αριθμητική επέκταση ). Η αξιολόγηση γίνεται σε ακεραίους σταθερού πλάτους χωρίς έλεγχο για υπερχείλιση, αν και η διαίρεση με 0 παγιδεύεται και επισημαίνεται ως σφάλμα. Οι χειριστές και η προτεραιότητά τους και η συσχετισμό τους είναι οι ίδιες με αυτές της γλώσσας C. Η ακόλουθη λίστα φορέων ομαδοποιείται σε επίπεδα παρόχων ίσης προτεραιότητας. Τα επίπεδα εμφανίζονται κατά φθίνουσα σειρά προτεραιότητας.

id ++ id -

μεταβλητή μετά την προσαύξηση και μετά τη μείωση

++ id - id

μεταβλητή προ-αύξηση και προ-μείωση

- +

unary μείον και συν

! ~

λογική και bitwise άρνηση

**

εκθέσεως

* /%

πολλαπλασιασμός, διαίρεση, υπόλοιπο

+ -

προσθήκη, αφαίρεση

<< >>

αριστερή και δεξιά μετατόπιση bit

<=> = <>

σύγκριση

==! =

ισότητα και ανισότητα

& &

bitwise AND

^

bitwise αποκλειστική OR

|

bitwise OR

&&

λογικό AND

||

λογική Ή

expr ; expr : expr

υπό όρους αξιολόγηση

= * = / =% = + = - = << = >> = & = ^ = | =

ΑΝΑΘΕΣΗ ΕΡΓΑΣΙΑΣ

expr1 , expr2

κόμμα

Οι μεταβλητές Shell επιτρέπονται ως τελεστές. η επέκταση των παραμέτρων πραγματοποιείται πριν από την αξιολόγηση της έκφρασης. Μέσα σε μια έκφραση, μεταβλητές κελύφους μπορεί επίσης να αναφέρονται με όνομα χωρίς τη χρήση της σύνταξης επέκτασης παραμέτρων. Η τιμή μιας μεταβλητής αξιολογείται ως αριθμητική έκφραση όταν γίνεται αναφορά. Μια μεταβλητή κελύφους δεν χρειάζεται να έχει το χαρακτηριστικό ακέραιος ενεργοποιημένο για να χρησιμοποιηθεί σε μια έκφραση.

Οι σταθερές με κορυφαίο 0 ερμηνεύονται ως οκταδικοί αριθμοί. Ένα κορυφαίο 0x ή 0X δηλώνει δεκαεξαδικό. Διαφορετικά, οι αριθμοί παίρνουν τη μορφή [ base # ] n, όπου η βάση είναι ένας δεκαδικός αριθμός μεταξύ 2 και 64 που αντιπροσωπεύει την αριθμητική βάση και n είναι ένας αριθμός σε αυτή τη βάση. Εάν η βάση # παραλείπεται, τότε χρησιμοποιείται η βάση 10. Τα ψηφία μεγαλύτερα από 9 αντιπροσωπεύονται από τα πεζά γράμματα, τα κεφαλαία γράμματα, @ και _, με αυτή τη σειρά. Εάν η βάση είναι μικρότερη ή ίση με 36, μικρά και μεγάλα γράμματα μπορούν να χρησιμοποιηθούν εναλλακτικά για να αντιπροσωπεύουν αριθμούς μεταξύ 10 και 35.

Οι φορείς εκμετάλλευσης αξιολογούνται κατά σειρά προτεραιότητας. Οι υπο-εκφράσεις στις παρενθέσεις αξιολογούνται πρώτα και μπορούν να παρακάμπτουν τους κανόνες προτεραιότητας παραπάνω.

ΟΡΙΣΤΙΚΕΣ ΕΚΦΡΑΣΕΙΣ

Οι υπό όρους εκφράσεις χρησιμοποιούνται από την εντολή [[ σύνθετη εντολή και τη δοκιμή και τις [ ενσωματωμένες εντολές για τη δοκιμή των χαρακτηριστικών αρχείου και την εκτέλεση συμβολοσειρών και αριθμητικών συγκρίσεων. Οι εκφράσεις σχηματίζονται από τα ακόλουθα ομαδικά ή δυαδικά αρχέτυπα. Εάν οποιοδήποτε όρισμα αρχείου σε ένα από τα πρωτεύοντα είναι από τη μορφή / dev / fd / n , τότε ο περιγραφέας αρχείου n ελέγχεται. Εάν το όρισμα αρχείου σε ένα από τα πρωτεύοντα είναι ένα από τα / dev / stdin , / dev / stdout ή / dev / stderr , ο περιγραφέας αρχείου 0, 1 ή 2 αντίστοιχα.

-ένα αρχείο

Αληθές εάν υπάρχει αρχείο .

-b αρχείο

Αληθές εάν υπάρχει αρχείο και είναι ένα ειδικό αρχείο μπλοκ.

-c αρχείο

Αληθές αν υπάρχει αρχείο και είναι ένα ειδικό αρχείο χαρακτήρων.

-d αρχείο

Αληθές αν υπάρχει αρχείο και είναι κατάλογος.

αρχείο

Αληθές εάν υπάρχει αρχείο .

-f αρχείο

Αληθές αν υπάρχει αρχείο και είναι κανονικό αρχείο.

-g αρχείο

Αληθές αν υπάρχει αρχείο και είναι set-id-id.

-h αρχείο

Αληθές αν υπάρχει αρχείο και είναι ένας συμβολικός σύνδεσμος.

-k αρχείο

Αληθές αν υπάρχει αρχείο και το bit του `` κολλώδες '' έχει οριστεί.

-p αρχείο

Αληθές αν υπάρχει αρχείο και είναι ένας ονομασμένος σωλήνας (FIFO).

-r αρχείο

Αληθές εάν υπάρχει αρχείο και είναι αναγνώσιμο.

-s αρχείο

Αληθές εάν υπάρχει αρχείο και έχει μέγεθος μεγαλύτερο από το μηδέν.

-t fd

Αληθές αν ο περιγραφέας αρχείου fd είναι ανοιχτός και αναφέρεται σε ένα τερματικό.

-u αρχείο

Είναι αληθές εάν υπάρχει αρχείο και έχει οριστεί το bit set-user id.

-w αρχείο

Αληθές εάν υπάρχει αρχείο και είναι εγγράψιμο.

-x αρχείο

Αληθές αν υπάρχει αρχείο και είναι εκτελέσιμο.

-Ένα αρχείο

Αληθές εάν υπάρχει αρχείο και ανήκει στο πραγματικό αναγνωριστικό χρήστη.

-G αρχείο

Αληθές εάν υπάρχει αρχείο και ανήκει στην πραγματική id ομάδας.

-L αρχείο

Αληθές αν υπάρχει αρχείο και είναι ένας συμβολικός σύνδεσμος.

-S αρχείο

Αληθές αν υπάρχει αρχείο και είναι υποδοχή.

Αληθές εάν υπάρχει αρχείο και έχει τροποποιηθεί από την τελευταία ανάγνωσή του.

αρχείο1 - nt αρχείο2

Αληθές αν το αρχείο1 είναι νεότερο (σύμφωνα με την ημερομηνία τροποποίησης) από το αρχείο2 ή αν υπάρχει αρχείο1 και το αρχείο2 δεν είναι.

αρχείο1 - αρχείο2

Αληθές αν το αρχείο1 είναι παλαιότερο από το αρχείο2 ή αν υπάρχει αρχείο2 και το αρχείο1 δεν είναι.

file1 -ef αρχείο2

Αληθές εάν το αρχείο1 και το αρχείο2 αναφέρονται στην ίδια συσκευή και τους αριθμούς εισόδου.

-o optname

Αληθινή, αν είναι ενεργοποιημένη η optname επιλογή κελύφους. Δείτε τη λίστα με τις επιλογές κάτω από την περιγραφή της επιλογής -o στο σύνολο που είναι ενσωματωμένο παρακάτω.

-z συμβολοσειρά

Αληθές αν το μήκος της συμβολοσειράς είναι μηδέν.

συμβολοσειρά

σειρά

Αληθές αν το μήκος της συμβολοσειράς είναι μη μηδέν.

string1 == string2

Αληθινό αν οι συμβολοσειρές είναι ίσες. = μπορεί να χρησιμοποιηθεί στη θέση == για αυστηρή συμμόρφωση με το POSIX.

string1 ! = string2

Αληθινό αν οι χορδές δεν είναι ίσες.

string1 < string2

Αληθές αν το string1 ταξινομείται πριν από το string2 λεξικογραφικά στην τρέχουσα τοπική ρύθμιση.

string1 > string2

Αληθές αν η συμβολοσειρά 1 ταξινομείται λέξη-κλειδί2 γραφογραφικά στην τρέχουσα γλώσσα.

arg1 OP arg2

Το OP είναι ένα από τα -eq , -ne , -lt , -le , -gt ή -ge . Αυτοί οι αριθμητικοί δυαδικοί χειριστές επιστρέφουν αληθείς αν το arg1 είναι ίσο, όχι ίσο με, μικρότερο από, μικρότερο ή ίσο με, μεγαλύτερο ή μεγαλύτερο από ή ίσο με arg2 , αντίστοιχα. Arg1 και arg2 μπορεί να είναι θετικοί ή αρνητικοί ακέραιοι.

ΕΝΑΛΛΑΚΤΙΚΗ ΕΞΕΛΙΞΗ ΕΝΤΟΛΩΝ

Όταν εκτελείται μια απλή εντολή, το κέλυφος εκτελεί τις ακόλουθες επεκτάσεις, αναθέσεις και ανακατευθύνσεις, από αριστερά προς τα δεξιά.

1. Οι λέξεις που ο αναλυτής έχει επισημάνει ως μεταβλητές αναθέσεις (εκείνες που προηγούνται του ονόματος της εντολής) και οι ανακατευθύνσεις αποθηκεύονται για μεταγενέστερη επεξεργασία.

2. Οι λέξεις που δεν είναι μεταβλητές αναθέσεις ή ανακατευθύνσεις επεκτείνονται. Αν παραμείνει οποιαδήποτε λέξη μετά την επέκταση, η πρώτη λέξη θεωρείται το όνομα της εντολής και οι υπόλοιπες λέξεις είναι τα επιχειρήματα.

3. Οι κατευθυντήριες γραμμές πραγματοποιούνται όπως περιγράφεται παραπάνω στο REDIRECTION .

4.Το κείμενο μετά από το = σε κάθε μεταβλητή εκχώρηση υποβάλλεται σε επέκταση tilde, επέκταση παραμέτρων, αντικατάσταση εντολών, αριθμητική επέκταση και απόσπαση από την παραπομπή προτού ανατεθεί στη μεταβλητή.

Αν δεν προκύψει κανένα όνομα εντολής, οι μεταβλητές αντιστοιχίσεις επηρεάζουν το τρέχον περιβάλλον κελύφους. Διαφορετικά, οι μεταβλητές προστίθενται στο περιβάλλον της εντολής που εκτελέστηκε και δεν επηρεάζουν το τρέχον περιβάλλον κελύφους. Αν κάποια από τις αναθέσεις προσπαθήσει να ορίσει μια τιμή σε μια μεταβλητή readonly, εμφανίζεται ένα σφάλμα και η εντολή εξέρχεται με μη μηδενική κατάσταση.

Αν δεν προκύψει κανένα όνομα εντολής, εκτελούνται ανακατευθύνσεις, αλλά δεν επηρεάζουν το τρέχον περιβάλλον κελύφους. Ένα σφάλμα ανακατεύθυνσης προκαλεί την έξοδο της εντολής με μη μηδενική κατάσταση.

Εάν υπάρχει ένα όνομα εντολής αριστερά μετά την επέκταση, η εκτέλεση συνεχίζεται όπως περιγράφεται παρακάτω. Διαφορετικά, η εντολή εξέρχεται. Εάν μία από τις επεκτάσεις περιέχει μια αντικατάσταση εντολής, η κατάσταση εξόδου της εντολής είναι η κατάσταση εξόδου της τελευταίας αντικατάστασης εντολής που εκτελείται. Αν δεν υπήρχαν υποκαταστάσεις εντολών, η εντολή εξέρχεται με μηδενική κατάσταση.

ΥΠΟΔΕΙΞΗ ΕΝΤΟΛΩΝ

Αφού μια εντολή χωριστεί σε λέξεις, αν προκύψει μια απλή εντολή και μια προαιρετική λίστα επιχειρημάτων, λαμβάνονται οι ακόλουθες ενέργειες.

Εάν το όνομα της εντολής δεν περιέχει πτέρυγες, το κέλυφος επιχειρεί να το εντοπίσει. Εάν υπάρχει μια συνάρτηση κελύφους με αυτό το όνομα, η λειτουργία αυτή ενεργοποιείται όπως περιγράφεται παραπάνω στο FUNCTIONS . Εάν το όνομα δεν ταιριάζει με μια συνάρτηση, το κέλυφος το ψάχνει στη λίστα των ενσωματωμένων κελυφών. Αν βρεθεί μια αντιστοίχιση, αυτή η ενσωματωμένη κλήση.

Εάν το όνομα δεν είναι συνάρτηση κελύφους ούτε ενσωματωμένη και δεν περιέχει πτέρυγες, το bash αναζητά κάθε στοιχείο του PATH για έναν κατάλογο που περιέχει ένα εκτελέσιμο αρχείο με αυτό το όνομα. Ο Bash χρησιμοποιεί έναν πίνακα κατακερματισμού για να θυμάται τα πλήρη ονόματα αρχείων εκτελέσιμων αρχείων (δείτε το hash κάτω από τις SHELL BUILTIN COMMANDS παρακάτω). Μια πλήρης αναζήτηση των καταλόγων στο PATH εκτελείται μόνο αν η εντολή δεν βρίσκεται στον πίνακα κατακερματισμού. Εάν η αναζήτηση δεν είναι επιτυχής, το κέλυφος εκτυπώνει ένα μήνυμα σφάλματος και επιστρέφει κατάσταση εξόδου 127.

Εάν η αναζήτηση είναι επιτυχής ή εάν το όνομα της εντολής περιέχει ένα ή περισσότερα πτερύγια, το κέλυφος εκτελεί το όνομα του προγράμματος σε ξεχωριστό περιβάλλον εκτέλεσης. Το όρισμα 0 έχει οριστεί στο δεδομένο όνομα και τα υπόλοιπα επιχειρήματα στην εντολή έχουν οριστεί ως προς τα παρατιθέμενα, αν υπάρχουν.

Εάν αυτή η εκτέλεση αποτύχει επειδή το αρχείο δεν είναι σε εκτελέσιμη μορφή και το αρχείο δεν είναι κατάλογος, θεωρείται ότι είναι ένα σενάριο κελύφους , ένα αρχείο που περιέχει εντολές κελύφους. Ένα subshell γεννήθηκε για να το εκτελέσει. Αυτό το υποσύνολο αρχικοποιείται ξανά, έτσι ώστε το αποτέλεσμα να είναι σαν να είχε χρησιμοποιηθεί ένα νέο κέλυφος για να χειριστεί το σενάριο, με την εξαίρεση ότι το παιδί διατηρεί τις θέσεις των εντολών που θυμήθηκαν ο γονέας (δείτε το hash παρακάτω στο SHELL BUILTIN COMMANDS ).

Αν το πρόγραμμα είναι αρχείο που αρχίζει με #! , το υπόλοιπο της πρώτης γραμμής προσδιορίζει έναν διερμηνέα για το πρόγραμμα. Το κέλυφος εκτελεί τον καθορισμένο διερμηνέα σε λειτουργικά συστήματα που δεν χειρίζονται αυτό το εκτελέσιμο σχήμα. Τα επιχειρήματα προς τον διερμηνέα συνίστανται σε ένα και μόνο προαιρετικό όρισμα ακολουθώντας το όνομα του διερμηνέα στην πρώτη γραμμή του προγράμματος, ακολουθούμενο από το όνομα του προγράμματος, ακολουθούμενο από τα επιχειρήματα των εντολών, αν υπάρχουν.

ΠΕΡΙΒΑΛΛΟΝ ΕΚΤΕΛΕΣΗΣ ΕΝΕΡΓΕΙΑΣ

Το κέλυφος έχει ένα περιβάλλον εκτέλεσης , το οποίο αποτελείται από τα εξής:

* ανοιχτά αρχεία κληρονομούνται από το κέλυφος κατά την κλήση, όπως τροποποιήθηκε από τις ανακατευθύνσεις που παρέχονται στο exec builtin

* τον τρέχοντα κατάλογο εργασίας όπως ορίζεται από cd , pushd ή popd ή κληρονομούνται από το κέλυφος κατά την κλήση

* η μάσκα τρόπου δημιουργίας αρχείου όπως έχει οριστεί από umask ή κληρονόμησε από τον γονέα του κελύφους

* τρέχουσες παγίδες που έχουν παγιδευτεί

* παραμέτρους κελύφους που έχουν οριστεί με μεταβλητή αντιστοίχιση ή με set ή κληρονομούνται από το γονικό κέλυφος στο περιβάλλον

* λειτουργίες κελύφους που ορίζονται κατά την εκτέλεση ή κληρονομούνται από το γονικό του κελύφους στο περιβάλλον

* επιλογές ενεργοποιημένες κατά την κλήση (είτε από προεπιλογή είτε με επιχειρήματα γραμμής εντολών) ή με ρύθμιση

* Επιλογές που ενεργοποιήθηκαν από το shopt

* ψευδώνυμα κελυφών που ορίζονται με ψευδώνυμο

* διάφορα αναγνωριστικά διαδικασιών, συμπεριλαμβανομένων αυτών των εργασιών φόντου, της αξίας του $$ και της αξίας του $ PPID

Όταν πρόκειται να εκτελεστεί μια απλή εντολή διαφορετική από τη λειτουργία ενσωματωμένου ή κελύφους, αυτή καλείται σε ξεχωριστό περιβάλλον εκτέλεσης που αποτελείται από τα ακόλουθα. Εκτός αν σημειώνεται διαφορετικά, οι τιμές κληρονομούνται από το κέλυφος.

* τα ανοικτά αρχεία του κελύφους, καθώς και τυχόν τροποποιήσεις και προσθήκες που καθορίζονται από τις ανακατευθύνσεις στην εντολή

* τον τρέχοντα κατάλογο εργασίας

* τη μάσκα λειτουργίας δημιουργίας αρχείου

* Οι μεταβλητές κελυφών που έχουν επισημανθεί για εξαγωγή, μαζί με τις μεταβλητές που εξήχθησαν για την εντολή, πέρασαν στο περιβάλλον

* οι παγίδες που συλλαμβάνονται από το κέλυφος επαναφέρονται στις τιμές που κληρονομούνται από τον γονέα του κελύφους και οι παγίδες που αγνοούνται από το κέλυφος αγνοούνται

Μια εντολή που επικαλείται σε αυτό το ξεχωριστό περιβάλλον δεν μπορεί να επηρεάσει το περιβάλλον εκτέλεσης του κελύφους.

Η αντικατάσταση εντολών και οι ασύγχρονες εντολές επικαλούνται σε ένα περιβάλλον subshell που είναι ένα αντίγραφο του περιβάλλοντος κελύφους, εκτός από το ότι οι παγίδες που αλιεύονται από το κέλυφος επαναφέρονται στις τιμές που κληρονόμησε το κέλυφος από το γονικό του κατά την κλήση. Ενσωματωμένες εντολές που καλούνται ως μέρος ενός αγωγού εκτελούνται επίσης σε ένα περιβάλλον υποσκληρών. Οι αλλαγές που έγιναν στο περιβάλλον του υποσέλιδου δεν μπορούν να επηρεάσουν το περιβάλλον εκτέλεσης του κελύφους.

Εάν μια εντολή ακολουθείται από ένα & & control δουλειά δεν είναι ενεργή, η προεπιλεγμένη τυπική είσοδος για την εντολή είναι το άδειο αρχείο / dev / null . Διαφορετικά, η επίκληση εντολή κληρονομεί τους περιγραφείς αρχείων του κελύφους κλήσης όπως τροποποιήθηκε από ανακατευθύνσεις.