4.9. Κελύφη
Προηγ | Κεφάλαιο 4. Βασικές Έννοιες στο UNIX® | Επόμενο

## 4.9. Κελύφη

Στο FreeBSD ένα μεγάλο μέρος της καθημερινής εργασίας γίνεται σε ένα περιβάλλον γραμμής εντολών ονόματι κέλυφος (shell). Η κύρια δουλειά του κελύφους είναι να παίρνει εντολές από το κανάλι εισόδου και να τις εκτελεί. Μερικά κελύφη έχουν ενσωματωμένες λειτουργίες ώστε να βοηθούν στις καθημερινές προγραμματισμένες εργασίες όπως διαχείριση αρχείων, file globbing, επεξεργασία γραμμής εντολών, μακροεντολές, και μεταβλητές περιβάλλοντος. Το FreeBSD διατίθεται με διάφορα κελύφη, όπως το `sh`, το Bourne Shell και το `tcsh`, το βελτιωμένο C-shell. Διάφορα άλλα κελύφη είναι διαθέσιμα από την Συλλογή των Ports του FreeBSD, όπως τα `zsh` και `bash`.

Ποιο κέλυφος να χρησιμοποιήσετε; Είναι πραγματικά θέμα γούστου. Εάν είστε προγραμματιστής σε γλώσσα C θα αισθανθείτε περισσότερο οικείος με τα κελύφη τύπου C, όπως το `tcsh`. Εάν έρχεστε από το Linux ή είστε νέος σε περιβάλλον γραμμής εντολών UNIX® μπορείτε να δοκιμάσετε το `bash`. Η ουσία είναι πως κάθε κέλυφος έχει μοναδικές ιδιότητες που μπορεί να συνεργαστούν με το περιβάλλον εργασίας της προτίμησης σας, και επομένως είναι επιλογή σας ποιο κέλυφος να χρησιμοποιήσετε.

Μια κοινή ιδιότητα όλων των κελυφών είναι η αυτόματη συμπλήρωση ονομάτων αρχείων. Αφού έχετε πληκτρολογήσει τα πρώτα γράμματα μιας εντολής ή ενός ονόματος αρχείου αν πιέσετε το πλήκτρο Tab στο πληκτρολόγιο, τότε το κέλυφος αυτόματα θα ολοκληρώσει το υπόλοιπο της εντολής ή του ονόματος αρχείου. Ας δώσουμε ένα παράδειγμα. Ας υποθέσουμε πως έχετε δύο αρχεία `foobar` και `foo.bar`. Αν θέλετε να σβήσετε το `foo.bar` θα πρέπει να πληκτρολογήσετε `rm fo[Tab].[Tab]`.

Το κέλυφος θα τυπώσει αυτόματα `rm foo[BEEP].bar`.

Το [BEEP] είναι το κουδούνι της κονσόλας, το οποίο μας πληροφορεί πως δεν ήταν δυνατόν να ολοκληρώσει το όνομα του αρχείου διότι υπάρχουν περισσότερα από ένα ονόματα αρχείων που ταιριάζουν. Όντως το `foobar` και το `foo.bar` ξεκινούν με `fo`, και το κέλυφος κατάφερε να συμπληρώσει ως το `foo`. Αν πληκτρολογήσετε επιπλέον `.`, και μετά πάλι Tab, το κέλυφος θα καταφέρει να συμπληρώσει το υπόλοιπο του ονόματος αρχείου για σας.

Άλλο ιδιαίτερο χαρακτηριστικό του κελύφους είναι η χρήση των μεταβλητών περιβάλλοντος. Οι μεταβλητές περιβάλλοντος είναι ένα ζεύγος μεταβλητών/κλειδιών αποθηκευμένα στον περιβάλλοντα χώρο του κελύφους Αυτός ο χώρος μπορεί να διαβαστεί από οποιοδήποτε πρόγραμμα που καλείται από το κέλυφος, και έτσι περιέχει πλήθος ρυθμίσεων προγραμμάτων. Ακολουθεί μία λίστα με συνήθεις μεταβλητές περιβάλλοντος και τη σημασία τους:

Μεταβλητή | Περιγραφή
--- | ---
`USER` | Όνομα του τρέχοντα χρήστη.
`PATH` | Λίστα καταλόγων για την αναζήτηση εκτελέσιμων χωρισμένη με άνω-κάτω τελείες.
`DISPLAY` | Όνομα δικτύου της οθόνης X11 που είναι διαθέσιμη για σύνδεση, αν υπάρχει.
`SHELL` | Το ενεργό κέλυφος.
`TERM` | Το όνομα του τύπου του τερματικού χρήστη. Ορίζει τις δυνατότητες του τερματικού.
`TERMCAP` | Εγγραφή στη βάση δεδομένων κωδικών escape για διάφορες λειτουργίες τερματικών.
`OSTYPE` | Ο τύπος του λειτουργικού συστήματος π.χ., FreeBSD.
`MACHTYPE` | Η αρχιτεκτονική CPU στην οποία δουλεύει το σύστημα.
`EDITOR` | Ο προεπιλεγμένος κειμενογράφος του χρήστη.
`PAGER` | Το προεπιλεγμένο πρόγραμμα σελιδοποίησης του χρήστη.
`MANPATH` | Λίστα καταλόγων για την αναζήτηση των σελίδων βοηθείας (man pages) χωρισμένη με άνω-κάτω τελείες.

Ο ορισμός μιας μεταβλητής περιβάλλοντος διαφέρει κάπως από κέλυφος σε κέλυφος. Για παράδειγμα στα κελύφη τύπου-C, όπως τα `tcsh` και `csh`, θα πρέπει να χρησιμοποιήσετε την `setenv` για να ορίσετε μεταβλητές περιβάλλοντος. Σε κελύφη Bourne όπως τα `sh` και `bash`, θα πρέπει να χρησιμοποιείτε την `export` για να θέσετε τις τρέχουσες μεταβλητές περιβάλλοντος. Για παράδειγμα, για να ορίσετε ή να μετατρέψετε την μεταβλητή περιβάλλοντος `EDITOR`, σε `csh` ή `tcsh` θα πρέπει να δώσετε μια εντολή που να θέτει τη μεταβλητή `EDITOR` στο `/usr/local/bin/emacs`:

`%` `setenv EDITOR /usr/local/bin/emacs`

Για κελύφη Bourne:

`%` `export EDITOR="/usr/local/bin/emacs"`

Μπορείτε επίσης στα περισσότερα κελύφη να αναπτύσσετε τις μεταβλητές περιβάλλοντος τοποθετώντας μπροστά τους τον χαρακτήρα `$`. Για παράδειγμα, η `echo $TERM` θα τυπώσει την τιμή που έχουμε θέσει στην μεταβλητή, διότι το κέλυφος αναπτύσσει την `$TERM` και περνά την τιμή της στην `echo`.

Τα κελύφη χρησιμοποιούν μερικούς ειδικούς χαρακτήρες, που ονομάζονται meta-χαρακτήρες για εμφανίσεις ιδιαίτερων δεδομένων. Ο πιο κοινός εξ' αυτών είναι ο χαρακτήρας `*`, ο οποίος αντιπροσωπεύει οποιοδήποτε αλφαριθμητικό χαρακτήρα σε ένα όνομα αρχείου. Αυτοί οι ειδικοί meta-χαρακτήρες μπορούν να χρησιμοποιηθούν για να κάνουν filename globbing. Για παράδειγμα, αν πληκτρολογήσετε `echo *` είναι σχεδόν το ίδιο με το να δώσετε `ls` διότι το κέλυφος παίρνει όλα τα αρχεία που ταιριάζουν με `*` και τα προωθεί στην γραμμή εντολών για την `echo`.

Για να εμποδίσετε το κέλυφος να επεξεργαστεί αυτούς τους ειδικούς χαρακτήρες, μπορείτε να χρησιμοποιήσετε το σύμβολο διαφυγής (escape) τοποθετώντας μπροστά τους μια δεξιόστροφη κάθετο (`\`). Η `echo $TERM` τυπώνει τον τύπο του τερματικού σας, ενώ η `echo \$TERM` τυπώνει απλά `$TERM`.

### 4.9.1. Αλλάζοντας το Κέλυφος σας

Ο ευκολότερος τρόπος για να αλλάξετε το κέλυφος σας είναι να χρησιμοποιήσετε την εντολή `chsh`. Τρέχοντας την `chsh` θα οδηγηθείτε στον κειμενογράφο που έχετε θέσει στην μεταβλητή περιβάλλοντος `EDITOR`, ενώ αν δεν έχετε θέσει, θα οδηγηθείτε στο `vi`. Αλλάξτε κατάλληλα τη γραμμή &#x201C;Shell:&#x201D;

Μπορείτε επίσης να δώσετε στην `chsh` την επιλογή `-s`, αυτή θα θέσει το κέλυφος για σας, δίχως να χρειαστεί να χρησιμοποιήσετε τον κειμενογράφο. Για παράδειγμα, αν θέλετε να αλλάξετε το κέλυφος σας σε `bash`, η ακόλουθη εντολή είναι ακριβώς αυτό που χρειάζεστε:

`%` `chsh -s /usr/local/bin/bash`

### Σημείωση:

Το κέλυφος στο οποίο επιθυμείτε να μεταβείτε πρέπει να είναι καταχωρημένο στο αρχείο `/etc/shells`. Αν έχετε εγκαταστήσει ένα κέλυφος από τη συλλογή των ports, τότε αυτό θα πρέπει να έχει ήδη γίνει. Αν εγκαταστήσατε το κέλυφος μόνοι σας, τότε θα πρέπει να εκτελέσετε τη διαδικασία που ακολουθεί.

Αν για παράδειγμα, εγκαταστήσατε το `bash` μόνοι σας και το τοποθετήσατε στον `/usr/local/bin`, τότε θα πρέπει να δώσετε:

`#` `echo "/usr/local/bin/bash" >> /etc/shells`

Και μετά ξανατρέξτε την `chsh`.

Προηγ | Πάνω | Επόμενο
4.8. Δαίμονες, Σήματα, και Τερματισμός Διεργασιών | Αρχή | 4.10. Κειμενογράφοι

Αυτό το κείμενο, και άλλα κείμενα, μπορεί να βρεθεί στο ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/

Για ερωτήσεις σχετικά με το FreeBSD, διαβάστε την τεκμηρίωση πριν να επικοινωνήσετε με την <questions@FreeBSD.org>.
Για ερωτήσεις σχετικά με αυτή την τεκμηρίωση, στείλτε e-mail στην <doc@FreeBSD.org>.