Στο FreeBSD ένα μεγάλο μέρος της καθημερινής εργασίας γίνεται σε ένα
περιβάλλον γραμμής εντολών ονόματι κέλυφος (shell). Η κύρια δουλειά
του κελύφους είναι να παίρνει εντολές από το κανάλι εισόδου και να τις
εκτελεί. Μερικά κελύφη έχουν ενσωματωμένες λειτουργίες ώστε να βοηθούν
στις καθημερινές προγραμματισμένες εργασίες όπως διαχείριση αρχείων,
file globbing, επεξεργασία γραμμής εντολών, μακροεντολές, και
μεταβλητές περιβάλλοντος. Το FreeBSD διατίθεται με διάφορα κελύφη, όπως το
sh
, το Bourne Shell και το tcsh
,
το βελτιωμένο C-shell. Διάφορα άλλα κελύφη είναι διαθέσιμα από την
Συλλογή των Ports του FreeBSD, όπως τα zsh
και
bash
.
Ποιο κέλυφος να χρησιμοποιήσετε; Είναι πραγματικά θέμα γούστου.
Εάν είστε προγραμματιστής σε γλώσσα C θα αισθανθείτε περισσότερο
οικείος με τα κελύφη τύπου C, όπως το tcsh
. Εάν
έρχεστε από το Linux ή είστε νέος σε περιβάλλον γραμμής εντολών UNIX(R)
μπορείτε να δοκιμάσετε το 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
.
Ο ευκολότερος τρόπος για να αλλάξετε το κέλυφος σας είναι να
χρησιμοποιήσετε την εντολή 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>.