8.2.1 Τρέχοντας Προγράμματα

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

Άρα, θυμάστε πως οτιδήποτε σχεδόν στο Linux είναι αρχείο; Λοιπόν, αυτό ισχύει και για τα προγράμματα. Κάθε εντολή που τρέχετε (που δεν είναι ενσωματωμένη στο κέλυφος) βρίσκεται κάπου σε ένα αρχείο. Τρέχετε ένα πρόγραμμα απλά καθορίζοντας το πλήρες μονοπάτι προς αυτό.

Για παράδειγμα, θυμάστε την εντολή su από την προηγούμενη ενότητα; Λοιπόν, στην πραγματικότητα βρίσκεται στον κατάλογο /bin: το /bin/su θα την έτρεχε μια χαρά.

Γιατί λοιπόν, τότε, πληκτρολογώντας απλά su δουλεύει; Εν τέλει δεν είπατε ότι βρίσκεται στο /bin. Θα μπορούσε το ίδιο εύκολα να βρίσκεται στο /usr/local/share, σωστά; Πως ήξερε; Η απάντηση σε αυτό βρίσκεται στην PATH μεταβλητή περιβάλλοντος. Τα περισσότερα κελύφη έχουν είτε την PATH ή κάτι που μοιάζει πολύ με αυτή. Βασικά περιέχει μια λίστα καταλόγων στους οποίους το κέλυφος αναζητά τα προγράμματα που προσπαθείτε να τρέξετε. Έτσι, μόλις τρέξατε την su, το κέλυφος διέτρεξε τη λίστα καταλόγων του, ελέγχοντας κάθε ένα για ένα εκτελέσιμο αρχείο su το οποίο θα μπορούσε να τρέξει. Το πρώτο που βρήκε το έτρεξε. Αυτό συμβαίνει κάθε φορά που τρέχετε ένα πρόγραμμα χωρίς να καθορίσετε ένα πλήρες μονοπάτι προς αυτό. Αν λάβετε ένα σφάλμα “command not found” (η εντολή δεν βρέθηκε), αυτό σημαίνει μόν ότι το πρόγραμμα που προσπαθήσατε να τρέξετε δεν βρίσκεται στο PATH σας. (Φυσικά, αυτό θα συνέβαινε και αν το πρόγραμμα δεν υπάρχει γενικά...) Θα μιλήσουμε για τις μεταβλητές περιβάλλοντος πιο αναλυτικά στην ενότητα 8.3.1.

Θυμηθείτε επίσης ότι το “.” είναι συντομογραφία για τον ενεργό κατάλογο, άρα αν έτυχε να βρίσκεστε στο /bin, το ./su θα δούλευε ως ρητό πλήρες μονοπάτι.