22Jul

Ποια είναι η διαφορά ανάμεσα στο Bash, το Zsh και σε άλλα Shells του Linux;

Οι περισσότερες διανομές Linux περιλαμβάνουν το κέλυφος bash από προεπιλογή, αλλά μπορείτε επίσης να μεταβείτε σε άλλο περιβάλλον κελύφους.Το Zsh είναι μια ιδιαίτερα δημοφιλής εναλλακτική λύση, και υπάρχουν και άλλα κοχύλια, όπως τέφρα, παύλα, ψάρια και tcsh.Αλλά ποια είναι η διαφορά και γιατί υπάρχουν τόσα πολλά;

Τι κάνουν τα κελύφη;

Όταν συνδέεστε στη γραμμή εντολών ή εκκινήσετε ένα παράθυρο τερματικού στο Linux, το σύστημα εκκινεί το πρόγραμμα κελύφους.Τα κελύφη προσφέρουν έναν τυπικό τρόπο επέκτασης του περιβάλλοντος της γραμμής εντολών.Μπορείτε να αλλάξετε το προεπιλεγμένο κέλυφος για ένα άλλο, αν θέλετε.

Το πρώτο περιβάλλον του κελύφους ήταν το Thompson Shell, το οποίο αναπτύχθηκε στο Bell Labs και κυκλοφόρησε το 1971. Τα περιβάλλοντα Shell βασίζονται στην ιδέα από τότε, προσθέτοντας μια ποικιλία από νέες λειτουργίες, βελτιώσεις ταχύτητας.

Για παράδειγμα, το Bash προσφέρει την ολοκλήρωση των εντολών και των αρχείων, τις προηγμένες λειτουργίες δέσμης ενεργειών, το ιστορικό εντολών, τα διαμορφώσιμα χρώματα, τα ψευδώνυμα εντολών και μια ποικιλία άλλων χαρακτηριστικών που δεν ήταν διαθέσιμα το 1971 όταν κυκλοφόρησε το πρώτο κέλυφος.

Το κέλυφος χρησιμοποιείται επίσης στο παρασκήνιο από διάφορες υπηρεσίες συστήματος.Οι κατανομές Linux περιλαμβάνουν πολλές λειτουργίες γραμμένες ως σενάρια κελύφους.Αυτά τα σενάρια είναι εντολές και άλλες προηγμένες λειτουργίες δέσμης εντολών κελύφους που διατρέχουν το περιβάλλον του κελύφους.

Το πιο σημαντικό πρόγονο των σύγχρονων κοχυλιών είναι το κέλυφος Bourne - επίσης γνωστό ως "sh" - το οποίο πήρε το όνομά του από τον δημιουργό του Stephen Bourne ο οποίος εργάστηκε στο κουδούνι της AT & T's BellΕργαστήρια.Κυκλοφόρησε το 1979, έγινε η προεπιλεγμένη εντολή-διερμηνέας στο Unix εξαιτίας της υποστήριξής του στην αντικατάσταση των εντολών, τις σωληνώσεις, τις μεταβλητές, τις δοκιμές κατάστασης και το βρόχο, μαζί με άλλα χαρακτηριστικά.Δεν πρόσφερε μεγάλη προσαρμογή στους χρήστες και δεν υποστήριζε τέτοιες σύγχρονες λεπτομέρειες όπως ψευδώνυμα, ολοκλήρωση εντολών και λειτουργίες του κελύφους( αν και τελικά προστέθηκε αυτό το τελευταίο).

Το κέλυφος C, ή το "csh", αναπτύχθηκε στα τέλη της δεκαετίας του 1970 από τον Bill Joy στο Πανεπιστήμιο της Καλιφόρνιας, Berkley.Πρόσθεσε πολλά διαδραστικά στοιχεία με τα οποία οι χρήστες θα μπορούσαν να ελέγχουν τα συστήματά τους, όπως ψευδώνυμα( συντομεύσεις για μεγάλες εντολές), ικανότητες διαχείρισης θέσεων εργασίας, ιστορικό εντολών και πολλά άλλα.Έγινε μοντελοποίηση από τη γλώσσα προγραμματισμού C, στην οποία γράφτηκε το ίδιο το λειτουργικό σύστημα Unix. Αυτό σήμαινε επίσης ότι οι χρήστες του κελύφους Bourne έπρεπε να μάθουν το C, ώστε να μπορούν να εισάγουν εντολές σε αυτό.Επιπλέον, το csh είχε αρκετά σφάλματα που έπρεπε να σφυρηλατηθούν από τους χρήστες και τους δημιουργούς για μεγάλο χρονικό διάστημα.Οι άνθρωποι κατέληξαν να χρησιμοποιούν το κέλυφος Bourne για δέσμες ενεργειών επειδή χειριζόταν καλύτερα τις μη διαδραστικές εντολές, αλλά κολλήθηκαν με το κέλυφος C για κανονική χρήση.

Με την πάροδο του χρόνου, πολλοί άνθρωποι ρύθμισαν σφάλματα και πρόσθεσαν χαρακτηριστικά στο κέλυφος C, με αποκορύφωμα μια βελτιωμένη έκδοση του csh γνωστού ως "tcsh".Ωστόσο, το csh εξακολουθούσε να είναι η προεπιλογή σε υπολογιστές που βασίζονται σε Unix και είχε προσθέσει ορισμένα μη τυπικά χαρακτηριστικά.Ο David Korn από το Bell Labs εργάστηκε στο KornShell ή το ksh που προσπάθησε να βελτιώσει την κατάσταση με το να είναι συμβατό με τη γλώσσα του shell του Bourne αλλά προσθέτοντας πολλά χαρακτηριστικά από το csh shell.Απελευθερώθηκε το 1983, αλλά με άδεια ιδιοκτησίας.Δεν ήταν ελεύθερο λογισμικό μέχρι τη δεκαετία του 2000, όταν κυκλοφόρησε υπό διάφορες άδειες ανοιχτού κώδικα.

Η γέννηση του bash

Η φορητή διασύνδεση λειτουργικού συστήματος για Unix ή POSIX ήταν μια άλλη απάντηση στις ταραχώδεις ιδιόκτητες εφαρμογές csh.Δημιουργεί με επιτυχία ένα πρότυπο για την ερμηνεία των εντολών( μεταξύ άλλων) και τελικά αντικατοπτρίζει πολλά από τα χαρακτηριστικά του KornShell.Ταυτόχρονα, το Έργο GNU προσπαθούσε να δημιουργήσει ένα ελεύθερο, συμβατό με Unix λειτουργικό σύστημα.Το GNU Project ανέπτυξε ένα ελεύθερο κέλυφος λογισμικού για να είναι μέρος του ελεύθερου λειτουργικού του συστήματος και το ονόμασε "Bourne Again Shell" ή "bash".Το

Bash βελτιώθηκε στις δεκαετίες από την πρώτη κυκλοφορία του το 1989, αλλά εξακολουθεί να είναι το προεπιλεγμένο κέλυφος στις περισσότερες διανομές Linux σήμερα.Είναι επίσης το προεπιλεγμένο κέλυφος στο macOS της Apple και είναι διαθέσιμο για εγκατάσταση στα Windows 10.

Νεότερα Shells: τέφρα, dash, zsh και ψάρια

Ενώ η κοινότητα του Linux έχει εγκατασταθεί στο Bash τα τελευταία χρόνια, οι προγραμματιστές δεν σταμάτησανδημιουργώντας νέα κοχύλια όταν κυκλοφόρησε για πρώτη φορά ο Bash πριν από 28 χρόνια.

Ο Kenneth Almquist δημιούργησε έναν κλώνο κελύφους Bourne γνωστό ως κέλυφος Almquish, A Shell, "τέφρα", ή μερικές φορές μόνο "sh".ήταν επίσης POSIX συμβατό και έγινε το προεπιλεγμένο κέλυφος σε BSD, ένα διαφορετικό κλάδο του Unix.Το κέλυφος τέφρας είναι πιο ελαφρύ από το bash, το οποίο το καθιστά δημοφιλές στα ενσωματωμένα συστήματα Linux.Εάν έχετε ένα ριζωμένο κινητό τηλέφωνο Android με εγκατεστημένο το BusyBox - ή οποιαδήποτε άλλη συσκευή με τη σουίτα λογισμικού BusyBox - χρησιμοποιεί κώδικα από τέφρα.Το

Το Debian ανέπτυξε ένα περιβάλλον κελύφους που βασίζεται στην τέφρα και το ονόμασε "παύλα".Είναι σχεδιασμένο να είναι συμβατό με POSIX και ελαφρύ, έτσι είναι ταχύτερο από το Bash, αλλά δεν θα έχει όλες τις δυνατότητές του.Το Ubuntu χρησιμοποιεί το κέλυφος εξόρμησης ως το προεπιλεγμένο του κέλυφος για μη αλληλεπιδραστικές εργασίες, επιταχύνοντας τις δέσμες ενεργειών κελύφους και άλλες εργασίες που εκτελούνται στο παρασκήνιο.Το Ubuntu εξακολουθεί να χρησιμοποιεί bash για διαδραστικά κελύφη, ωστόσο, έτσι ώστε οι χρήστες να έχουν ακόμα το πλήρως λειτουργικό διαδραστικό περιβάλλον.

Ένα από τα πιο δημοφιλή νεότερα κελύφη είναι το Z shell, ή το "zsh".Δημιουργήθηκε από τον Paul Falstad το 1990, το zsh είναι ένα κέλυφος τύπου Bourne που περιέχει τα χαρακτηριστικά που θα βρείτε στο bash, συν ακόμα περισσότερα.Για παράδειγμα, το zsh έχει ορθογραφικό έλεγχο, την ικανότητα παρακολούθησης για logins / logout, μερικές ενσωματωμένες δυνατότητες προγραμματισμού όπως bytecode, υποστήριξη για επιστημονική καταγραφή σε σύνταξη, επιτρέπει αριθμητική επίπλευσης και περισσότερα χαρακτηριστικά.

Ένα άλλο νεότερο κέλυφος είναι το Friendly Interactive Shell ή το "fish" που κυκλοφόρησε το 2005. Έχει μια μοναδική σύνταξη γραμμής εντολών που έχει σχεδιαστεί για να είναι κάπως πιο εύκολη στην εκμάθηση, αλλά δεν προέρχεται ούτε από το κέλυφος Bourne ή το κέλυφος C.Είναι μια ενδιαφέρουσα ιδέα, αλλά αυτό που μαθαίνετε χρησιμοποιώντας τα ψάρια δεν θα σας βοηθήσει απαραίτητα να χρησιμοποιήσετε το bash και άλλα κοχύλια που προέρχονται από το Bourne.

Ποια πρέπει να επιλέξετε;(και γιατί το Zsh είναι δημοφιλές)

Δεν χρειάζεται να επιλέξετε ένα κέλυφος.Το λειτουργικό σας σύστημα επιλέγει το προεπιλεγμένο κέλυφος για εσάς και αυτή η επιλογή είναι σχεδόν πάντα bash.Καθίστε μπροστά σε μια διανομή Linux ή ακόμα και σε Mac και σχεδόν πάντα θα έχετε ένα περιβάλλον shell bash.Το Bash έχει αρκετά προηγμένα χαρακτηριστικά, αλλά μάλλον δεν θα τα χρησιμοποιήσετε αν δεν προγραμματίσετε κελύφη κελύφους.

Σε ενσωματωμένα συστήματα Linux ή συστήματα BSD, θα καταλήξετε με το κέλυφος τέφρας.Αλλά η τέφρα είναι ένα κέλυφος με βάση το Bourne και είναι σε μεγάλο βαθμό συμβατό με το bash.Οποιαδήποτε γνώση έχετε από τη χρήση bash θα μεταφερθεί στη χρήση ενός κελύφους τέφρας ή παύλα, αν και ορισμένες προηγμένες λειτουργίες δέσμης ενεργειών δεν είναι διαθέσιμες σε αυτό το ελαφρύ κέλυφος.

Σχεδόν κάθε κέλυφος που θα συναντήσετε είναι το Bourne και λειτουργεί με παρόμοιο τρόπο - συμπεριλαμβανομένου του zsh.

Γι 'αυτό ο zsh είναι δημοφιλής.Αυτό το νεότερο κέλυφος είναι συμβατό με bash, αλλά περιλαμβάνει περισσότερα χαρακτηριστικά.Το κέλυφος zsh προσφέρει ενσωματωμένη διόρθωση ορθογραφίας, βελτιωμένη ολοκλήρωση της γραμμής εντολών, φορτισμένες μονάδες που λειτουργούν ως plug-ins για το κέλυφος σας, παγκόσμια ψευδώνυμα που σας επιτρέπουν να κάνετε ονόματα αρχείων ψευδώνυμων ή οτιδήποτε άλλο στη γραμμή εντολών αντί για εντολές καιπερισσότερη υποστήριξη.Είναι σαν bash, αλλά με πολλά πρόσθετα χαρακτηριστικά, πρόσθετα χαρακτηριστικά και ρυθμιζόμενες επιλογές που μπορεί να εκτιμήσετε αν περνάτε πολύ χρόνο στη γραμμή εντολών.

Εάν είστε εξοικειωμένοι με το bash, μπορείτε να μεταβείτε στο zsh χωρίς να μάθετε διαφορετική σύνταξη - θα αποκτήσετε μόνο πρόσθετα χαρακτηριστικά.αν είστε εξοικειωμένοι με το zsh, μπορείτε να μεταβείτε στο bash χωρίς να μάθετε διαφορετική σύνταξη - απλά δεν θα έχετε πρόσβαση σε αυτά τα χαρακτηριστικά.Το

"Oh My ZSH" είναι ένα εργαλείο που σας βοηθά να ενεργοποιήσετε πιο εύκολα τις προσθήκες zsh και να εναλλάσσετε μεταξύ των θεμάτων premade, προσαρμόζοντας γρήγορα το κέλυφος zsh σας χωρίς να ξοδεύετε ώρες τα πράγματα μικροαλλαγές.

Υπάρχουν και άλλα όστρακα.Για παράδειγμα, το κέλυφος tcsh είναι ακόμα γύρω και εξακολουθεί να είναι μια επιλογή.Το FreeBSD χρησιμοποιεί το tsch ως το βασικό κέλυφος ρίζας και την τέφρα ως το προεπιλεγμένο διαδραστικό κέλυφος.Εάν χρησιμοποιείτε τον προγραμματισμό C τακτικά, το tsch μπορεί να είναι καλύτερο για εσάς.Ωστόσο, δεν είναι πουθενά όπως χρησιμοποιείται συνήθως ως bash ή zsh.

Πώς να κάνετε εναλλαγή μεταξύ κελύφων

Είναι εύκολο να μεταβείτε σε ένα νέο κέλυφος για να το δοκιμάσετε.Απλά εγκαταστήστε το κέλυφος από τον διαχειριστή πακέτων της διανομής Linux και πληκτρολογήστε την εντολή για να ξεκινήσει το κέλυφος.

Για παράδειγμα, ας πούμε ότι θέλετε να δοκιμάσετε το zsh στο Ubuntu.Θα εκτελέσετε τις ακόλουθες εντολές για να τις εγκαταστήσετε και στη συνέχεια να τις εκκινήσετε:

sudo apt install zsh zsh

Θα κάνατε τότε να κάθεστε σε ένα κέλυφος zsh.Πληκτρολογήστε "έξοδο" στο κέλυφος για να το αφήσετε και να επιστρέψετε στο τρέχον κέλυφος.

Αυτό είναι μόνο προσωρινό.Κάθε φορά που ανοίγετε ένα νέο παράθυρο τερματικού ή συνδέεστε στο σύστημά σας στη γραμμή εντολών, θα δείτε το προεπιλεγμένο κέλυφος.Για να αλλάξετε το κέλυφος που βλέπετε όταν συνδέεστε ως κέλυφος σύνδεσης, μπορείτε γενικά να χρησιμοποιήσετε την εντολή chsh ή "Change Shell".

Για να χρησιμοποιήσετε αυτήν την εντολή, θα πρέπει πρώτα να βρείτε την πλήρη διαδρομή στο κέλυφος σας με την οποία εντολή.Για παράδειγμα, ας πούμε ότι θέλαμε να αλλάξουμε στο shell του zsh.Θα εκτελέσουμε την ακόλουθη εντολή:

που zsh

Στο Ubuntu, αυτό μας λέει ότι το δυαδικό zsh αποθηκεύεται στο /usr/bin/ zsh.

Εκτελέστε την ακόλουθη εντολή, πληκτρολογήστε τον κωδικό πρόσβασής σας και θα σας ζητηθεί να επιλέξετε ένα νέο κέλυφος σύνδεσης:

chsh

Σύμφωνα με την παραπάνω εντολή, εισάγουμε /usr/bin/ zsh.Το κέλυφος zsh θα είναι στη συνέχεια το προεπιλεγμένο μέχρι να τρέξουμε την εντολή chsh και να την αλλάξουμε.