M. Garrels. εγχειρίδιο bash

2.2. Μεταβλητές Περιβάλλοντος

Το λειτουργικό σύστημα διατηρεί ένα ειδικό είδος πόρων που ονομάζεται Μεταβλητές Περιβάλλοντος (μεταβλητές περιβάλλοντος). Αυτές οι μεταβλητές είναι ένα ζευγάρι ΟΝΟΜΑ - ΑΞΙΑ . Το όνομα μπορεί να ξεκινά με ένα γράμμα και να αποτελείται από γράμματα, αριθμούς και κάτω παύλες.

Για να αντικαταστήσετε την τιμή μιας μεταβλητής στη γραμμή εντολών, πριν από το όνομα της μεταβλητής υπάρχει ένα σύμβολο $:

$ echo $USER επισκέπτης

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

Μια δήλωση ανάθεσης χρησιμοποιείται για να ορίσει την τιμή μιας μεταβλητής (στην περίπτωση κελύφους τύπου Bourne):

$ TEST=δοκιμή

ή την ενσωματωμένη δήλωση συνόλου (στην περίπτωση των C-likes):

$ set TEST=test

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

$ σύνολο COLUMNS=197 CVS_RSH=ssh DIRSTACK=() EUID=1000 GROUPS=() G_BROKEN_FILENAMES=1 HISTFILE=/home/guest/.bash_history HISTFILESIZE=1000 HISTSIZE=10000HISTSIZE=10000HΟΜΥΣΤ/ΧΩΡΕΣΟΜΥΣΤ/ΧΟΜΥΣΤ/ΧΟΜΥΣΤ/ΧΩΡΓΟΜΥΣΤΟΥΣΤΟΥ 6 IFS =$" \t\n" INPUTRC=/etc/inputrc KDEDIR=/usr KDEDIRS=/home/guest/.local/ KDE_IS_PRELINKED=1 KDE_NO_IPV6=1 LANG=ru_RU.UTF-8 LESSOPEN="|/usr/bin/ lesspipe.sh %s" LINES=65 LOGNAME=επισκέπτης ....

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

$ TEST=test1 sh -c "echo $TEST" test1

Μπορείτε να αξιολογήσετε τα περιεχόμενα ενός συνόλου μεταβλητών για μια περίοδο λειτουργίας καλώντας την ενσωματωμένη εντολή του διερμηνέα env, στην περίπτωση διερμηνέων τύπου Bourne (sh, ksh, bash, zsh, pdksh...) και printenv στην περίπτωση χρήσης διερμηνέων κλώνων C-Shell (csh, tcsh. ..):

$ env HOSTNAME=myhost TERM=xterm SHELL=/bin/bash HISTSIZE=1000 KDE_NO_IPV6=1 SSH_CLIENT=172.16.0.9 50487 22 QTDIR=/usr/lib/qt-3.3 QTINC/in-tY/us. =/dev/pts/6 USER=επισκέπτης MOZILLA_CERTIFICATE_FOLDER=/home/guest/.evolution/ KDEDIR=/usr MAIL=/var/spool/mail/guest PATH=/usr/games:/usr/local/bin:/bin :/usr/bin:/home/guest/bin INPUTRC=/etc/inputrc PWD=/home/guest KDE_IS_PRELINKED=1 LANG=ru_RU.UTF-8 KDEDIRS=/home/guest/.local/ SSH_ASKPASS=/usr/libexec /openssh/gnome-ssh-askpass SHLVL=1 HOME=/home/επισκέπτης LOGNAME=επισκέπτης QTLIB=/usr/lib/qt-3.3/lib CVS_RSH=ssh SSH_CONNECTION=172.16.0.9 50487 129.000.000. /bin/lesspipe.sh %s G_BROKEN_FILENAMES=1 _=/bin/env

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

#!/bin/sh μεταβλητή echo TEST: echo $TEST

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

$ sh test Μεταβλητή TEST:

Μπορείτε να κάνετε μια μεταβλητή καθολική χρησιμοποιώντας την πρόταση εξαγωγής (Bourne) ή setenv (C-SHell):

$ export TEST=test1 $ sh test Μεταβλητή TEST: test1

Μπορείτε να ορίσετε τοπικές τιμές μεταβλητών για την εκτέλεση αυτού του προγράμματος, προηγουμένως με εντολές:

$ TEST=test2 sh test Μεταβλητή TEST: test2

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

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

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

Πιο συγκεκριμένα, μια μεταβλητή περιβάλλοντος μπορεί να είναι τριών τύπων:

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

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

2. Μεταβλητή περιβάλλοντος χρήστη

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

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

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

Κατανόηση Κοινόχρηστων και Συστημάτων Διαμόρφωσης Αρχείων

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

.bashrc

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

.bash_profile

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

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

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

/etc/bash.bashrc

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

/etc/profile

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

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

$ πηγή

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

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

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

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

1. Χρήση env

Η προεπιλεγμένη εντολή είναι " env» παραθέτει όλες τις τρέχουσες μεταβλητές περιβάλλοντος. Αλλά, αν χρησιμοποιηθεί με το κλειδί " -Εγώ”, στη συνέχεια διαγράφει προσωρινά όλες τις μεταβλητές περιβάλλοντος και επιτρέπει στον χρήστη να εκτελέσει την εντολή στην τρέχουσα περίοδο λειτουργίας απουσία όλων των μεταβλητών περιβάλλοντος.

$ env -i ... εντολή args ...

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

$ env -i bash

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

2. Χρήση του Cancel

Ένας άλλος τρόπος για να διαγράψετε μια τοπική μεταβλητή περιβάλλοντος είναι να χρησιμοποιήσετε την εντολή απενεργοποίηση. Για να απενεργοποιήσετε προσωρινά οποιαδήποτε τοπική μεταβλητή περιβάλλοντος,

$unset

Οπου, var-όνομαείναι το όνομα της τοπικής μεταβλητής που θέλετε να διαγράψετε ή να διαγράψετε.

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

Ένας άλλος λιγότερο δημοφιλής τρόπος είναι να ορίσετε το όνομα της μεταβλητής που θέλετε να διαγράψετε σε μια κενή τιμή, π.χ. VAR=(δεν υπάρχει τίποτα μετά τα ίσα - πατήστε enter). Αυτό θα διαγράψει την τιμή της τοπικής μεταβλητής για την τρέχουσα περίοδο λειτουργίας για την οποία είναι ενεργή.

ΣΗΜΕΙΩΣΗ. ΜΠΟΡΕΙΤΕ ΝΑ ΑΛΛΑΞΕΤΕ ΤΙΣ ΜΕΤΑΒΛΗΤΕΣ ΤΟΥ ΣΥΣΤΗΜΑΤΟΣ, ΑΛΛΑ ΟΙ ΑΛΛΑΓΕΣ ΘΑ ΑΝΤΑΝΑΚΛΑΣΤΟΥΝ ΜΟΝΟ ΣΤΗΝ ΤΡΕΧΟΥΣΑ ΣΥΝΕΔΡΙΑ ΚΑΙ ΔΕΝ ΘΑ ΕΙΝΑΙ ΜΟΝΙΜΕΣ.

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

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

1. Ρύθμιση και κατάργηση τοπικών μεταβλητών στο Linux.

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

$ VAR1="Το TecMint είναι ο καλύτερος ιστότοπος για άρθρα Linux" $ echo $VAR1 $ unset VAR1 $ echo $VAR1

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

$ export VAR="Το TecMint είναι ο καλύτερος ιστότοπος για άρθρα Linux" $ echo $VAR $ VAR= $ echo $VAR

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

$ VAR2="Το TecMint είναι ο καλύτερος ιστότοπος για άρθρα Linux" $ echo $VAR2 $ env -i bash $ echo $VAR2

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

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

$ vi .bashrc

.bashrc.

Εξαγωγή CD="This is TecMint Home"

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

$ source .bashrc $ echo $CD

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

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

$ vi .bash_profile

Προσθέστε την ακόλουθη γραμμή στο αρχείο .bash_profile.

Εξαγωγή VAR2="Αυτό είναι το σπίτι της TecMint"

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

$ source .bash_profile $ echo $ var2

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

$ ssh $ echo $ var2

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

ΣΗΜΕΙΩΣΗ. Αυτές οι μεταβλητές θα είναι διαθέσιμες σε κάθε σύνδεση για τον τρέχοντα χρήστη, αλλά όχι για άλλους χρήστες.

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

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

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

Στη συνέχεια διαβάστε ξανά το αρχείο.

$source /etc/bash.bashrc

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

$ echo $VAR $ sudo su $ echo $VAR $ su - $ echo $VAR

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

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

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

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

$source/etc/profile $echo $var1

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

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

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

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

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

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

Για να διαγράψετε αυτήν τη μεταβλητή, απλώς διαγράψτε την καταχώρηση στο αρχείο /etc/περιβάλλονκαι ξαναδιαβάστε το αρχείο.

ΣΗΜΕΙΩΣΗ. Οι αλλαγές τίθενται σε ισχύ όταν το αρχείο διαβάζεται ξανά /etc/περιβάλλον. Αλλά, εάν όχι, ίσως χρειαστεί να αποσυνδεθείτε και να συνδεθείτε ξανά.

Κάντε ερωτήσεις σχετικά με το άρθρο στα σχόλια παρακάτω.

Ευχαριστούμε που αφιερώσατε χρόνο για να διαβάσετε το άρθρο!

Εάν έχετε οποιεσδήποτε ερωτήσεις, ρωτήστε τις στα σχόλια.

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

Για να μάθετε περισσότερα και να ξεχωρίσετε με γνώση ανάμεσα στο πλήθος των ανθρώπων της πληροφορικής, εγγραφείτε σε μαθήματα Cisco από την Ακαδημία Cisco, μαθήματα Linux από το Επαγγελματικό Ινστιτούτο Linux

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

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

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

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

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

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

    2. Μεταβλητές κελύφους χρήστη

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

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

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

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

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

    .bashrc

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

    .bash_profile

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

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

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

    /etc/bash.bashrc

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

    /etc/profile

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

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

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

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

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

    var=τιμή
    $export var=value

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

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

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

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

    env -i εντολή

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

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

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

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

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

    unset variable_name

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

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

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

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

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

    1. Ορίστε και αφαιρέστε τοπικές μεταβλητές στο Linux

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

    VAR1="Απώλεια"
    $ echo $VAR1
    $ καταργήθηκε το VAR1
    $ echo $VAR1

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

    εξαγωγή VAR="Απώλεια"
    $ echo $VAR
    $var=
    $ echo $VAR

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

    VAR2="Απώλεια"
    $ echo $VAR2
    $ env -i bash
    $ echo $VAR2

    Ρύθμιση και κατάργηση μεταβλητών χρήστη

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

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

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

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

    πηγή .bashrc
    $ echo $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

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

    echo $VAR
    $ sudo su
    $ echo $VAR
    $su-
    $ echo $VAR

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

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

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

    πηγή /etc/profile
    $ echo $VAR1

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

    vi /etc/environment

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

    Ελέγχουμε:

    πηγή /etc/environment
    $ echo $VAR12
    $ sudo su
    $ echo $VAR12
    $έξοδος
    $ ssh localhost
    $ echo $VAR12

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

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

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

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

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

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

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

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

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

    ENVIRONMENT="dev"

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

    PATH="$(PATH):/home/user/bin:"

    Προσοχή!

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

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

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

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

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

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

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

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

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

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

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

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

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

    KEY=value1:value2:...

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

    KEY="τιμή με κενά"

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

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

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

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

    Έξοδος μεταβλητών κελύφους και περιβάλλοντος

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

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

    printenv
    SHELL=/bin/bash
    TERM=xterm
    ΧΡΗΣΤΗΣ=δυσφημιστής
    LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd= 40;33;01:or=40;31;01:su=37;41:sg=30;43:ca:...
    MAIL=/var/mail/demouser
    PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
    PWD=/home/demouser
    LANG=en_US.UTF-8
    SHLVL=1
    HOME=/home/demouser
    LOGNAME=διαβολέας
    LESSOPEN=| /usr/bin/lesspipe %s
    LESSCLOSE=/usr/bin/lesspipe %s %s
    _=/usr/bin/printenv

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

    printenv SHELL
    /bin/bash

    Η εντολή env σάς επιτρέπει να αλλάξετε το περιβάλλον στο οποίο εκτελούνται τα προγράμματα περνώντας ένα σύνολο ορισμών μεταβλητών στην εντολή, κάπως έτσι:

    env VAR1="blahblah" command_to_run command_options

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

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

    Πώς βλέπετε όμως τις μεταβλητές φλοιού;

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

    σειρά
    BASH=/bin/bash
    BASHOPTS=checkwinsize:cmdhist:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:login_shell:progcomp:promptvars:sourcepath
    BASH_ALIASES=()
    BASH_ARGC=()
    BASH_ARGV=()
    BASH_CMDS=()
    . . .

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

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

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

    (σύνολο -o posix; σύνολο)

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

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

    comm-23<(set -o posix; set | sort) <(env | sort)

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

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

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

    Βασικές μεταβλητές περιβάλλοντος και κελύφους

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

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

    • ΚΕΛΥΦΟΣ: περιγράφει το κέλυφος που ερμηνεύει τις εισαγόμενες εντολές. Στις περισσότερες περιπτώσεις, το bash ορίζεται από προεπιλογή, αλλά αυτή η τιμή μπορεί να αλλάξει εάν είναι απαραίτητο.
    • ΟΡΟΣ: Καθορίζει το είδος του τερματικού που θα εξομοιωθεί κατά την εκκίνηση του κελύφους. Μπορούν να εξομοιωθούν διαφορετικά τερματικά υλικού ανάλογα με τις λειτουργικές απαιτήσεις. Γενικά, δεν χρειάζεται να ανησυχείτε για αυτό.
    • ΧΡΗΣΤΗΣ: τρέχων χρήστης.
    • ΑΜΕΑ: τρέχων κατάλογος εργασίας.
    • OLDPWD: προηγούμενος κατάλογος εργασίας. Το κέλυφος το διατηρεί σε περίπτωση που εκτελέσετε την εντολή cd -.
    • LS_ΧΡΩΜΑΤΙΣΤΑ: Καθορίζει τους χρωματικούς κωδικούς που χρησιμοποιούνται για τον χρωματικό κώδικα της εξόδου της εντολής ls. Αυτή η έξοδος βοηθά το χρήστη να διαβάσει το αποτέλεσμα της εντολής πιο γρήγορα (για παράδειγμα, να διακρίνει γρήγορα τους τύπους αρχείων).
    • ΤΑΧΥΔΡΟΜΕΙΟ: Διαδρομή προς το τρέχον γραμματοκιβώτιο του χρήστη.
    • ΜΟΝΟΠΑΤΙ: Λίστα καταλόγων στους οποίους έχει πρόσβαση το σύστημα κατά την εκτέλεση εντολών. Όταν ο χρήστης εκτελεί την εντολή, το σύστημα ελέγχει αυτούς τους καταλόγους με την καθορισμένη σειρά για το εκτελέσιμο αρχείο.
    • LANG: Τρέχουσες ρυθμίσεις γλώσσας και τοπικής προσαρμογής, συμπεριλαμβανομένης της κωδικοποίησης χαρακτήρων.
    • ΣΠΙΤΙ: αρχικός κατάλογος του τρέχοντος χρήστη.
    • _ : τελευταία εκτελεσθείσα εντολή.

    Αφού ελέγξετε τη λίστα με τις μεταβλητές περιβάλλοντος, εξετάστε τη λίστα των μεταβλητών φλοιού:

    • BASHOPTS: λίστα επιλογών που χρησιμοποιούνται κατά την εκτέλεση του bash. Αυτό μπορεί να χρησιμοποιηθεί για να ελέγξετε εάν το περιβάλλον λειτουργεί σωστά.
    • ΒΙΑΙΟ ΧΤΥΠΗΜΑ_ΕΚΔΟΧΗ: η τρέχουσα έκδοση του bash σε αναγνώσιμη από τον άνθρωπο μορφή.
    • ΒΙΑΙΟ ΧΤΥΠΗΜΑ_ΠΛΗΡΟΦΟΡΙΕΣ: έκδοση bash σε μορφή αναγνώσιμη από μηχανή.
    • ΣΤΗΛΕΣ: ορίζει το πλάτος της εξόδου σε στήλες.
    • DIRSTACK: η στοίβα των καταλόγων που είναι διαθέσιμοι για τις εντολές pushd και popd.
    • HISTFILESIZE: Ο μέγιστος αριθμός γραμμών που περιέχονται στο αρχείο ιστορικού εντολών.
    • HISTSIZE: Αριθμός εντολών που πρέπει να απομνημονευθούν στη λίστα ιστορικού.
    • HOSTNAME: τρέχον όνομα κεντρικού υπολογιστή.
    • IFS:Εσωτερικό διαχωριστικό για πεδία εισαγωγής στη γραμμή εντολών. Η προεπιλογή είναι ένα κενό.
    • ΥΓ1: ορίζει τη συμβολοσειρά κύριας γραμμής εντολών - την εμφάνιση της γραμμής εντολών κατά την έναρξη μιας περιόδου λειτουργίας φλοιού. Η μεταβλητή PS2 ορίζει τη συμβολοσειρά δευτερεύουσας εντολής εάν η εντολή εκτείνεται σε πολλές γραμμές.
    • SHELLOPTS: επιλογές κελύφους που μπορούν να ρυθμιστούν με σετ.
    • UID: Το μοναδικό αναγνωριστικό του τρέχοντος χρήστη.

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

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

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

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

    TEST_VAR="Γεια σου Κόσμε!"

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

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

    Για να το επιβεβαιώσετε, χρησιμοποιήστε την εντολή grep στο αποτέλεσμα της εντολής set:

    σετ | grep TEST_VAR
    TEST_VAR="Γεια σου Κόσμε!"

    Μπορείτε επίσης να ελέγξετε ότι η δεδομένη μεταβλητή δεν είναι μεταβλητή περιβάλλοντος εκτελώντας το grep στο αποτέλεσμα της εντολής printenv:

    printenv | grep TEST_VAR

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

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

    ηχώ $TEST_VAR
    Γειά σου Κόσμε!

    Όπως μπορείτε να δείτε, για να αναφερθείτε στην τιμή μιας μεταβλητής, πρέπει να χρησιμοποιήσετε το σύμβολο $.

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

    βίαιο χτύπημα
    ηχώ $TEST_VAR

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

    Για να επιστρέψετε στο αρχικό σας κέλυφος, πληκτρολογήστε exit:

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

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

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

    printenv | grep TEST_VAR
    TEST_VAR=Γεια Κόσμε!

    Τώρα αυτή η μεταβλητή εμφανίζεται σε αυτήν τη λίστα. Μπορείτε επίσης να επεκτείνετε ξανά το παιδικό κέλυφος:

    βίαιο χτύπημα
    ηχώ $TEST_VAR
    Γειά σου Κόσμε!

    Εξαιρετική! Το θυγατρικό κέλυφος έλαβε τη μεταβλητή γονικού κελύφους. Δοκιμάστε να εξαγάγετε μια ακόμη μεταβλητή πριν φύγετε από το θυγατρικό κέλυφος.

    εξαγωγή NEW_VAR="Δοκιμή εξαγωγής"

    Ελέγξτε εάν η μεταβλητή έχει εξαχθεί:

    printenv | grep NEW_VAR
    NEW_VAR=Δοκιμή εξαγωγής

    Τώρα επιστρέψτε στο αρχικό κέλυφος:

    Ελέγξτε εάν η δεδομένη μεταβλητή μπορεί να ανοίξει:

    Το αποτέλεσμα δεν επιστρέφεται

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

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

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

    Η μεταβλητή TEST_VAR εξακολουθεί να είναι μεταβλητή περιβάλλοντος. Για να την κάνετε ξανά μεταβλητή φλοιού, πληκτρολογήστε:

    εξαγωγή -n TEST_VAR

    Τώρα αυτή η μεταβλητή δεν είναι πλέον μεταβλητή περιβάλλοντος:

    printenv | grep TEST_VAR

    Αυτή είναι και πάλι μια μεταβλητή φλοιού:

    σετ | grep TEST_VAR
    TEST_VAR="Γεια σου Κόσμε!"

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

    Βεβαιωθείτε ότι δεν υπάρχει πλέον τέτοια μεταβλητή:

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

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

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

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

    Τύποι συνεδρίας κελύφους

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

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

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

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

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

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

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

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

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

    Μια τέτοια περίοδος λειτουργίας διαβάζει τα αρχεία ~/.bash_profile, ~/.bash_login και ~/.profile και δεν διαβάζει άλλα αρχεία.

    Η θυγατρική συνεδρία με τη σειρά της διαβάζει το /etc/baash.bashrc και μετά το αρχείο ~/.bash.rc του χρήστη για την ανάπτυξη του περιβάλλοντος.

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

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

    Όπως μπορείτε να δείτε, οι διαμορφώσεις είναι διάσπαρτες σε διαφορετικά αρχεία.

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

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

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

    Ανοίξτε αυτό το αρχείο:

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

    εξαγωγή VARNAME=τιμή

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

    πηγή ~/.bashrc

    Για να ορίσετε μεταβλητές σε όλο το σύστημα, προσθέστε τις στο /etc/profile, /etc/bash.bashrc ή /etc/environment.

    Αποτελέσματα

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

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

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

    Ετικέτες: ,
    mob_info