Οι μεταβλητές είναι ένας τρόπος να περάσουμε πληροφορίες από το κέλυφος στα προγράμματα όταν τα εκτελούμε. Τα προγράμματα κοιτάζουν "το περιβάλλον" για συγκεκριμένες μεταβλητές και αν τις βρουν, χρησιμοποιούν τις τιμές τους. Μερικές από τις μεταβλητές ορίζονται από το σύστημα, άλλες από εσάς και άλλες από το κέλυφος ή οποιοδήποτε πρόγραμμα φορτώνει ένα άλλο πρόγραμμα.
Οι τυποποιημένες μεταβλητές του UNIX χωρίζονται σε δύο κατηγορίες, τις μεταβλητές περιβάλλοντος και τις μεταβλητές κελύφους. Σε γενικές γραμμές, οι μεταβλητές κελύφους εφαρμόζονται μόνο στο κέλυφος που εκτελείται τη δεδομένη στιγμή και χρησιμοποιούνται για να θέσουν συνθήκες εργασίες για κάποιο μικρό χρονικό διάστημα. Οι μεταβλητές περιβάλλοντος έχουν μεγαλύτερη επίδραση, και αυτές που τίθενται κατά την είσοδο σας στο σύστημα είναι έγκυρες για όσο διάστημα παραμένετε συνδεδεμένοι. Κατά σύμβαση, οι μεταβλητές περιβάλλοντος έχουν ονόματα με ΚΕΦΑΛΑΙΑ ΓΡΑΜΜΑΤΑ ενώ οι μεταβλητές κελύφους με μικρά.
Ένα παράδειγμα μεταβλητής περιβάλλοντος είναι η μεταβλητή OSTYPE. Η τιμή της είναι το λειτουργικό σύστημα που χρησιμοποιείτε. Πληκτρολογήστε:
% echo $OSTYPE
Μερικά ακόμα παραδείγματα μεταβλητών περιβάλλοντος είναι:
Οι μεταβλητές τύπου ENVIRONMENT (περιβάλλοντος) μπορούν να τεθούν με την setenv και να απεικονιστούν με τη χρήση της printenv ή env. Μπορούν να διαγραφούν με την χρήση της unsetenv.
Για να δείτε τις τιμές όλων αυτών των μεταβλητών, πληκτρολογήστε:
% printenv | less
Ένα παράδειγμα μεταβλητής του κελύφους, είναι η μεταβλητή που σχετίζεται με την τήρηση ιστορικού. Η τιμή αυτής της μεταβλητής αναφέρεται στο πόσες εντολές θα θυμάται το κέλυφος, επιτρέποντας έτσι στο χρήστη να ανατρέξει στις εντολές που έχει ήδη εκτελέσει. Πληκτρολογήστε:
% echo $history
Περισσότερα παραδείγματα μεταβλητών κελύφους είναι:
Οι μεταβλητές του κελύφους μπορούν να τεθούν και να απεικονιστούν χρησιμοποιώντας την εντολή set. Μπορούν επίσης να διαγραφούν με την εντολή unset command.
Για να δείτε τις τιμές όλων αυτών των μεταβλητών, πληκτρολογήστε:
% set | less
Σε γενικές γραμμές, οι μεταβλητές περιβάλλοντος και κελύφους που έχουν το ίδιο όνομα (εκτός από το γεγονός ότι οι μεν είναι κεφαλαία και οι δε μικρά) είναι χωριστές και ανεξάρτητες εκτός από το γεγονός ότι πιθανόν έχουν τις ίδιες αρχικές τιμές. Ωστόσο υπάρχουν και εξαιρέσεις.
Κάθε φορά που αλλάζουν οι μεταβλητές κελύφους home, user και term ανανεώνονται και οι αντίστοιχες μεταβλητές περιβάλλοντος HOME, USER και TERM. Ωστόσο αν ανανεωθούν πρώτα οι μεταβλητές περιβάλλοντος, οι αντίστοιχες του κελύφους δεν αλλάζουν τιμή.
Οι μεταβλητές PATH και path καθορίζουν τους καταλόγους που ανιχνεύονται για την εύρεση εντολών και προγραμμάτων. Και οι δύο μεταβλητές πάντοτε αντιπροσωπεύουν την ίδια λίστα καταλόγων - όποια από τις δύο και αν αλλάξει, η άλλη ανανεώνεται αυτόματα.
Κάθε φορά που εισέρχεστε στο UNIX σύστημα σας, το σύστημα ψάχνει στον προσωπικό σας κατάλογο για αρχεία αρχικοποίησης. Οι πληροφορίες σε αυτά τα αρχεία χρησιμοποιούνται για να ρυθμίσουν τις παραμέτρους του προσωπικού σας περιβάλλοντος. Τα κελύφη C και TC χρησιμοποιούν δύο αρχεία, τα .login και .cshrc (προσέξτε ότι και τα δύο αρχεία ξεκινούν με τελεία).
Κατά την είσοδο σας, το κέλυφος C διαβάζει πρώτα το .cshrc και μετά το .login
Το .login χρησιμοποιείται για να θέσει ρυθμίσεις που ισχύουν για όλη την σύνοδο (session) και για να εκτελέσει λειτουργίες που απαιτούνται μόνο στη διαδικασία εισόδου.
Το .cshrc χρησιμοποιείται για να θέσει ρυθμίσεις και να εκτελέσει λειτουργίες που σχετίζονται με το κέλυφος και πρέπει να γίνονται κάθε φορά που ξεκινά - άσχετα αν είναι το κέλυφος εισόδου ή όχι).
Σε γενικές γραμμές, είναι σωστότερο να ρυθμίζονται οι μεταβλητές ENVIRONMENT (περιβάλλοντος) στο αρχείο .login και οι μεταβλητές SHELL (κελύφους) στο .cshrc.
ΠΡΟΣΟΧΗ: ΠΟΤΕ μη βάλετε εντολές που ενεργοποιούν το γραφικό περιβάλλον στα αρχεία .cshrc ή .login.
Αν για παράδειγμα θέλετε να αλλάξετε τον αριθμό των εντολών κελύφους που αποθηκεύονται στη λίστα ιστορικού, θα πρέπει να θέσετε μια νέα τιμή στη μεταβλητή του κελύφους που ονομάζεται history. Η προεπιλεγμένη τιμή είναι 100, αλλά μπορείτε να την αυξήσετε αν θέλετε.
% set history = 200
Ελέγξτε ότι η παραπάνω εντολή λειτούργησε:
% echo $history
Το παραπάνω ωστόσο θέτει την μεταβλητή μόνο για όση ώρα εκτελείται το τρέχον κέλυφος. Αν ανοίξετε ένα νέο παράθυρο xterm (για παράδειγμα), θα έχει την παλιά τιμή της μεταβλητής. Για να αλλάξετε αυτή την τιμή MONIMA θα πρέπει να προσθέσετε την εντολή set μέσα στο αρχείο .cshrc.
Ανοίξτε το αρχείο .cshrc σε ένα συντάκτη κειμένου. Μπορείτε να χρησιμοποιήσετε κάποιο συντάκτη που σας παρέχει το γραφικό περιβάλλον σας ή ένα εύκολο συντάκτη για την κονσόλα (π.χ. τον ee).
% ee ~/.cshrc
Προσθέστε την παρακάτω γραμμή ΜΕΤΑ τη λίστα των άλλων εντολών.
set history = 200
Αποθηκεύστε το αρχείο και αναγκάστε το κέλυφος να ξαναδιαβάσει το αρχείο .cshrc χρησιμοποιώντας την εντολή του κελύφους source.
% source .cshrc
Ελέγξτε τη σωστή λειτουργία, πληκτρολογώντας:
% echo $history
Όταν πληκτρολογείτε μια εντολή, η μεταβλητή path (ή PATH) ορίζει σε ποιους καταλόγους θα ψάξει το κέλυφος για να την βρει. Αν το σύστημα επιστρέψει ένα μήνυμα του τύπου "command: Command not found", σημαίνει είτε ότι η εντολή δεν υπάρχει καθόλου στο σύστημα, ή απλά ότι δεν υπάρχει στο path σας.
Για παράδειγμα, για να εκτελέσετε το πρόγραμμα units πρέπει είτε να ορίσετε απευθείας τη πλήρη διαδρομής προς αυτό (~/units174/bin/units) ή να έχετε προσθέσει στο path σας τον κατάλογο ~/units174/bin.
Μπορείτε να τον προσθέσετε στο τέλος του υπάρχοντος path (το οποίο αντιπροσωπεύεται από το $path) χρησιμοποιώντας την παρακάτω εντολή:
% set path = ($path ~/units174/bin)
Ελέγξτε τη λειτουργία του παραπάνω, προσπαθώντας να εκτελέσετε το units ενώ βρίσκεστε σε οποιοδήποτε κατάλογο.
% cd
% units
Για να κάνετε αυτή την αλλαγή στο path ΜΟΝΙΜΗ, προσθέστε την παρακάτω γραμμή στο αρχείο .cshrc ΜΕΤΑ τη λίστα των υπόλοιπων εντολών.
set path = ($path ~/units174/bin)
M.Stonebank@surrey.ac.uk October 2001