
Η μεταβλητή $ SHLVL σας λέει πόσα κελύφη βαθιά έχετε. Εάν μπερδεύεστε από αυτό, αξίζει να ξεκινήσετε από την αρχή.
Τι είναι ένα κέλυφος;
Ένα κέλυφος παίρνει εντολές και δίνει αυτές τις εντολές στο υποκείμενο λειτουργικό σύστημα για εκτέλεση. Στα περισσότερα συστήματα Linux, το πρόγραμμα κελύφους ονομάζεται BASH (The Bourne Again Shell), αλλά υπάρχουν και άλλα, όπως το C Shell (tcsh) και το κέλυφος KORN (ksh).
Πώς να αποκτήσετε πρόσβαση στο κέλυφος Linux
Γενικά, ως χρήστης, αλληλεπιδράτε με το πρόγραμμα κελύφους μέσω ενός προγράμματος εξομοίωσης τερματικού, όπως το XTerm, το konsole ή το τερματικό gnome. Εάν εκτελείτε έναν διαχειριστή παραθύρων όπως το Openbox ή ένα περιβάλλον επιφάνειας εργασίας όπως το GNOME ή το KDE, θα βρείτε έναν εξομοιωτή τερματικού είτε από ένα μενού είτε από μια παύλα. Σε πολλά συστήματα, η συντόμευση CTRL + ALT + Τ ανοίγει ένα παράθυρο τερματικού. Εναλλακτικά, μπορείτε να μεταβείτε σε άλλο TTY (teletypewriter), το οποίο παρέχει άμεση πρόσβαση σε ένα κέλυφος γραμμής εντολών. Μπορείτε να το κάνετε πατώντας CTRL + ALT + F1 ή CTRL + ALT + F2.
Τι είναι το επίπεδο κελύφους;
Όταν εκτελείτε μια εντολή σε ένα κέλυφος, εκτελείται σε επίπεδο κελύφους. Μέσα σε ένα κέλυφος, μπορείτε να ανοίξετε ένα άλλο κέλυφος, το οποίο το καθιστά ένα υπόστρωμα του κελύφους που το άνοιξε. Επομένως, το μητρικό κέλυφος θεωρείται το κέλυφος επιπέδου 1 και το θυγατρικό κέλυφος είναι ένα κέλυφος επιπέδου 2.
Πώς να εμφανίσετε το επίπεδο κελύφους
Ο τρόπος για να πείτε σε ποιο επίπεδο κελύφους εκτελείτε είναι να χρησιμοποιήσετε τη μεταβλητή $ SHLVL. Για να δείτε το επίπεδο κελύφους που εκτελείτε, πληκτρολογήστε τα εξής: echo $ SHLVL
type = «code»> Όταν εκτελείτε την παραπάνω εντολή σε ένα παράθυρο τερματικού, το αποτέλεσμα που επιστρέφεται είναι 2. Εάν, ωστόσο, εκτελέσετε την ίδια εντολή χρησιμοποιώντας το tty, τότε το αποτέλεσμα είναι 1. Το tty δεν εκτελεί επιφάνεια εργασίας περιβάλλον και είναι ένα επίπεδο 1 κέλυφος. Γιατί συμβαίνει αυτό; Το περιβάλλον της επιφάνειας εργασίας που χρησιμοποιείτε εκτελείται πάνω από ένα κέλυφος. Αυτό το κέλυφος είναι επίπεδο 1. Κάθε παράθυρο τερματικού που ανοίγετε από αυτό το περιβάλλον επιφάνειας εργασίας είναι θυγατρικό του κελύφους που άνοιξε το περιβάλλον επιφάνειας εργασίας. Επομένως, το επίπεδο κελύφους δεν μπορεί να ξεκινήσει σε κανέναν αριθμό εκτός από το 2.
Πώς να δημιουργήσετε δευτερεύοντα κελύφη
Ο ευκολότερος τρόπος για να δοκιμάσετε την έννοια των κελυφών και των υποβελτίων είναι ο εξής. Ανοίξτε ένα παράθυρο τερματικού και, στη συνέχεια, πληκτρολογήστε τα εξής: echo $ SHLVL
type = «code»> Όταν εκτελείτε αυτήν την εντολή από ένα παράθυρο τερματικού, το ελάχιστο επίπεδο κελύφους είναι 2. Πληκτρολογήστε τα ακόλουθα στο παράθυρο τερματικού: sh
type = «code»> Η εντολή sh εκτελεί ένα διαδραστικό κέλυφος. Αυτό σημαίνει ότι χρησιμοποιείτε ένα κέλυφος μέσα σε ένα κέλυφος ή ένα υπόστρωμα. Εάν το πληκτρολογήσετε ξανά: echo $ SHLVL
type = «code»> Βλέπετε ότι το επίπεδο κελύφους έχει οριστεί σε 3. Η εκτέλεση της εντολής sh από το υποκεφάλαιο ανοίγει ένα δευτερεύον κέλυφος του δευτερεύοντος κελύφους και έτσι το επίπεδο κελύφους είναι στο επίπεδο 4
Γιατί είναι σημαντικό το επίπεδο Shell;
Το επίπεδο κελύφους είναι σημαντικό όταν σκεφτόμαστε το εύρος των μεταβλητών στα σενάρια σας. Για ένα απλό παράδειγμα: dog = maisie
echo $ σκύλο
type = «code»> Εάν εκτελέσετε την παραπάνω εντολή σε ένα κέλυφος, η λέξη maisie εμφανίζεται στο παράθυρο του τερματικού. Για να ανοίξετε ένα νέο κέλυφος, πληκτρολογήστε τα εξής: sh
type = «code»> Όταν εκτελείτε αυτήν την εντολή, θα δείτε ότι δεν επιστρέφεται τίποτα: echo $ dog
type = «code»> Αυτό συμβαίνει επειδή η μεταβλητή $ dog είναι διαθέσιμη μόνο στο κέλυφος επίπεδο 2. Εάν πληκτρολογήσετε έξοδο για έξοδο από το υπό-κελύφος και εκτέλεση echo $ σκύλο και πάλι, η λέξη maisie εμφανίζεται ξανά. Αξίζει επίσης να σκεφτούμε τη συμπεριφορά των παγκόσμιων μεταβλητών μέσα σε ένα κέλυφος. Ανοίξτε ένα νέο παράθυρο τερματικού και, στη συνέχεια, πληκτρολογήστε τα εξής: export dog = maisie
echo $ σκύλο
type = «code»> Όπως αναμενόταν, η λέξη maisie οθόνες. Στη συνέχεια, ανοίξτε ένα δευτερεύον κέλυφος και πληκτρολογήστε echo $ σκύλο πάλι. Αυτή τη φορά, η λέξη maisie εμφανίζει ακόμα κι αν βρίσκεστε σε δευτερεύον κέλυφος. Ο λόγος για αυτό είναι ότι η εντολή εξαγωγής έκανε τη μεταβλητή $ dog καθολική. Η αλλαγή της μεταβλητής $ dog στο δευτερεύον κέλυφος, ακόμα και αν χρησιμοποιείτε την εντολή εξαγωγής, δεν επηρεάζει τα μητρικά της κελύφη. Το να γνωρίζετε το επίπεδο κελύφους στο οποίο εργάζεστε έχει σημασία κατά τη σύνταξη σεναρίων. Τα παραδείγματα σε αυτό το άρθρο είναι απλά, αλλά είναι κοινό για ένα σενάριο κελύφους να καλεί ένα άλλο σενάριο κελύφους που με τη σειρά του καλεί ένα άλλο σενάριο κελύφους. Όλα αυτά λειτουργούν σε διαφορετικά επίπεδα. Η γνώση του επιπέδου του κελύφους είναι σημαντική.