Πώς λειτουργεί το PATH στο Bash

How Does Path Work Bash



Όταν πληκτρολογείτε μια εντολή στο τερματικό Linux, καλείτε γενικά ένα πρόγραμμα για να κάνει μια συγκεκριμένη δουλειά, για παράδειγμα, ls , CD , rm , mkdir κλπ. Όλα αυτά τα προγράμματα βρίσκονται κάπου στο σύστημα αρχείων, σωστά; Πώς γνωρίζει το bash πού βρίσκονται αυτά τα προγράμματα;

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







Μεταβλητή περιβάλλοντος και $ PATH

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



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



  • /usr/bin
  • /usr/sbin
  • /usr/local/bin
  • /usr/local/sbin
  • /είμαι
  • /sbin
  • /snap/bin (εάν είναι εγκατεστημένο το Snap)

Θέλετε να δείτε ποιοι κατάλογοι είναι εγγεγραμμένοι αυτήν τη στιγμή στο PATH; Εκκινήστε ένα τερματικό και εκτελέστε την ακόλουθη εντολή.





$πέταξε έξω $ PATH

Εδώ, το σύμβολο $ είναι για να δηλώσει μια μεταβλητή. ο πέταξε έξω εντολή εκτυπώνει την τιμή της μεταβλητής PATH.



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

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

$πέταξε έξωΓειά σου Κόσμε!

Πού είναι το εκτελέσιμο αρχείο του πέταξε έξω ; Εκτελέστε την επόμενη εντολή για να μάθετε.

$οι οποίες πέταξε έξω

Όπως μπορούμε να δούμε, το πέταξε έξω το εκτελέσιμο βρίσκεται στο/usr/bin/echo. Που βρίσκεται ποιο; Ας ανακαλύψουμε.

$οι οποίες οι οποίες

Βρίσκεται επίσης στη διεύθυνση/usr/bin/which. Τα περισσότερα από τα εργαλεία εντολών βρίσκονται στον κατάλογο /usr /bin. Εδώ, το bash συμβουλεύεται το PATH για τις τοποθεσίες αναζήτησης των εκτελέσιμων εντολών.

Τροποποίηση PATH

Πριν τροποποιήσουμε την τιμή του PATH, είναι σημαντικό να κατανοήσουμε τη δομή του. Εκτελέστε ξανά την εντολή για να ελέγξετε την τιμή του PATH.

$πέταξε έξω $ PATH

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

Προσθήκη καταλόγου στο PATH

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

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

$ήρθα~/.bashrc

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

$εξαγωγή ΜΟΝΟΠΑΤΙ='$ PATH: / '

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

Αποθηκεύστε το αρχείο και πείτε στο bash να το φορτώσει ξανά.

$πηγή~/.bashrc

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

$πέταξε έξω $ PATH

Βοϊλα! Το PATH ενημερώθηκε με επιτυχία! Τώρα, το bash θα αναζητήσει επίσης τη νέα διαδρομή για εκτελέσιμα (α). Έχω ήδη ένα σενάριο demo.sh στην επιφάνεια εργασίας. Ας δούμε αν το bash μπορεί να το καλέσει χωρίς να καθορίσει την ακριβή τοποθεσία.

$demo.sh

Ναι, το bash μπορεί να το καλέσει απευθείας χωρίς κανένα πρόβλημα.

Κατάργηση καταλόγου από το PATH

Δεν υπάρχει απλός τρόπος προσθήκης/αφαίρεσης καταλόγων από το PATH. ΑΣΕ με να εξηγήσω.

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

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

Ας ρίξουμε μια ματιά σε αυτό το παράδειγμα. Είμαι πρόθυμος να αφαιρέσω τον κατάλογο ~/Desktop από το PATH.

$πέταξε έξω $ PATH | sed -Και 's/: ~ /Desktop $ //'

Εάν ο κατάλογος είναι/home/wrong/dir, η εντολή θα μοιάζει με αυτήν.

$πέταξε έξω $ PATH | sed -Και 's/: /home /wrong /dir $ //'

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

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

$εξαγωγή ΜΟΝΟΠΑΤΙ='$ (echo $ PATH | sed -e 's/: ~ /Desktop $ //')'

Εναλλακτικά, μπορείτε επίσης να ορίσετε μη αυτόματα την τιμή PATH. Είναι μια επίπονη διαδικασία αλλά πιο απλή και απλή.

$εξαγωγή ΜΟΝΟΠΑΤΙ=/usr/τοπικός/sbin:/usr/τοπικός/είμαι:/usr/sbin:/usr/είμαι:/sbin:/είμαι:
/usr/Παιχνίδια:/usr/τοπικός/Παιχνίδια:/θραύση/είμαι

Εδώ, η τιμή της εντολής θα εκχωρηθεί στο PATH. Αποθηκεύστε το αρχείο και φορτώστε ξανά το bashrc.

$πηγή~/.bashrc

Ας επαληθεύσουμε το αποτέλεσμα.

$πέταξε έξω $ PATH

Η τιμή PATH ενημερώθηκε!

Τελικές σκέψεις

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

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

$env | είδος

Θέλετε να αρωματίσετε την εμπειρία σας στο bash; Τα ψευδώνυμα Bash προσφέρουν έναν μοναδικό τρόπο επιτάχυνσης και βελτίωσης των πραγμάτων. Μάθετε περισσότερα σχετικά με τα ψευδώνυμα bash Το

Απολαμβάνω!