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

Οι μεταβλητές περιβάλλοντος στο 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 / προφίλ

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

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

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

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

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

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

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

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

1. Χρήση env

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

env –i εντολή

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

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

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

2. Χρήση μη ρυθμισμένου

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

μη καθορισμένο όνομα_μεταβλητής

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

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

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

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

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

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

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

VAR1 = "Losst"
$ echo $ VAR1
$ μη ρυθμισμένο VAR1
$ echo $ VAR1

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

εξαγωγή VAR = "Losst"
$ echo $ VAR
$ VAR =
$ echo $ VAR

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

VAR2 = "Losst"
$ echo $ VAR2
$ env -i bash
$ echo $ VAR2

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

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

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

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

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

πηγή .bashrc
CD echo $ CD

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

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

vi .bash_profile

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

εξαγωγή VAR2 = "Αυτό είναι το Losst Home"

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

πηγή .bash_profile
$ echo $ VAR2

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

ssh [προστασία ηλεκτρονικού ταχυδρομείου]
$ echo $ VAR2

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

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

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

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

vi /etc/bash.profile

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

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

πηγή /etc/bash.bashrc

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

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

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

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

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

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

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

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

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

Ελέγχουμε:

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

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

Ετσι:

Εξαγωγή PATH = ~ / opt / bin: $ PATH

Εξαγωγή PATH = $ PATH: ~ / opt / bin

11 απαντήσεις

Απλό υλικό

PATH = $ PATH: / opt / bin PATH = ~ / opt / bin: $ PATH

ανάλογα με το αν θέλετε να προσθέσετε ~ / opt / bin στο τέλος (για αναζήτηση σε όλους τους άλλους καταλόγους εάν υπάρχει πρόγραμμα με το ίδιο όνομα σε πολλούς καταλόγους) ή στην αρχή (για αναζήτηση πριν από όλους τους άλλους καταλόγους).

Μπορείτε να προσθέσετε πολλές καταχωρήσεις ταυτόχρονα. PATH = $ PATH: / opt / bin: ~ / opt / node / bin ή οι αλλαγές στη σειρά είναι μια χαρά.

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

Εάν το PATH δημιουργείται από πολλά διαφορετικά στοιχεία, μπορεί να καταλήξετε σε διπλές καταχωρήσεις. Δείτε Πώς να προσθέσετε τη διαδρομή του αρχικού καταλόγου που θα εντοπιστεί από το Unix, ποια είναι η εντολή; και Κατάργηση διπλών καταχωρίσεων $ PATH με εντολή awk για αποφυγή διπλότυπων ή κατάργησής τους.

Πού να βάλετε

Λάβετε υπόψη ότι το ~ / .bash_rc δεν είναι αναγνώσιμο από κανένα πρόγραμμα και το ~ / .bashrc είναι το αρχείο διαμόρφωσης για διαδραστικές παρουσίες bash. Δεν χρειάζεται να ορίσετε μεταβλητές περιβάλλοντος στο ~ / .bashrc. Το σωστό μέρος για να ορίσετε μεταβλητές περιβάλλοντος όπως το PATH είναι το ~ / .profile (ή το ~ / .bash_profile εάν δεν σας αρέσουν τα κελύφη εκτός από το bash). Δείτε Ποια είναι η διαφορά μεταξύ των δύο και ποια πρέπει να χρησιμοποιήσω;

Σημειώσεις για κελύφη που δεν είναι bash

Σε bash, ksh και zsh, η εξαγωγή είναι ειδική σύνταξη και τόσο PATH = ~ / opt / bin: $ PATH όσο και εξαγωγή PATH = ~ / opt / bin: $ PATH κάντε το σωστό πράγμα ακόμη. Σε άλλα κελύφη Bourne / POSIX, όπως η παύλα (η οποία είναι / bin / sh σε πολλά συστήματα), η εξαγωγή αναλύεται ως κανονική εντολή, η οποία συνεπάγεται δύο διαφορές:

  • ~ αναλύεται μόνο στην αρχή μιας λέξης, εκτός από τις εργασίες (δείτε Πώς να προσθέσετε μια διαδρομή αρχικού καταλόγου που θα εντοπιστεί από το Unix που απαιτεί εντολή ;;
  • Τα εξωτερικά διπλά εισαγωγικά $ PAT σπάνε εάν το PATH περιέχει κενά ή \ [*; ...

Έτσι, σε κελύφη όπως παύλες, εξάγετε PATH = ~ / opt / bin: $ PATH ορίζει το PATH στην κυριολεκτική συμβολοσειρά ~ / opt / bin /: ακολουθούμενο από την τιμή PATH μέχρι την πρώτη θέση. PATH = ~ / opt / bin: $ PATH (απλή ανάθεση) δεν απαιτεί εισαγωγικά και κάνει τα πάντα σωστά. Εάν θέλετε να χρησιμοποιήσετε εξαγωγή σε φορητό σενάριο, πρέπει να γράψετε εξαγωγή PATH = "$ HOME / opt / bin: $ PATH" ή PATH = ~ / opt / bin: $ PATH export PATH (ή PATH = $ HOME / opt / bin: $ PATH PATH export για φορητότητα ακόμη και για το κέλυφος Bourne, το οποίο δεν δέχεται εξαγωγή var = value και δεν κάνει επέκταση tilde).

¹ Αυτό δεν ίσχυε στα κελύφη του Bourne (όπως στο πραγματικό κέλυφος του Bourne, όχι στα μοντέρνα κελύφη τύπου POSIX), αλλά είναι απίθανο να συναντήσετε αυτές τις παλιές κελύφους αυτές τις μέρες. Sub>

Λειτουργεί ούτως ή άλλως, αλλά δεν κάνουν το ίδιο: Τα στοιχεία PATH ελέγχονται από αριστερά προς τα δεξιά. Στο πρώτο παράδειγμα, τα εκτελέσιμα στο ~ / opt / bin θα έχουν προτεραιότητα έναντι των εγκατεστημένων, για παράδειγμα, στο / usr / bin, το οποίο μπορεί να είναι ή όχι αυτό που θέλετε.

Συγκεκριμένα, από την άποψη της ασφάλειας, είναι επικίνδυνο να προσθέσετε διαδρομές στο μπροστινό μέρος, διότι εάν κάποιος μπορεί να αποκτήσει πρόσβαση εγγραφής στο ~ / opt / bin σας, μπορεί να βάλει για παράδειγμα ένα άλλο ls, το οποίο πιθανότατα θα χρησιμοποιήσετε αντί για / bin / ls χωρίς να το παρατηρήσετε. Τώρα φανταστείτε το ίδιο για το ssh ή το πρόγραμμα περιήγησης ή την επιλογή σας ... (Βάλτε το ίδιο τρεις φορές στο δρόμο σας.)

Έχω μπερδευτεί για την ερώτηση 2 (καθώς αφαιρέθηκε από την ερώτηση καθώς σχετίζεται με άσχετο θέμα):

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

PATH εξαγωγής = $ PATH: ~ / opt / bin export PATH = $ PATH: / opt / node / bin

Αλλά αυτό δεν συμβαίνει επειδή η δεύτερη ανάθεση όχι μόνο προσθέτει ~ / opt / node / bin, αλλά και την προηγούμενη εκχώρηση PATH.

Αυτή είναι μια πιθανή λύση:

Εξαγωγή PATH = $ PATH: / opt / bin: ~ / opt / node / bin

Αλλά για την αναγνωσιμότητα, θα προτιμούσα να έχω μια ανάθεση για ένα μονοπάτι.

Αν λέτε

PATH = ~ / opt / bin

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

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

Εξαγωγή PATH = / opt / bin: / usr / local / bin: / usr / contrib / bin: / bin: / usr / bin: / usr / sbin: / usr / bin / X11 # προσθέστε προαιρετικά στοιχεία στη διαδρομή για bindir σε $ HOME / local / bin $ HOME / bin? κάντε εάν [-d $ bindir]; τότε PATH = $ PATH: $ (bindir) fi ολοκληρωμένο

Το Linux ορίζει μια εκτελέσιμη διαδρομή αναζήτησης με τη μεταβλητή περιβάλλοντος $ PATH. Για να προσθέσετε τον κατάλογο / δεδομένα / myscripts στην αρχή της μεταβλητής περιβάλλοντος $ PATH, χρησιμοποιήστε τα εξής:

PATH = / data / myscripts: $ PATH

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

PATH = $ PATH: / data / myscripts

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

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

$ HOME / myscript.sh πηγή $ HOME / myscript.sh

Η συμπερίληψη περιλαμβάνει βασικά ένα σενάριο "καλούμενου" σε ένα σενάριο "κλήσης". Αυτό είναι παρόμοιο με το #include in C. Έτσι, είναι αποτελεσματικό μέσα σε ένα σενάριο ή ένα πρόγραμμα επίκλησης. Αλλά φυσικά αυτό δεν είναι αποτελεσματικό για οποιαδήποτε προγράμματα ή σενάρια που καλούνται από το πρόγραμμα κλήσης. Για να είναι αποτελεσματική μέχρι την αλυσίδα κλήσεων, πρέπει να ακολουθήσετε τη ρύθμιση της μεταβλητής περιβάλλοντος με την εντολή εξαγωγής.

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

PATH = $ PATH: / data / myscripts export PATH

βάζει αποτελεσματικά αυτές τις 2 γραμμές κώδικα σε ένα πρόγραμμα bash. Έτσι, στο bash, η μεταβλητή $ PATH περιλαμβάνει $ HOME / myscript.sh και λόγω της δήλωσης εξαγωγής, τα προγράμματα που επικαλούνται το bash έχουν αλλάξει τη μεταβλητή $ PATH. Και δεδομένου ότι οποιαδήποτε προγράμματα που εκτελείτε από μια εντολή bash καλούνται από bash, η νέα διαδρομή ισχύει για οτιδήποτε εκτελείτε από μια προτροπή bash.

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

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

Το pathadd παίρνει ένα όρισμα διαδρομής και ένα προαιρετικό μετά από όρισμα το οποίο, αν προστεθεί, θα προστεθεί στο PATH, διαφορετικά θα το προσθέσει.

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

Pathadd () (newelement = $ (1% /) if [-d "$ 1"] &&! Echo $ PATH | grep -E -q "(^ | :) $ newelement ($ | :)"; τότε αν [ "$ 2" = "μετά"]; στη συνέχεια PATH = "$ PATH: $ newelement" else PATH = "$ newelement: $ PATH" fi fi) pathrm () (PATH = "$ (echo $ PATH | sed -e" s; \ ( ^ \ |: \) $ (1% /) \ (: \ | \ $ \); \ 1 \ 2; g "-e" s; ^: \ |: $ ;; g "-e "s; ::;:; g") ")

Βάλτε τα σε όποιο σενάριο θέλετε να αλλάξετε το περιβάλλον PATH και τώρα μπορείτε να το κάνετε.

Pathadd " / foo / bar" pathadd " / baz / bat" μετά την εξαγωγή PATH

Είστε εγγυημένοι ότι δεν θα προσθέσετε μια διαδρομή εάν υπάρχει ήδη. Αν θέλετε / baz / bat να τρέξει στην αρχή.

Pathrm " / baz / bat" pathadd " / baz / bat" PATH export "

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

Αδιάβροχη μέθοδος προσθήκης / προετοιμασίας

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

Το σημαντικό σημείο είναι ότι ακόμη και αν τα σενάρια συστήματος δεν χρησιμοποιούν αυτό (αναρωτιέμαι γιατί) * 1, ο αλεξίσφαιρος τρόπος για να προσθέσετε μια διαδρομή (όπως $ HOME / bin) στη μεταβλητή περιβάλλοντος PATH

PATH = "$ (PATH: + $ (PATH) :) $ HOME / bin"

για προσθήκη (αντί για PATH = "$ PATH: $ HOME / bin") και

PATH = "$ HOME / bin $ (PATH: +: $ (PATH))"

για προσθήκη (αντί για PATH = "$ HOME / bin: $ PATH")

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

$ (παράμετρος: + λέξη)

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

Έτσι $ (PATH: + $ (PATH) :) επεκτείνεται σε: 1) τίποτα αν το PATH είναι μηδενικό ή μη ρυθμισμένο, 2) $ (PATH): εάν έχει οριστεί PATH.

Σημείωση... Αυτό είναι για bash.

* 1 Μόλις διαπίστωσα ότι σενάρια όπως το devtoolset-6 / enable χρησιμοποιούν πραγματικά αυτό, $ cat / opt / rh / devtoolset-6 / enable # Γενικές μεταβλητές περιβάλλοντος εξαγωγή PATH = / opt / rh / devtoolset-6 / root / usr / bin $ (PATH: +: $ (PATH)) ...

Δεν μπορώ να μιλήσω για άλλες διανομές, αλλά το Ubuntu έχει ένα αρχείο, / etc / environment, το οποίο είναι η προεπιλεγμένη διαδρομή αναζήτησης για όλους τους χρήστες. Δεδομένου ότι ο υπολογιστής μου χρησιμοποιείται μόνο από εμένα, βάζω εκεί οποιονδήποτε κατάλογο θέλω, εκτός αν πρόκειται για προσωρινή προσθήκη που έβαλα στο σενάριο.

Για μένα (σε Mac OS X 10.9.5) η προσθήκη του ονόματος διαδρομής (π.χ. / mypathname) στο αρχείο / etc / paths λειτούργησε πολύ καλά.

Το Echo $ PATH επιστρέφεται πριν από την επεξεργασία:

/ usr / bin: / bin: / usr / sbin: / sbin: / usr / local / bin

Μετά την επεξεργασία των διαδρομών / etc / και την επανεκκίνηση του κελύφους, η μεταβλητή $ PATH προστίθεται με / όνομα διαδρομής. Πράγματι, το echo $ PATH επιστρέφει:

/ usr / bin: / bin: / usr / sbin: / sbin: / usr / local / bin: / mypathname

Έτυχε το / mypathname να προστεθεί στη μεταβλητή $ PATH.

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

Βήματα

  1. 1 Βρείτε την τρέχουσα διαδρομή πληκτρολογώντας echo $ PATH.Θα ανοίξει μια λίστα καταλόγου όπως φαίνεται παρακάτω (παράδειγμα):
  2. 2 Προσθέστε προσωρινά:/ sbin και: / usr / sbin: στην τρέχουσα διαδρομή εισάγοντας την εντολή:
  3. 3 Για να επιβεβαιώσετε ότι η μεταβλητή PATH έχει αλλάξει, εισαγάγετε την εντολή:
    • [προστασία ηλεκτρονικού ταχυδρομείου]: ~ $ echo $ PATH / home / uzair / bin: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / games
    • Θυμηθείτε ότι οι αλλαγές που κάνετε είναι προσωρινές και θα ακυρωθούν κατά την επανεκκίνηση του συστήματός σας.
  4. 4 Βεβαιωθείτε ότι τα προγράμματα με προσωρινή μεταβλητή λειτουργούν σωστά.
  5. 5 Για να κάνετε μόνιμες αλλαγές στη μεταβλητή PATH, προσθέστε την ίδια γραμμή στο αρχείο ~ / .bashrc

Προειδοποιήσεις

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

Τι είναι? Πολλές από τις εντολές που εισάγετε στη γραμμή εντολών απαιτούν εξωτερικό πρόγραμμα για φόρτωση από το σύστημα αρχείων. Για παράδειγμα, εντολές όπως mkdir και wc βρίσκονται στην πραγματικότητα στο φάκελο / bin.

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


Αλλά πώς, αν υπάρχει στο σύστημα αρχείων, το Linux γνωρίζει ποια προγράμματα πρέπει να εκτελούνται από ποιους καταλόγους; Το λειτουργικό σύστημα χρησιμοποιεί τη μεταβλητή περιβάλλοντος συστήματος για να καθορίσει ένα υποσύνολο φακέλων για εμφάνιση όταν λαμβάνεται μια άγνωστη εντολή. Αυτή η μεταβλητή ονομάζεται PATH και μπορεί να εμφανιστεί με την ακόλουθη εντολή echo (απαιτείται ο χαρακτήρας $):

Echo $ PATH

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

/ usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / games

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

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

Για παράδειγμα, κατεβάσατε το βοηθητικό πρόγραμμα ημερολογίου από το Διαδίκτυο στον αρχικό σας φάκελο. Εάν εισαγάγετε το όνομά του στη γραμμή εντολών, θα λάβετε ένα μήνυμα σφάλματος επειδή βρίσκεται σε ένα φάκελο που δεν περιλαμβάνεται στη διαδρομή συστήματος. Για να εκτελέσετε αυτό το πρόγραμμα, εισαγάγετε την ακόλουθη γραμμή (θυμηθείτε, ~ είναι η συντομογραφία για τον αρχικό σας φάκελο):

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

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

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

  • / etc / προφίλ
  • . / .bash_profile
  • ~ / .bash_login
  • ~ / .προφίλ

(με αυτή τη σειρά) και εκτελεί τις εντολές που περιέχουν. Αν κτυπώ δυνατάεπαναλαμβάνεται από τη γραμμή εντολών σε διαδραστική λειτουργία (δηλαδή, να μην εκτελείται καμία εντολή), στη συνέχεια βρίσκει το αρχείο ~ / .bashrc και εκτελεί τις εντολές που περιέχει. Ωστόσο, στη διανομή Mandrake, το αρχείο ~ / .bashrc καλείται επίσης για το κέλυφος σύνδεσης, και το αρχείο σε όλο το σύστημα / etc / bashrc καλείται επίσης από αυτό. Έτσι, όπως μπορείτε να δείτε, υπάρχουν επιλογές εδώ.

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

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

Αρχικά, κοιτάξτε τις προεπιλεγμένες μεταβλητές περιβάλλοντος. Όπως είπαμε στο αίρεση. 5.6, αυτό μπορεί να γίνει χρησιμοποιώντας τις εντολές σειρά(και μια παρόμοια εντολή γραφομηχανή) ή env... Η τιμή που εκχωρείται σε μια μεμονωμένη μεταβλητή μπορεί να προβληθεί χρησιμοποιώντας την εντολή echo $ name, όπου όνομαΕίναι το όνομα της μεταβλητής.

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

Η μεταβλητή PATH δημιουργείται σε δύο δέσμες ενεργειών: / etc / profile (διαδρομές κοινές για όλους τους χρήστες) και σε μία από τις δέσμες ενεργειών χρήστη (για παράδειγμα, ~ / .bash_profile), όπου ο χρήστης μπορεί να προσθέσει διαδρομές στη λίστα που δημιουργήθηκε προηγουμένως κατά βούληση Το Απλώς μην το κάνετε στο ~ / bashrc, αφού το τελευταίο επανεκκινείται κάθε φορά που ξεκινάτε το δεύτερο, τρίτο κλπ. Κέλυφος. Για να προσθέσετε τη διαδρομή στη μεταβλητή PATH, εισαγάγετε την ακόλουθη γραμμή στο επιλεγμένο σενάριο (σε αυτό το παράδειγμα, η διαδρομή / home / user / bin προστίθεται στη λίστα):

PATH = $ PATH: / home / user / bin

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

Σε αντίθεση με το MS-DOS, το Linux δεν αναζητά εκτελέσιμο αρχείο στον τρέχοντα κατάλογο. Επομένως, εάν θέλετε η αναζήτηση να εκτελείται στον τρέχοντα κατάλογο, πρέπει να προσθέσετε και αυτόν τον κατάλογο (θυμηθείτε ότι έχει όνομα που αποτελείται από μία περίοδο) στη μεταβλητή PATH. Αλλά λάβετε υπόψη ότι από την άποψη της ασφάλειας, η προσθήκη του τρέχοντος καταλόγου στη λίστα των διαδρομών αναζήτησης είναι απαράδεκτη, καθώς ένας εισβολέας μπορεί να τοποθετήσει ένα κακόβουλο πρόγραμμα που πήρε το όνομά του από ένα από τα συχνά χρησιμοποιούμενα βοηθητικά προγράμματα συστήματος σε έναν από τους διαθέσιμους καταλόγους γράφοντας. Και όταν εκτελείτε αυτό το πρόγραμμα, πιστεύοντας ότι εκτελείτε ένα βοηθητικό πρόγραμμα συστήματος, μπορεί να κάνει πολύ κακό στο σύστημά σας, ειδικά αν το εκτελείτε ως υπερχρήστης.

Εάν θέλετε, μπορείτε να "διακοσμήσετε τη ζωή σας" ελαφρώς, συμπεριλαμβάνοντας την έξοδο χρώματος στην εντολή ls(αν είναι ασπρόμαυρο από προεπιλογή). Για να το κάνετε αυτό, επεξεργαστείτε το αρχείο / etc / bashrc, στο οποίο προσθέτουμε τη γραμμή:

ψευδώνυμο ls = "ls -F --χρώμα"

Παρεμπιπτόντως, εάν θέλετε το Midnight Comma nder στο παράθυρο εξομοιωτή τερματικού να είναι έγχρωμο και όχι ασπρόμαυρο, τότε ορίστε τη μεταβλητή ΧΡΩΜΑΤΙΣΜΟΣ:

ΧΡΩΜΑ =; εξαγωγή COLORTERM

V. Kostromin (kos στο rus -linux dot net) - 8.8. Ρύθμιση του περιβάλλοντος του χρήστη
Συνεχίζοντας το θέμα:
συσκευές

Το Photoshop (FS) λύνει πολλά προβλήματα, από ένα σπυράκι μέχρι ένα μεγάλο πίνακα στο πάτωμα του σπιτιού. Για να το κάνει αυτό, έχει ένα σύνολο εργαλείων για κάθε γούστο. Η συμμετρία είναι σημαντική ...

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