Η Μεταβλητή PATH

Εικόνα: markos
Submitted by markos on Κυρ, 04/03/2007 - 21:16

Εκτός από τις ενδογενείς εντολές, οι υπόλοιπες εντολές και τα εκτελέσιμα προγράμματα έχουν φυσική υπόσταση στο σύστημα αρχείων του Linux. Το σύστημα αρχείων του Linux, όπως θα δούμε και σε επόμενο κεφάλαιο, οργανώνει τα αρχεία σε καταλόγους. Έτσι τα εκτελέσιμα αρχεία – οι εντολές και τα προγράμματα – βρίσκονται σε καταλόγους όπως /bin, /sbin, /usr/bin, /usr/sbin, κοκ. Αντίθετα, τα αρχεία ρυθμίσεων βρίσκονται στον κατάλογο /etc, ενώ οι βιβλιοθήκες στους καταλόγους /lib, /usr/lib. Το κέλυφος θα πρέπει να ξέρει σε ποιο κατάλογο θα αναζητήσει τις εντολές που θα του ζητήσουμε να εκτελέσει, ή αλλιώς ποια διαδρομή θα χρησιμοποιήσει για να βρεί την εκάστοτε εντολή. Αυτό επιτυγχάνεται με τη μεταβλητή περιβάλλοντος (environment variable) PATH.

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

Στην περίπτωση που ένας κατάλογος δεν υπάρχει μέσα στη μεταβλητή PATH, οποιοδήποτε εκτελέσιμο πρόγραμμα ή εντολή σε αυτόν, θα πρέπει να κληθεί με την πλήρη διαδρομή (full path).Για παράδειγμα, για να εκτελέσει ένας απλός χρήστης την εντολή ifconfig, στην οποία έχει άμεση πρόσβαση μόνο ο χρήστης root1, θα πρέπει να δώσει στην προτροπή του κελύφους:

$ /sbin/ifconfig

Επίσης για να εκτελεστεί ένα πρόγραμμα που βρίσκεται στον τρέχοντα κατάλογο θα πρέπει θα χρησιμοποιηθεί το πρόθεμα “./”. Το ”./” είναι η διαδρομή ενός αρχείο στον τρέχοντα κατάλογο. Θα μπορούσε κάποιος να το προσθέσει στη μεταβλητή PATH, αλλά αυτή η τεχνική δε συνιστάται καθώς αφήνει περιθώρια για “Δούρειους Ίππους” (trojan horses), προγράμματα δηλαδή που έχουν ως σκοπό το συμβιβασμό της ασφάλειας του συστήματος.
Η προκαθορισμένη τιμή της μεταβλητής PATH για ένα απλό χρήστη είναι η εξής:

PATH=/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/games

ενώ για το χρήστη root:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11

Ο χρήστης root έχει επιπλέον και τους καταλόγους sbin (που περιέχουν εντολές και προγράμματα απαραίτητα για την διαχείριση του συστήματος, αλλά περιττά ή και επικίνδυνα για έναν απλό χρήστη). Αυτά ισχύουν για το Debian GNU/Linux. Άλλες διανομές ή λειτουργικά συστήματα πιθανόν να έχουν διαφορετικές προκαθορισμένες τιμές για την διαδρομή PATH.