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. Αλλάξτε κατάλληλα τη γραμμή «Shell:»

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

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

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

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

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

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

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

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