Πώς να προσθέσετε έναν κατάλογο στο $PATH σας στο Linux

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

Τι είναι το $PATH στο Linux και πώς λειτουργεί;

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

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

Το πρώτο βήμα που κάνει το φλοιό για να εντοπίσει το εκτελέσιμο αρχείο είναι να προσδιορίσει εάν ένα δυαδικό αρχείο εμπλέκεται καν. Εάν η εντολή που χρησιμοποιείτε βρίσκεται μέσα στο ίδιο το κέλυφος (α “ενσωματωμένο κέλυφος”) δεν απαιτείται περαιτέρω αναζήτηση.

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

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

Αν θέλετε να δείτε αν μια εντολή είναι α ενσωματωμένο κέλυφος, ένα ψευδώνυμο, μια συνάρτηση ή ένα αυτόνομο δυαδικό mv /work/unfile, μπορείτε να χρησιμοποιήσετε την εντολή type όπως φαίνεται παρακάτω:

type clear
type cd

ο

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

Δεν αποτελεί έκπληξη το γεγονός ότι το cd είναι ένα ενσωματωμένο κέλυφος.

Καταχώριση του $PATH σας

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

echo $PATH

ο

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

  Πώς να εγκαταστήσετε το Signal Privacy Messenger στο Linux

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

/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/αποθήκη
/usr/games
/usr/local/games
/snap/bin

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

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

Για να το δείξουμε αυτό, δημιουργήσαμε ένα μικρό πρόγραμμα που ονομάζεται rf. Όταν εκτελείται, το rf εκτυπώνει το όνομα του καταλόγου από τον οποίο ξεκίνησε στο παράθυρο του τερματικού. Βρίσκεται στο /usr/local/bin. Έχουμε επίσης μια νεότερη έκδοση στον κατάλογο /dave/work.

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

which rf

ο

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

Πληκτρολογούμε τα εξής για να ενεργοποιηθεί:

rf

ο

Η έκδοση 1.0 του rf τρέχει και επιβεβαιώνει ότι οι προσδοκίες μας ήταν σωστές. Η έκδοση που βρέθηκε και εκτελέστηκε βρίσκεται στο /usr/local/bin.

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

./work/rf

ο

Τώρα που είπαμε στο κέλυφος πού να βρει την έκδοση του rf που θέλουμε να τρέξουμε, χρησιμοποιεί την έκδοση 1.1. Αν προτιμάμε αυτήν την έκδοση, μπορούμε να την αντιγράψουμε στον κατάλογο /usr/local/bin και να αντικαταστήσουμε την παλιά.

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

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

Εάν προσθέσουμε τον κατάλογο εργασίας μας στη διαδρομή, κάνουμε το κέλυφος να βρει την έκδοσή μας. Και αυτή η αλλαγή θα επηρεάσει μόνο εμάς — άλλοι θα εξακολουθούν να χρησιμοποιούν την έκδοση του rf στο /usr/local/bin .

  Πώς να εκτελέσετε Linux σε Android με Linux Deploy

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

Μπορείτε να χρησιμοποιήσετε την εντολή εξαγωγής σε προσθέστε έναν κατάλογο στο $PATH. Στη συνέχεια, ο κατάλογος περιλαμβάνεται στη λίστα των τοποθεσιών του συστήματος αρχείων που αναζητά το κέλυφος. Όταν το κέλυφος βρει ένα αντίστοιχο εκτελέσιμο αρχείο, σταματά την αναζήτηση, επομένως θέλετε να βεβαιωθείτε ότι αναζητά πρώτα τον κατάλογό σας, πριν από το /usr/local/bin.

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

export PATH=/home/dave/work:$PATH

ο

Αυτή η εντολή ορίζει το $PATH να είναι ίσο με τον κατάλογο που προσθέτουμε, /home/dave/work και, στη συνέχεια, ολόκληρη την τρέχουσα διαδρομή.

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

Ας δούμε πώς μοιάζει τώρα το μονοπάτι:

echo $PATH

ο

Ο κατάλογός μας /home/dave/work προστίθεται στην αρχή της διαδρομής. Το άνω και κάτω τελεία που δώσαμε το χωρίζει το υπόλοιπο μονοπάτι.

Πληκτρολογούμε τα εξής για να επαληθεύσουμε ότι η έκδοση του rf είναι η πρώτη που βρέθηκε:

which rf

ο

Η απόδειξη στην πουτίγκα είναι το τρέξιμο rf, όπως φαίνεται παρακάτω:

rf

ο

Το κέλυφος βρίσκει την έκδοση 1.1 και την εκτελεί από το /home/dave/work.

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

export PATH=$PATH:/home/dave/work

Κάνοντας τις Αλλαγές Μόνιμες

Οπως και Μπεθ Μπρουκ-Μαρκίνιακ είπε, «Η επιτυχία είναι ωραία, αλλά η επιτυχία είναι φευγαλέα». Τη στιγμή που κλείνετε το παράθυρο του τερματικού, όλες οι αλλαγές που έχετε κάνει στο $PATH έχουν φύγει. Για να τα κάνετε μόνιμα, πρέπει να βάλετε την εντολή εξαγωγής σε ένα αρχείο διαμόρφωσης.

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

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

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

  Πώς να αποκρύψετε αρχεία στο Linux και να τα ασφαλίσετε

Χρησιμοποιήστε την ακόλουθη εντολή στον κατάλογο /home για να επεξεργαστείτε το αρχείο .bashrc:

gedit .bashrc

ο

Το πρόγραμμα επεξεργασίας gedit ανοίγει με φορτωμένο το αρχείο .bashrc.

Ο επεξεργαστής gedit με το

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

export PATH=/home/dave/work:$PATH

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

. .bashrc

Στη συνέχεια, πληκτρολογήστε την ακόλουθη εντολή echo για να ελέγξετε τη διαδρομή:

echo $PATH

ο

Αυτό προσθέτει τον κατάλογο /home/dave/work στην αρχή της διαδρομής.

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

gedit .profile

ο

Το πρόγραμμα επεξεργασίας gedit ξεκινά με φορτωμένο το αρχείο .profile.

Ο επεξεργαστής gedit με το

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

. .profile

Καθορίζοντας το μονοπάτι για όλους

Για να ορίσετε τη διαδρομή για όλους όσους χρησιμοποιούν το σύστημα, μπορείτε να επεξεργαστείτε το αρχείο /etc/profile.

Θα χρειαστεί να χρησιμοποιήσετε το sudo, ως εξής:

sudo gedit /etc/profile

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

Ο επεξεργαστής gedit με το

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

Σημείωση για την ασφάλεια

Βεβαιωθείτε ότι δεν προσθέσατε κατά λάθος μια άνω τελεία «:» στη διαδρομή, όπως φαίνεται παρακάτω.

ο

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

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

Επομένως, να είστε πάντα προσεκτικοί όταν πληκτρολογείτε τις εντολές εξαγωγής. Χρησιμοποιήστε το echo $PATH για να τα ελέγξετε και να βεβαιωθείτε ότι είναι όπως θέλετε να είναι.