Οδηγός μεταβλητών Linux. Μεταβλητές περιβάλλοντος Linux, μεταβλητές περιβάλλοντος μεταβλητών κελύφους Ubuntu

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

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

Το πακέτο Coreutils περιέχει τα προγράμματα env και printenv. Για να απαριθμήσετε όλες τις μεταβλητές περιβάλλοντος που είναι επί του παρόντος σχετικές, απλώς πληκτρολογήστε:

$ printenv

Υπάρχουν δύο τύποι μεταβλητών περιβάλλοντος στο κέλυφος bash:

  • Καθολικές μεταβλητές
  • Τοπικές μεταβλητές

Παγκόσμιες μεταβλητές περιβάλλοντος

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

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

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

Τοπικές μεταβλητές περιβάλλοντος

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

Ρύθμιση μεταβλητών περιβάλλοντος

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

Ρύθμιση τοπικών μεταβλητών περιβάλλοντος

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

$ andreyex_test = δοκιμή $ echo $ andreyex_test δοκιμή $

Συγχαρητήρια, μόλις δημιουργήσατε την πρώτη σας μεταβλητή. Απλώς να θυμάστε ότι ανά πάσα στιγμή πρέπει να αναφέρετε την τιμή της μεταβλητής περιβάλλοντος andreyex_test, απλώς να την αναφέρετε με το όνομα $ andreyex_test.

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

$ andreyex_test = δοκιμή μιας μεγάλης συμβολοσειράς -bash: a: η εντολή δεν βρέθηκε $ andreyex_test = "δοκιμάζοντας μια μεγάλη συμβολοσειρά" $ echo $ andreyex_test δοκιμή μιας μεγάλης συμβολοσειράς

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

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

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

ΣΗΜΕΙΩΣΗ. Είναι πολύ σημαντικό να μην υπάρχουν κενά μεταξύ του ονόματος της μεταβλητής περιβάλλοντος, του πρόσημου ίσου και της τιμής. Εάν τοποθετήσετε κενά στην ανάθεση, το κέλυφος bash ερμηνεύει την τιμή ως ξεχωριστή εντολή:

$ andreyex_test2 = test -bash: andreyex_test2: η εντολή δεν βρέθηκε $

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

$ bash $ echo $ andreyex_test $ έξοδος έξοδος $ echo $ andreyex_test δοκιμή μιας μεγάλης συμβολοσειράς $

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

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

$ bash $ andreyex_test = δοκιμή $ echo $ andreyex_test δοκιμή $ έξοδος έξοδος $ echo $ andreyex_test $

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

Ρύθμιση παγκόσμιων μεταβλητών περιβάλλοντος

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

Αυτό γίνεται χρησιμοποιώντας την εντολή εξαγωγής:

$ echo $ andreyex_test δοκιμή μιας μεγάλης συμβολοσειράς $ εξαγωγή andreyex_test $ bash $ echo $ andreyex_test δοκιμή μιας μεγάλης συμβολοσειράς $

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

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

Αφαίρεση μεταβλητών περιβάλλοντος

Προφανώς, εάν μπορείτε να δημιουργήσετε μια νέα μεταβλητή περιβάλλοντος, θα ήταν λογικό να μπορείτε να διαγράψετε και την υπάρχουσα μεταβλητή περιβάλλοντος. Αυτό μπορεί να γίνει χρησιμοποιώντας την εντολή unset:

$ echo $ andreyex_test δοκιμή $ unset andreyex_test $ echo $ andreyex_test $

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

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

$ andreyex_test = δοκιμή $ εξαγωγή andreyex_test $ bash $ echo $ andreyex_test δοκιμή $ unset andreyex_test $ echo $ andreyex_test $ έξοδος έξοδος $ echo $ δοκιμή andreyex_test $

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

Προεπιλεγμένες μεταβλητές περιβάλλοντος του Shell

Υπάρχουν συγκεκριμένες μεταβλητές περιβάλλοντος που χρησιμοποιεί το κέλυφος bash για να προσδιορίσει το περιβάλλον του συστήματος. Μπορείτε πάντα να μετράτε αυτές τις μεταβλητές για χρήση στο σύστημα Linux σας. Επειδή το bash είναι παράγωγο του αρχικού κελύφους Unix Bourne, περιλαμβάνει επίσης τις μεταβλητές περιβάλλοντος που ορίστηκαν αρχικά σε αυτό το κέλυφος.

Τα ακόλουθα παραδείγματα δείχνουν ότι οι μεταβλητές περιβάλλοντος που παρέχονται από το κέλυφος bash είναι συμβατές με το αρχικό κέλυφος Unix Bourne.

Μέχρι στιγμής, η πιο πολύτιμη μεταβλητή περιβάλλοντος σε αυτήν τη λίστα είναι η μεταβλητή περιβάλλοντος PATH.

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

$ echo $ PATH / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / παιχνίδια: / usr / τοπικά / παιχνίδια: / snap / bin $

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

Εκτός από τις τυπικές μεταβλητές περιβάλλοντος Bourne, το κέλυφος bash παρέχει επίσης αρκετές μεταβλητές, όπως φαίνεται:

Μεταβλητές Bash Shell Bourne:

CDPATH: Μια λίστα καταλόγων διαχωρισμένη με άνω και κάτω τελεία που χρησιμοποιείται ως διαδρομή αναζήτησης για την εντολή cd.
HOME: αρχικός κατάλογος του τρέχοντος χρήστη.
IFS: μια λίστα χαρακτήρων που διαχωρίζουν τα πεδία που χρησιμοποιούνται από το περιτύλιγμα για τον διαχωρισμό συμβολοσειρών κειμένου.
MAIL: Το όνομα αρχείου για το γραμματοκιβώτιο του τρέχοντος χρήστη. Το κέλυφος bash ελέγχει αυτό το αρχείο για νέα αλληλογραφία.
MAILPATH: Μια λίστα με πολλά ονόματα αρχείων για το γραμματοκιβώτιο του τρέχοντος χρήστη. Το κέλυφος bash ελέγχει κάθε αρχείο σε αυτήν τη λίστα για νέα αλληλογραφία.
OPTARG: Η τιμή του τελευταίου ορίσματος παραμέτρου που επεξεργάζεται η εντολή getopts.
OPTIND: Τιμή ευρετηρίου του τελευταίου ορίσματος παραμέτρου που επεξεργάζεται η εντολή getopts.
PATH: Μια λίστα καταλόγων διαχωρισμένη με άνω και κάτω τελεία όπου το κέλυφος αναζητά εντολές.
PS1: η γραμμή εντολών της κύριας γραμμής εντολών.
PS2: Συμβολοσειρά γραμμής γραμμής εντολών δευτερεύουσας γραμμής εντολών.

Μεταβλητές περιβάλλοντος Shell bash:

BASH: πλήρως πιστοποιημένο όνομα διαδρομής για την εκτέλεση της τρέχουσας παρουσίας του κελύφους bash.
BASH_ENV: Κατά την εγκατάσταση, κάθε σενάριο bash προσπαθεί να εκτελέσει το αρχείο εκκίνησης που ορίζεται από αυτήν τη μεταβλητή πριν από την εκκίνηση.
BASH_VERSION: Ο αριθμός έκδοσης της τρέχουσας παρουσίας κελύφους bash.
BASH_VERSINFO: Ένας πίνακας μεταβλητών που περιέχει τους διακριτούς αριθμούς κύριας και δευτερεύουσας έκδοσης της τρέχουσας παρουσίας του κελύφους bash.
ΣΤΗΛΕΣ: Περιέχει το πλάτος ακροδεκτών που χρησιμοποιείται για την τρέχουσα παρουσία κελύφους bash.
COMP_CWORD: Το ευρετήριο στη μεταβλητή COMP_WORDS που περιέχει την τρέχουσα θέση του δρομέα.
COMP_LINE: η τρέχουσα γραμμή εντολών.
COMP_POINT: ευρετήριο της τρέχουσας θέσης του δρομέα σε σχέση με την αρχή της τρέχουσας εντολής.
COMP_WORDS: Ένας πίνακας μεταβλητών που περιέχει τις μεμονωμένες λέξεις στην τρέχουσα γραμμή εντολών.
COMPREPLY: Ένας πίνακας μεταβλητών που περιέχει τους πιθανούς κωδικούς εξόδου που δημιουργούνται από τη συνάρτηση φλοιού.
DIRSTACK: ένας πίνακας μεταβλητών που περιέχει τα τρέχοντα περιεχόμενα της στοίβας καταλόγου.
EUID: Το πραγματικό αναγνωριστικό χρήστη του τρέχοντος χρήστη.
FCEDIT: Ο προεπιλεγμένος επεξεργαστής που χρησιμοποιείται από την εντολή fc.
FIGNORE: Μια λίστα επιθημάτων διαχωρισμένη με άνω και κάτω τελεία που πρέπει να αγνοηθούν κατά τη συμπλήρωση του ονόματος αρχείου.
FUNCNAME: Το όνομα της τρέχουσας συνάρτησης φλοιού που εκτελείται.
GLOBIGNORE: Μια λίστα μοτίβων διαχωρισμένη με άνω και κάτω τελεία που ορίζει ένα σύνολο ονομάτων αρχείων που πρέπει να αγνοηθούν κατά την επέκταση του ονόματος αρχείου.
ΟΜΑΔΕΣ: ένας πίνακας μεταβλητών που περιέχει μια λίστα ομάδων στις οποίες είναι μέλος ο τρέχων χρήστης.
histchars: έως τρεις χαρακτήρες που ελέγχουν την επέκταση της ιστορίας.
HISTCMD: αριθμός ιστορικού της τρέχουσας εντολής.
HISTCONTROL: Ελέγχει ποιες εντολές εισάγονται στη λίστα ιστορικού φλοιού.
HISTFILE: όνομα αρχείου για αποθήκευση της λίστας ιστορικού φλοιού (προεπιλογή στο history.bash).
HISTFILESIZE: Ο μέγιστος αριθμός γραμμών για αποθήκευση στο αρχείο ιστορικού.
HISTIGNORE: μια λίστα μοτίβων διαχωρισμένη με άνω και κάτω τελεία που χρησιμοποιείται για τον προσδιορισμό ποιες εντολές αγνοούνται για το αρχείο ιστορικού.
HISTSIZE: ο μέγιστος αριθμός εντολών που είναι αποθηκευμένες στο αρχείο ιστορικού.
HOSTFILE: Περιέχει το όνομα του αρχείου που θα διαβαστεί όταν το κέλυφος πρέπει να συμπληρώσει το όνομα κεντρικού υπολογιστή.
HOSTNAME: το όνομα του τρέχοντος κεντρικού υπολογιστή.
HOSTTYPE: Η συμβολοσειρά μηχανής bash-shell λειτουργεί.
IGNOREEOF: Ο αριθμός των διαδοχικών χαρακτήρων EOF που πρέπει να λάβει το κέλυφος πριν από την έξοδο. Εάν αυτή η τιμή δεν υπάρχει, ορίζεται από προεπιλογή μία.
INPUTRC: Όνομα αρχείου init Readline (η προεπιλογή είναι .inputrc).
LANG: Η κατηγορία τοπικών ρυθμίσεων για το κέλυφος.
LC_ALL: Αντικαθιστά τη μεταβλητή LANG καθορίζοντας την κατηγορία τοπικών ρυθμίσεων.
LC_COLLATE: Ορίζει τη ταξινόμηση που χρησιμοποιείται κατά την ταξινόμηση των τιμών της συμβολοσειράς.
LC_CTYPE: Καθορίζει την ερμηνεία των χαρακτήρων που χρησιμοποιούνται στην επέκταση ονόματος αρχείου και την αντιστοίχιση προτύπων.
LC_MESSAGES: Καθορίζει τη ρύθμιση τοπικής ρύθμισης που χρησιμοποιείται κατά την ερμηνεία συμβολοσειρών με διπλά εισαγωγικά, πριν από το σύμβολο του δολαρίου.
LC_NUMERIC: Υποδεικνύει την τοπική ρύθμιση που χρησιμοποιείται για τη μορφοποίηση αριθμών.
LINENO: αριθμός γραμμής στο εκτελέσιμο σενάριο.
LINES: Καθορίζει τον αριθμό των διαθέσιμων γραμμών στο τερματικό.
MACHTYPE: συμβολοσειρά που καθορίζει τον τύπο συστήματος στη μορφή cpu-company-system.
MAILCHECK: Πόσο συχνά πρέπει να ελέγχει το κέλυφος (προεπιλογή 60 δευτερόλεπτα) για νέα αλληλογραφία.
OLDPWD: Ο προηγούμενος κατάλογος εργασίας που χρησιμοποιήθηκε από το κέλυφος.
OPTERR: Εάν οριστεί σε 1, το bash εμφανίζει σφάλματα που δημιουργούνται από την εντολή getopts.
OSTYPE: Μια συμβολοσειρά που προσδιορίζει το λειτουργικό σύστημα στο οποίο εκτελείται το κέλυφος.
PIPESTATUS: Ένας μεταβλητός πίνακας που περιέχει μια λίστα τιμών κατάστασης εξόδου από διεργασίες διαδικασίας προσκηνίου.
POSIXLY_CORRECT: Εάν έχει οριστεί, το bash ξεκινά σε λειτουργία POSIX.
PPID: Αναγνωριστικό διεργασίας (PID) της διαδικασίας γονικού κελύφους bash.
PROMPT_COMMAND: Εάν έχει οριστεί, η εντολή που πρέπει να εκτελεστεί πριν εμφανιστεί η κύρια γραμμή εντολών.
PS3: προτροπή για χρήση της εντολής επιλογής.
PS4: η προτροπή εμφανίζεται πριν ηχεί η γραμμή εντολών εάν χρησιμοποιείται η επιλογή bash -x.
PWD: τρέχων κατάλογος εργασίας.
ΤΥΧΑΙΟ: Επιστρέφει έναν τυχαίο αριθμό μεταξύ 0 και 32767. Η αντιστοίχιση μιας τιμής σε αυτήν τη μεταβλητή θα δημιουργήσει μια γεννήτρια τυχαίων αριθμών.
ΑΠΑΝΤΗΣΗ: Η προεπιλεγμένη μεταβλητή για την εντολή ανάγνωσης.
ΔΕΥΤΕΡΟΛΕΠΤΑ: Ο αριθμός των δευτερολέπτων από την έναρξη του κελύφους. Η εκχώρηση μιας τιμής επαναφέρει το χρονόμετρο σε μια τιμή.
SHELLOPTS: Μια λίστα διαχωρισμένη με άνω και κάτω τελεία με επιτρεπόμενες επιλογές κελύφους bash.
SHLVL: Καθορίζει το επίπεδο κελύφους, το οποίο αυξάνεται κατά ένα κάθε φορά που ξεκινά ένα νέο κέλυφος bash.
TIMEFORMAT: Μια μορφή που καθορίζει τον τρόπο με τον οποίο το κέλυφος εμφανίζει τις τιμές χρόνου.
TMOUT: Μια τιμή για το πόσο χρόνο (σε δευτερόλεπτα) οι εντολές επιλογής και ανάγνωσης θα πρέπει να περιμένουν για εισαγωγή. Η προεπιλεγμένη τιμή μηδέν σημαίνει ότι πρέπει να περιμένετε επ 'αόριστον.
UID: Το πραγματικό αναγνωριστικό χρήστη του τρέχοντος χρήστη.

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

συμπέρασμα

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

Το σύστημα Linux χρησιμοποιεί κάθε γενική και τοπική μεταβλητή περιβάλλοντος για την αποθήκευση πληροφοριών σχετικά με το περιβάλλον του συστήματος. Θα μπορείτε να έχετε πρόσβαση σε αυτές τις πληροφορίες από τη διεπαφή της γραμμής εντολών του κελύφους καθώς και από τα εσωτερικά σενάρια φλοιού. Το κέλυφος bash χρησιμοποιεί τις μεταβλητές περιβάλλοντος συστήματος που ορίζονται στο αρχικό κέλυφος UNO Bourne, καθώς και πολλές νέες μεταβλητές περιβάλλοντος. Η μεταβλητή περιβάλλοντος PATH ορίζει το μοτίβο αναζήτησης που δέχεται το κέλυφος bash για να βρει μια εκτελέσιμη εντολή. Θα μπορείτε να τροποποιήσετε τη μεταβλητή περιβάλλοντος PATH για να προσθέσετε τους δικούς σας καταλόγους ή ίσως το σύμβολο του τρέχοντος καταλόγου για να διευκολύνετε την εργασία με τα προγράμματά σας. Μπορείτε επίσης να δημιουργήσετε τις δικές σας καθολικές και τοπικές μεταβλητές περιβάλλοντος για δική σας χρήση. Μόλις δημιουργηθεί η μεταβλητή περιβάλλοντος, είναι διαθέσιμη για ολόκληρη τη συνεδρία φλοιού.

Υπάρχουν πολλά αρχεία εκκίνησης που ξεκινούν το κέλυφος bash αφού έχει ξεκινήσει. Αυτά τα αρχεία εκκίνησης μπορούν να περιέχουν ορισμούς μεταβλητών περιβάλλοντος για να ορίσουν τυπικές μεταβλητές περιβάλλοντος για κάθε περίοδο λειτουργίας bash. Μετά τη σύνδεση στο Linux, το κέλυφος bash έχει πρόσβαση στο αρχείο εκκίνησης / etc / προφίλ καθώς και σε τρία τοπικά αρχεία εκκίνησης για κάθε χρήστη, $ HOME / .bash, $ HOME / .bash login και $ HOME / .profile.

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

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

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

Μεταβλητές περιβάλλοντος Linux, μεταβλητές κελύφους

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

Μεταβλητές Shellπεριέχει δεδομένα που καθορίζουν την κατάσταση της τρέχουσας συνεδρίας. Για παράδειγμα, ο τρέχων κατάλογος.

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

Η λίστα των μεταβλητών περιβάλλοντος μπορεί να προβληθεί εκτελώντας printenvή env

……
LC_MEASUREMENT = ru_RU.UTF-8
LESSCLOSE = / usr / bin / lesspipe% s% s
LC_PAPER = ru_RU.UTF-8
LC_MONETARY = ru_RU.UTF-8
LANG = en_US.UTF-8
……

Η διαφορά είναι ότι printenvσας επιτρέπει να εμφανίζετε δεδομένα για μια συγκεκριμένη μεταβλητή - για παράδειγμα:

Το πλεονέκτημα του env είναι ότι μπορείτε να περάσετε μια μεταβλητή σε μια συγκεκριμένη εντολή.

Για παράδειγμα:

env SHELL = "/ bin / bash" ls -la / opt

Προβολή μεταβλητών περιβάλλοντος

BASH = / bin / bash
BASHOPTS = checkwinsize: cmdhist: full_fullquote: expand_aliases: extglob: extquote: force_fignore: histappend: interactive_comments: progcomp: promptvars: sourcepath
BASH_ALIASES = ()
BASH_ARGC = ()
……

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

Για να μην αλλάξετε το τρέχον περιβάλλον για να απαλλαγείτε από περιττές πληροφορίες στην έξοδο, μπορείτε να το κάνετε αυτό

Στη λειτουργία POSIX, οι λειτουργίες που καθορίζονται από το bash δεν θα εμφανίζονται

Οι πιο συχνά χρησιμοποιούμενες μεταβλητές είναι:
  • ΚΕΛΥΦΟΣ- ένα περιτύλιγμα που ερμηνεύει εντολές
  • ΧΡΗΣΤΗΣ- χρήστης
  • ΑΜΕΑ- τρέχων κατάλογος
  • ΟΡΟΣ- τον τύπο του τερματικού που προσομοιώνεται

Οι εντολές Shell σάς επιτρέπουν να αλλάξετε την τιμή των μεταβλητών. Αυτός είναι ο τρόπος με τον οποίο το pwd εκτυπώνει τον τρέχοντα κατάλογο στην κονσόλα.

/ σπίτι / διαχειριστής

Αυτή είναι μια μεταβλητή φλοιού PWD

[email προστατευμένο]: ~ $ σύνολο | grep ΑΜΕΑ

OLDPWD = / tmp
PWD = / home / admin

Ας πάμε στο / tmp και ας δούμε πώς αλλάζει η τιμή

[email προστατευμένο]: ~ $ cd / tmp /

[email προστατευμένο]: / tmp $ set | grep ΑΜΕΑ

OLDPWD = / home / admin
PWD = / tmp

Μπορείτε να δείτε όταν αλλάζετε τον κατάλογο, η τιμή της μεταβλητής φλοιού PWD απλώς αλλάζει και αλλάζει επίσης OLDPWD

Πώς να ορίσετε τη μεταβλητή περιβάλλοντος ή περιτυλίγματος

Η μεταβλητή του κελύφους προστίθεται ως εξής

SOMEVAR = "Γεια σου"

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

Μπορείτε να δείτε τα περιεχόμενα μέσω echo προσθέτοντας ένα σύμβολο $ μπροστά από το όνομα

Γεια σου

Για να προσθέσετε μια μεταβλητή στο περιβάλλον, πρέπει να εξαχθεί

εξαγωγή SOMEVAR = "Γεια σου"

SOMEVAR = Γεια σου

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

Μπορείτε να διαγράψετε μια μεταβλητή περιβάλλοντος με την ίδια εντολή εξαγωγής με το κλειδί -n

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

Αυτόματη φόρτωση μεταβλητών κατά την είσοδο

Τα συστήματα Linux χρησιμοποιούν αρχεία ~ / .bashrc, ~ / .bash_profile, ~ / .bash_loginή ~ / .προφίλγια να ορίσετε μεταβλητές. Τα αρχεία διαβάζονται κατά τη σύνδεση, το ποιο θα χρησιμοποιηθεί εξαρτάται από τη διανομή.

Στο Ubuntu / Debain, αυτό είναι ~ / .bashrc. Τόσο οι μεταβλητές περιβάλλοντος όσο και οι μεταβλητές φλοιού προστίθενται σε αυτό.

Το πρώτο κιόλας διαβάζεται / etc / προφίλ... Καθορίζει και μπορεί να παρακαμφθεί ποια αρχεία και με ποια σειρά θα χρησιμοποιηθούν στη συνέχεια.

Για περιόδους σύνδεσης χωρίς σύνδεση, οι μεταβλητές ορίζονται στο /etc/bash.bashrc. Μια τέτοια περίοδος λειτουργίας είναι τυπική για σενάρια που εκτελούνται στο παρασκήνιο.

Για τις περισσότερες εργασίες, αρκεί η επεξεργασία ~ / .bashrc.

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

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

Γενικότερα, μια μεταβλητή περιβάλλοντος μπορεί να είναι τριών τύπων:

1. Τοπικές μεταβλητές περιβάλλοντος

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

2. Προσαρμοσμένες μεταβλητές κελύφους

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

3. Μεταβλητές περιβάλλοντος συστήματος

Αυτές οι μεταβλητές είναι διαθέσιμες σε όλο το σύστημα, για όλους τους χρήστες. Φορτώνονται κατά την εκκίνηση του συστήματος από τα αρχεία διαμόρφωσης συστήματος: / etc / περιβάλλον, / etc / προφίλ, /etc/profile.d/ /etc/bash.bashrc.

Αρχεία διαμόρφωσης μεταβλητής περιβάλλοντος Linux

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

.bashrc

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

.bash_profile

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

/ etc / περιβάλλον

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

/etc/bash.bashrc

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

/ etc / προφίλ

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

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

όνομα αρχείου πηγής

Προσθήκη μεταβλητών περιβάλλοντος χρήστη και συστήματος στο Linux

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

var = τιμή
$ εξαγωγή var = αξία

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

Πολλές εντολές μπορούν να χρησιμοποιηθούν για την κατάργηση μεταβλητών περιβάλλοντος:

1. Χρησιμοποιώντας το env

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

env –i εντολή

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

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

Μετά την έναρξη ενός τέτοιου περιβάλλοντος, δεν θα υπάρχουν διαθέσιμες μεταβλητές, αλλά μετά την έξοδο όλα θα επιστρέψουν στη θέση τους.

2. Χρήση απενεργοποίησης

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

unset variable_name

3. Ορίστε την τιμή της μεταβλητής σε ""

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

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

Δημιουργία μεταβλητών περιβάλλοντος χρήστη και συστήματος

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

1. Εγκαταστήστε και αφαιρέστε τοπικές μεταβλητές στο Linux

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

VAR1 = "Χάθηκε"
$ echo $ VAR1
$ καταργήθηκε το VAR1
$ echo $ VAR1

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

εξαγωγή VAR = "Χάθηκε"
$ echo $ VAR
$ VAR =
$ echo $ VAR

Τώρα ας δημιουργήσουμε μια μεταβλητή VAR2 και ας της δώσουμε μια τιμή. Και στη συνέχεια αφαιρέστε προσωρινά όλες τις τοπικές μεταβλητές εκτελώντας env -i. Θα ξεκινήσει το κέλυφος χωρίς μεταβλητές. Μετά την είσοδο στην έξοδο, όλες οι μεταβλητές θα αποκατασταθούν.

VAR2 = "Χάθηκε"
$ echo $ VAR2
$ env -i bash
$ echo $ VAR2

Ρύθμιση και αφαίρεση προσαρμοσμένων μεταβλητών

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

Προσθέστε μια γραμμή όπως αυτή (o, μετά επικόλληση, μετά Esc και: wq):

εξαγωγή CD = "This is Losst Home"

Τώρα απομένει να ενημερώσετε τη διαμόρφωση:

πηγή .bashrc
$ ηχώ $ CD

Για να καταργήσετε αυτήν τη μεταβλητή, απλώς αφαιρέστε την από το .bashrc.

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

vi .bash_profile

Προσθέστε τη γραμμή:

εξαγωγή VAR2 = "Αυτό είναι το χαμένο σπίτι"

Και εκτελέστε αυτές τις εντολές για να εφαρμόσετε τις αλλαγές και να ελέγξετε την προσθήκη της μεταβλητής:

πηγή .bash_profile
$ echo $ VAR2

Η μεταβλητή δεν είναι διαθέσιμη, αφού δημιουργήσατε μια τοπική συνεδρία τερματικού, συνδεθείτε τώρα μέσω ssh:

ssh [email προστατευμένο]
$ echo $ VAR2

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

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

Ρύθμιση και κατάργηση μεταβλητών περιβάλλοντος συστήματος

Ας δημιουργήσουμε μια μεταβλητή διαθέσιμη για όλους τους χρήστες σε όλες τις περιόδους σύνδεσης τερματικού, εκτός από τις απομακρυσμένες, προσθέτοντάς την στο /etc/bash.profile:

vi /etc/bash.profile

εξαγωγή VAR = "Αυτή είναι μεταβλητή σε όλο το σύστημα"

Στη συνέχεια ενημερώνουμε:

πηγή /etc/bash.bashrc

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

ηχώ $ VAR
$ sudo su
$ echo $ VAR
$ su -
$ echo $ VAR

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

εξαγωγή VAR1 = "Αυτή είναι μεταβλητή σε όλο το σύστημα μόνο για απομακρυσμένες συνεδρίες"

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

πηγή / etc / προφίλ
$ echo $ VAR1

Εάν χρειάζεται να προσθέσετε μια μεταβλητή περιβάλλοντος στο Linux ώστε να είναι διαθέσιμη τόσο από απόσταση όσο και για τοπικές περιόδους λειτουργίας, εξάγετε την στο / etc / περιβάλλον:

vi / etc / περιβάλλον

εξαγωγή VAR12 = "Είμαι διαθέσιμος παντού"

Ελέγχουμε:

πηγή / etc / περιβάλλον
$ echo $ VAR12
$ sudo su
$ echo $ VAR12
$ έξοδο
$ ssh localhost
$ echo $ VAR12

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

Μεταβλητές περιβάλλοντος

$ ΣΠΙΤΙ
Η μεταβλητή περιέχει τη διαδρομή προς τον αρχικό κατάλογο του τρέχοντος χρήστη. $ ΧΡΗΣΤΗΣ
Τρέχον όνομα χρήστη $ PATH
Λίστα καταλόγων για αναζήτηση εκτελέσιμων προγραμμάτων από το κέλυφος. $ ΑΜΕΑ
Η διαδρομή προς τον τρέχοντα κατάλογο εργασίας (ή pwd). Παράδειγμα: dir_path = $ (pwd). $ SHELL
Προεπιλεγμένος διερμηνέας $ RANDOM
Δημιουργεί έναν τυχαίο αριθμό 0..32767 κάθε φορά που γίνεται πρόσβαση στη μεταβλητή. $ ΔΕΥΤΕΡΟΛΕΠΤΑ
Χρόνος σε δευτερόλεπτα. από την αρχή του κελύφους. $; Το αποτέλεσμα της προηγούμενης εντολής. $ HOSTNAME
Όνομα υπολογιστή $ HISTFILE
Διαδρομή προς το αρχείο ιστορικού διερμηνέα $ IFS
Λίστα οριοθέτων εντολών, παραμέτρων, στοιχείων πίνακα (προεπιλογή: διάστημα, καρτέλα, νέα γραμμή) $ PS1
Πρότυπο συμβολοσειράς προτροπής διερμηνέα.

Προσωρινή ρύθμιση μεταβλητής περιβάλλοντος

Ρύθμιση της μεταβλητής περιβάλλοντος για την περίοδο συνεδρίας:

# Για νέα διεργασία env var_name = τιμή [εντολή] # Για το τρέχον κέλυφος και όλες τις υποδιεργασίες εξαγωγή var_name = τιμή [εντολή]

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

Ορισμός σταθερής τιμής

Οι μεταβλητές περιβάλλοντος σε όλο το σύστημα ορίζονται μέσω του αρχείου / etc / περιβάλλοντος:

ΠΕΡΙΒΑΛΛΟΝ = "dev"

Ρύθμιση της μεταβλητής περιβάλλοντος για έναν συγκεκριμένο χρήστη μέσω του αρχείου ~ / .bashrc ή ~ / .bash_profile:

PATH = "$ (PATH): / σπίτι / χρήστης / κάδος:"

Προσοχή!

Το αρχείο ~ / .bash_profile θα εκτελεστεί όταν ο διερμηνέας ξεκινήσει με το διακόπτη -l. Αυτό το αρχείο δεν μπορεί να διαβαστεί όταν έχετε συνδεθεί τοπικά!

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

Προβολή της τιμής μιας μεταβλητής περιβάλλοντος

Για να δείτε την τιμή μιας μεταβλητής περιβάλλοντος, υπάρχει η εντολή printenv:

Printenv<имя_переменной>

#κέλυφος, #bash, #περιβάλλον

Μεταβλητοί τύποι

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

Καθολικές μεταβλητές

Οι γενικές μεταβλητές ή οι μεταβλητές περιβάλλοντος είναι διαθέσιμες σε όλα τα κελύφη. Για να εμφανίσετε μεταβλητές περιβάλλοντος, μπορείτε να χρησιμοποιήσετε τις εντολές envή printenv... Αυτές οι εντολές παρέχονται ως μέρος του πακέτου sh-utils.

Μια τυπική έξοδος φαίνεται παρακάτω:

Franky ~> printenv CC = gcc CDPATH = .: ~: / usr / local: / usr: / CFLAGS = -O2 -fomit-frame-pointer COLORTERM = gnome-terminal CXXFLAGS = -O2 -fomit-frame-pointer DISPLAY =: 0 DOMAIN = hq.garrels.be e = TOR = vi FCEDIT = vi FIGNORE = .o: ~ G_BROKEN_FILENAMES = 1 GDK_USE_XFT = 1 GDMSESSION = Προεπιλογή GNOME_DESKTOP_SESSION_ID = Προεπιλογή GNOME_DESKTOP_SESSION_ID = Προεπιλ = σκούρο πράσινο GWMTERM = xterm HISTFILESIZE = 5000 history_control = παράβλεψη στοιχ. s LD_LIBRARY_PATH = / usr / lib / mozilla: / usr / lib / mozilla / πρόσθετα LESSCHARSET = latin1 LESS = -edfMQ LESSOPEN = | /usr/bin/lesspipe.sh% s LEX = LOCAL_MACHINE = octarine LOGNAMECOLORS = franky 00: fi = 00: di = 01, 34: ln = 01, 36: pi = 40, 33: άρα = 01, 35: bd = 40, 33, 01: cd = 40, 33, 01: ή = 01; 05; 37; 41: mi = 01; 05; 37; 41: ex = 01; 32: *. Cmd = 01; 32: *. Exe = 01; 32: *. com = 01; 32: *. btm = 01; 32: *. ρόπαλο = 01; 32: *. sh = 01; 32: *. csh = 01; 32: *. tar = 01; 31: *. tgz = 01; 31: *. Arj = 01 ; 31: *. Taz = 01; 31: *. Lzh = 01; 31: *. Zip = 01; 31: *. Z = 01; 31: *. Z = 01; 31: *. Gz = 01; 31 : *. bz2 = 01; 31: *. bz = 01; 31: *. tz = 01; 31: *. rpm = 01; 31: *. cpio = 01; 31: *. jpg = 01; 35: * .gif = 01; 35: *. bmp = 01; 35: *. xbm = 01; 35: *. xpm = 01; 35: *. png = 01; 35: *. tif = 01; 35: ΜΗΧΑΝΗΜΑΤΑ = οκταρίνι MAILCHECK = 60 MAIL = / var / mail / ειλικρινής MANPATH = / usr / man: / usr / share / man /: / usr / local / man: / usr / X11R6 / άνθρωπος MEAN_MACHINES = octarine MOZ_DIST_BIN = / usr / lib / mozilla MOZILLA_FIVE_HOME = / usr / lib / mozilla MOZ_PROGRAM = / usr / lib / mozilla / mozilla-bin MTOOLS_FAT_COMPATIBILITY = 1 MYMALLOC = 0 NNTPPORT = 119 NNTPSERVER = ειδήσεις NPX_TH4PLUGINth λιγότερα nethome / franky / bin.Linux: / nethome / franky / bin: / usr / local / bin: / usr / local / sbin: / usr / X11R6 / bin: / usr / bin: / usr / sbin: / bin: / sbin :. PS1 = \ [\ 033franky είναι στο \ w \ [\ 033 PS2 = Περισσότερα είσοδοι> PWD = / nethome / ειλικρινής SESSION_MANAGER = local / octarine.hq.garrels.be: /tmp/.ICE-unix/22106 SHELL = / bin / bash SHELL_LOGIN = - login SHLVL = 2 SSH_AGENT_PID = 22161 SSH_ASKPASS = / usr / libexec / openssh / gnome-ssh-askpass SSH_AUTH_SOCK = / tmp / ssh-XXmhQ4fC0 US = 22.161 / bin / printenv VISUAL = vi WINDOWID = 20971661 XAPPLRESDIR = / nethome / franky / app-defaults XAUTHORITY = / nethome / franky / .Xauthority XENVIRONMENT = / nethome / franky / .XESHESHARDS X11 /% Xlib / T /% N% C% S: / usr / X11R6 / lib / X11 /% l /% T /% N% C% S: / usr / X11R6 / lib / X11 /% T /% N% C% S: / usr / X11R6 / lib / X11 /% L /% T /% N% S: / usr / X11R6 / lib / X11 /% l /% T /% N% S : / usr / X11R6 / lib / X11 /% T /% N% S XKEYSYMDB = / usr / X11R6 / lib / X11 / XKeysymDB [email προστατευμένο]= κανένα XTERMID = XWINHOME = / usr / X11R6 X = X11R6 YACC = βίσωνας -y

Τοπικές μεταβλητές

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

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

Franky ~> diff set.sorted printenv.sorted | grep"<" | awk "{ print $2 }" BASE=/nethome/franky/.Shell/hq.garrels.be/octarine.aliases BASH=/bin/bash BASH_VERSINFO=(="2" BASH_VERSION="2.05b.0(1)-release" COLUMNS=80 DIRSTACK=() DO_FORTUNE= EUID=504 GROUPS=() HERE=/home/franky HISTFILE=/nethome/franky/.bash_history HOSTTYPE=i686 IFS=$" LINES=24 MACHTYPE=i686-pc-linux-gnu OPTERR=1 OPTIND=1 OSTYPE=linux-gnu PIPESTATUS=(="0") PPID=10099 PS4="+ PWD_REAL="pwd SHELLOPTS=braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor THERE=/home/franky UID=504

Διαίρεση μεταβλητών με το περιεχόμενό τους

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

  • Μεταβλητές συμβολοσειράς
  • Ακέραιες μεταβλητές
  • Μεταβλητές - σταθερές
  • Μεταβλητές - Πίνακες

Θα συζητήσουμε αυτούς τους τύπους μεταβλητών στο Κεφάλαιο 10. Τώρα θα χρησιμοποιήσουμε ακέραιες τιμές και τιμές συμβολοσειρών στις μεταβλητές μας.

Δημιουργία μεταβλητών

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

Prompt> export 1number = 1 bash: export: `1number = 1": δεν είναι έγκυρο αναγνωριστικό

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

VARNAME = "τιμή"

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

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

Franky ~> MYVAR1 = "2" franky ~> echo $ MYVAR1 2 franky ~> first_name = "Franky" franky ~> echo $ first_name Franky franky ~> full_name = "Franky M. Singh" franky ~> echo $ πλήρες όνομα Franky M. Singh franky ~> MYVAR-2 = "2" bash: MYVAR-2 = 2: η εντολή δεν βρέθηκε ειλικρινής ~> MYVAR1 = "2" bash: MYVAR1: η εντολή δεν βρέθηκε ειλικρινής ~> MYVAR1 = "2" bash: 2: εντολή δεν βρέθηκε ειλικρινής ~> unset MYVAR1 name full_name franky ~> echo $ MYVAR1 $ first_name $ πλήρες όνομα<--no output-->ειλικρινής ~>

Εξαγωγή μεταβλητών

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

Εξαγωγή VARNAME = "τιμή"

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

Franky ~> full_name = "Franky M. Singh" franky ~> bash franky ~> echo $ full_name franky ~> exit franky ~> export full_name franky ~> bash franky ~> echo $ full_name Franky M. Singh franky ~> export full_name = "Charles the Great" franky ~> echo $ full_name Charles the Great franky ~> exit franky ~> echo $ full_name Franky M. Singh franky ~>

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

Δεσμευμένες μεταβλητές

Δεσμευμένες μεταβλητές Bourne Shell

Το Bash χρησιμοποιεί ορισμένες μεταβλητές φλοιού, όπως και το κέλυφος Bourne. Σε ορισμένες περιπτώσεις, το Bash εκχωρεί μια προεπιλεγμένη τιμή σε μια μεταβλητή. Ο παρακάτω πίνακας συνοψίζει αυτές τις απλές μεταβλητές φλοιού:

Πίνακας 3.1. Δεσμευμένες μεταβλητές Bourne Shell

Όνομα μεταβλητής Ορισμός

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

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

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

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

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

Η τιμή του τελευταίου ορίσματος στην παράμετρο που επεξεργάζεται η ενσωματωμένη εντολή παίρνει.

Το ευρετήριο του τελευταίου ορίσματος παραμέτρου που επεξεργάζεται η ενσωματωμένη εντολή παίρνει.

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

Συμβολοσειρά κύριας προτροπής. Η προεπιλογή είναι "" \ s- \ v \ $ ".

Δευτερεύουσα συμβολοσειρά προτροπής. Η προεπιλογή είναι ""> "".

Δεσμευμένες μεταβλητές Bash

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

Πίνακας 3.2. Δεσμευμένες μεταβλητές Bash

Όνομα μεταβλητής Ορισμός

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

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

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

Ο αριθμός έκδοσης της τρέχουσας παρουσίας του Bash.

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

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

Δείκτης στο $ (COMP_WORDS) για τη λέξη που αποθηκεύει την τρέχουσα θέση του δρομέα.

Η τρέχουσα γραμμή εντολών.

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

Η μεταβλητή είναι ένας πίνακας μεμονωμένων λέξεων που χρησιμοποιούνται στην τρέχουσα γραμμή εντολών.

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

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

Numeric Effective User ID Το αναγνωριστικό του τρέχοντος χρήστη.

Ο προεπιλεγμένος επεξεργαστής όταν βρίσκεται σε μια εντολή inline fcκαθορίζει την παράμετρο -e

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

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

Μια λίστα μοτίβων διαχωρισμένη με άνω και κάτω τελεία που καθορίζει το σύνολο των ονομάτων αρχείων που πρέπει να αγνοηθούν κατά την αντικατάσταση ονομάτων αρχείων.

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

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

Ο αριθμός της τρέχουσας εντολής στο ιστορικό εντολών ή ο δείκτης της στη λίστα ιστορικού εντολών.

Καθορίζει εάν η εντολή προστίθεται στο αρχείο ιστορικού εντολών.

Το όνομα του αρχείου στο οποίο είναι αποθηκευμένο το ιστορικό εντολών. Προεπιλεγμένη τιμή: ~ / .bash_history.

Ο προεπιλεγμένος μέγιστος αριθμός γραμμών σε ένα αρχείο ιστορικού εντολών είναι 500.

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

Ο μέγιστος αριθμός εντολών που μπορούν να απομνημονευθούν στη λίστα ιστορικού εντολών είναι 500 από προεπιλογή.

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

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

Μια συμβολοσειρά που περιγράφει το μηχάνημα που εκτελείται το Bash.

Ελέγχει τι θα κάνει το κέλυφος όταν λάβει έναν χαρακτήρα ως τερματικό χαρακτήρα στη ροή εισόδου. ΕΟΦ(χαρακτήρας τέλους αρχείου).

Το όνομα του αρχείου προετοιμασίας Readline που αντικαθιστά το προεπιλεγμένο αρχείο / etc / inputrc.

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

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

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

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

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

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

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

Χρησιμοποιείται από την ενσωματωμένη εντολή επιλέγωγια να προσδιορίσετε το μήκος της στήλης στην οποία εμφανίζονται οι επιλεγμένες λίστες.

Μια συμβολοσειρά που περιγράφει πλήρως τον τύπο του συστήματος στο οποίο εκτελείται το Bash, χρησιμοποιώντας την τυπική μορφή GNU CPU-COMPANY-SYSTEM.

Καθορίζει (σε ​​δευτερόλεπτα) πόσο συχνά το κέλυφος πρέπει να ελέγχει για αλληλογραφία σε αρχεία που καθορίζονται στις μεταβλητές MAILPATH ή MAIL.

Ο προηγούμενος κατάλογος εργασίας έχει οριστεί με την ενσωματωμένη εντολή CD.

Εάν οριστεί σε 1, τότε το Bash εμφανίζει μηνύματα σφάλματος που δημιουργούνται από την ενσωματωμένη εντολή παίρνει.

Μια συμβολοσειρά που περιγράφει το λειτουργικό σύστημα στο οποίο εκτελείται το Bash.

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

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

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

Η τιμή αυτής της μεταβλητής χρησιμοποιείται για την εντολή επιλέγωως συμβολοσειρά προτροπής. Προκαθορισμένο - ""#? ""

Η τιμή συμβολοσειράς προτροπής που εκτυπώνεται πριν από τη γραμμή εντολών όταν η επιλογή -x έχει οριστεί να επαναλαμβάνει τη γραμμή εντολών. η προεπιλογή είναι "+".

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

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

Η μεταβλητή χρησιμοποιείται από προεπιλογή στην ενσωματωμένη εντολή ανάγνωση.

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

Λίστα παραμέτρων που ορίζονται στο κέλυφος εντολών. χωρίζονται με άνω και κάτω τελεία.

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

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

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

Αριθμητική τιμή, πραγματικό αναγνωριστικό χρήστη για τον τρέχοντα χρήστη.

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

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

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

Πίνακας 3.3. Ειδικές μεταβλητές Bash

Σύμβολο Ορισμός

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

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

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

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

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

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

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

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

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

Οι παράμετροι θέσης είναι λέξεις που ακολουθούν το όνομα ενός σεναρίου φλοιού. Αποθηκεύονται σε μεταβλητές $ 1, $ 2, $ 3 και ούτω καθεξής. Οι μεταβλητές προστίθενται στον εσωτερικό πίνακα όπως απαιτείται. Η μεταβλητή $ # καθορίζει τον συνολικό αριθμό παραμέτρων, όπως φαίνεται στην ακόλουθη απλή δέσμη ενεργειών:

# positional.sh # Αυτό το σενάριο διαβάζει 3 παραμέτρους θέσης και τις εκτυπώνει. POSPAR1 = "$ 1" POSPAR2 = "$ 2" POSPAR3 = "$ 3" ηχώ "$ 1 είναι η πρώτη παράμετρος θέσης, \ $ 1." echo "$ 2 είναι η δεύτερη παράμετρος θέσης, \ $ 2." echo "$ 3 είναι η τρίτη παράμετρος θέσης, \ $ 3." echo echo "Ο συνολικός αριθμός των παραμέτρων θέσης είναι # $."

Κατά την εκκίνηση του σεναρίου, μπορείτε να καθορίσετε οποιοδήποτε αριθμό ορισμάτων:

Franky ~> positional.sh ένα δύο τρία τέσσερα πέντε ένα είναι η πρώτη παράμετρος θέσης, $ 1. δύο είναι η δεύτερη παράμετρος θέσης, $2. τρία είναι η τρίτη παράμετρος θέσης, 3 $. Ο συνολικός αριθμός των παραμέτρων θέσης είναι 5.franky ~> positional.sh ένα δύο ένα είναι η πρώτη παράμετρος θέσης, $1. δύο είναι η δεύτερη παράμετρος θέσης, $2. είναι η τρίτη παράμετρος θέσης, 3 $. Ο συνολικός αριθμός παραμέτρων θέσης είναι 2.

Για περισσότερες πληροφορίες σχετικά με τη χρήση αυτών των παραμέτρων, ανατρέξτε στο Κεφάλαιο 7, "Δηλώσεις υπό όρους" και στην ενότητα "Η ενσωματωμένη μετατόπιση".

Μερικά παραδείγματα άλλων ειδικών παραμέτρων:

Franky ~> grep λεξικό / usr / share / dict / λεξικό λέξεων franky ~> echo $ _ / usr / share / dict / words franky ~> echo $$ 10662 franky ~> mozilla & 11064 franky ~> echo $! 11064 franky ~> echo $ 0 bash franky ~> echo $? 0 franky ~> ls does nototexist ls: does nototexist: Δεν υπάρχει τέτοιο αρχείο ή κατάλογος franky ~> echo $; 1 ειλικρινής ~>

Χρήστης ειλικρινήςξεκινάει εισάγοντας την εντολή grep, με αποτέλεσμα να εκχωρηθεί η τιμή της μεταβλητής _. Το αναγνωριστικό διεργασίας αυτού του φλοιού είναι 10662. Εάν η εκτέλεση οποιασδήποτε εργασίας ωθηθεί στο παρασκήνιο, στη μεταβλητή! θα περιέχει το αναγνωριστικό διαδικασίας της εργασίας παρασκηνίου. Ένα τρέχον κέλυφος εντολών είναι κτυπώ δυνατά... Αν έγινε λάθος, στη μεταβλητή; θα υπάρχει κωδικός επιστροφής διαφορετικός από το 0 (μηδέν).

Επέκταση του εύρους των σεναρίων με μεταβλητές

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

#! / bin / bash # Αυτό το σενάριο δημιουργεί αντίγραφο ασφαλείας του αρχικού καταλόγου μου. cd / home # Αυτό δημιουργεί το αρχείο tar cf /var/tmp/home_franky.tar franky> / dev / null 2> & 1 # Πρώτα αφαιρέστε το παλιό αρχείο bzip2. Σφάλματα ανακατεύθυνσης επειδή αυτό δημιουργεί ορισμένα εάν το αρχείο # δεν υπάρχει. Στη συνέχεια, δημιουργήστε ένα νέο συμπιεσμένο αρχείο. rm /var/tmp/home_franky.tar.bz2 2> / dev / null bzip2 /var/tmp/home_franky.tar # Αντιγράψτε το αρχείο σε άλλο κεντρικό υπολογιστή - διαθέτουμε κλειδιά ssh για την εκτέλεση αυτής της εργασίας χωρίς παρέμβαση. scp /var/tmp/home_franky.tar.bz2 bordeaux: / opt / backup / franky> / dev / null 2> & 1 # Δημιουργήστε μια χρονική σήμανση σε ένα αρχείο καταγραφής. ημερομηνία >> /home/franky/log/home_backup.log Η δημιουργία αντιγράφων ασφαλείας echo πέτυχε >> /home/franky/log/home_backup.log

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

#! / bin / bash # Αυτό το σενάριο δημιουργεί αντίγραφο ασφαλείας του αρχικού καταλόγου μου. # Αλλάξτε τις τιμές των μεταβλητών για να κάνετε το σενάριο να λειτουργεί για εσάς: BACKUPDIR = / home BACKUPFILES = ειλικρινής TARFILE = / var / tmp / home_franky.tar BZIPFILE = / var / tmp / home_franky.tar.bz2 SERVER = bordeaux REMOTEDIR = / opt / backup / franky LOGFILE = / home / franky / log / home_backup.log cd $ BACKUPDIR # Αυτό δημιουργεί το αρχείο tar cf $ TARFILE $ BACKUPFILES> / dev / null 2> & 1 # Πρώτα αφαιρέστε το παλιό αρχείο bzip2. Σφάλματα ανακατεύθυνσης επειδή αυτό δημιουργεί ορισμένα εάν το αρχείο # δεν υπάρχει. Στη συνέχεια, δημιουργήστε ένα νέο συμπιεσμένο αρχείο. rm $ BZIPFILE 2> / dev / null bzip2 $ TARFILE # Αντιγράψτε το αρχείο σε άλλο κεντρικό υπολογιστή - έχουμε κλειδιά ssh για την εκτέλεση αυτής της εργασίας χωρίς παρέμβαση. scp $ BZIPFILE $ SERVER: $ REMOTEDIR> / dev / null 2> & 1 # Δημιουργήστε μια χρονική σήμανση σε ένα αρχείο καταγραφής. ημερομηνία >> $ LOGFILE το αντίγραφο ασφαλείας echo πέτυχε >> $ LOGFILE

Συνεχίζοντας το θέμα:
Δίκτυα

Γεια σε όλους! Χρησιμοποιείτε Siri; Αν και αυτός είναι ένας υπέροχος φωνητικός βοηθός με τον οποίο μπορείτε πάντα να μιλήσετε, δεν το κάνω τόσο συχνά. Άλλωστε μέχρι τώρα...

Νέα άρθρα
/
Δημοφιλής