So ändern Sie Ihre Standard-Shell unter Linux mit chsh

Veröffentlicht: 2022-01-29
Eine stilisierte Shell-Eingabeaufforderung auf einem Linux-Laptop-System im Ubuntu-Stil.
Fatmawati Achmad Zaenuri/Shutterstock

Bash ist nicht die einzige Linux-Shell. Es ist einfach, andere Shells auszuprobieren, wie z. B. Zsh, das sehr beliebt ist. Wenn Sie eine gefunden haben, die Ihnen gefällt, verwenden Sie den chsh , um sie zu Ihrer Standard-Shell zu machen. Wir zeigen Ihnen wie.

Warum eine Schale wichtig ist

Die Shell befindet sich zwischen Ihnen und dem Betriebssystem. Es bietet die Umgebung in einem Terminalfenster, in dem Sie Befehle eingeben und Programme ausführen können. Die Shell überprüft Ihre Eingabe und findet heraus, was Sie wollen. Wenn es Ihr Bieten selbst durchführen kann, tut es dies. Wenn es Hilfe von außen benötigt, durchsucht es den Pfad und findet die Programme, die alles tun können, was Sie angefordert haben.

Unter Linux sind viele verschiedene Shells verfügbar. Mit allen können Sie die gleichen Kernaufgaben ausführen: das Dateisystem durchsuchen, mit Dateien arbeiten, Programme starten und Skripts ausführen. Sie erfüllen diese Aufgaben jedoch jeweils auf ihre eigene Weise und haben ihre eigenen Besonderheiten und Eigenheiten.

Shells werden in der Regel von Leuten entworfen, die wollen, dass sich Dinge auf eine bestimmte Weise verhalten. Wenn Ihr Denken mit dem dieses Designers übereinstimmt, könnte diese Schale gut zu Ihnen passen. Außerdem ist es einfach, eine neue Shell unter Linux auszuprobieren.

In den meisten Linux-Distributionen, einschließlich Ubuntu, ist die Standard-Shell bash . Es macht einen tollen Job und ist sehr fähig. Eine andere Shell könnte jedoch einen zeitsparenden Unterschied bieten, der sich stark auf Ihren Arbeitsablauf auswirken würde. Du wirst es nie erfahren, wenn du nicht hinsiehst!

RELATED: Was ist ZSH und warum sollten Sie es anstelle von Bash verwenden?

Ein Eimer voller Muscheln

Wir haben die verschiedenen Linux-Shells bereits behandelt, aber hier ist eine kurze Einführung in die gebräuchlichsten:

  • bash: Die Bourne Again-Shell ist in vielen Distributionen der Standard.
  • rbash: Diese eingeschränkte bash -Shell bietet der Person oder dem Skript, das darin ausgeführt wird, minimale Funktionalität.
  • ash: Die Almquist-Shell ist eine leichtere Version von bash.
  • Bindestrich: Die Debian Alquist Shell ist das Standard-Shell-Skript in Ubuntu. Während bash die standardmäßige Anmelde- und interaktive Shell ist, wird dash zum Ausführen von Systemprozessen verwendet, da es viel leichter als bash ist.
  • zsh: Die Z-Shell ist eine moderne Variante der bash -Shell-Familie. Es bietet nette Verbesserungen, wie Befehlsrechtschreibprüfungen und vorgeschlagene Korrekturen.
  • Fisch: Diese freundliche interaktive Shell wurde von Grund auf neu geschrieben und ist nicht von einer der anderen Shell-Familien abgeleitet. Es soll benutzerfreundlich sein. Neben vielen anderen Vorteilen bietet Fisch Vorschläge für Befehle basierend auf Ihrem Verlauf und dem Inhalt des aktuellen Ordners, ähnlich wie bei der Texterkennung.
  • ksh: Die KornShell bietet eine besonders starke Skriptsprache.

VERWANDT: Was ist der Unterschied zwischen Bash, Zsh und anderen Linux-Shells?

Listen Sie die installierten Shells auf

Verwenden Sie diesen Befehl, um zu sehen, welche Shells auf Ihrem Computer installiert sind. Es listet einfach den Inhalt der Datei /etc/shells auf:

 Katze /etc/shells 

Wir haben bash , dash und rbash , aber was ist sh ?

sh ist die Thompson-Shell, die bereits 1971 von Ken Thompson von Bell Labs geschrieben wurde. Es wird nicht mehr gepflegt und ist längst von modernen Muscheln abgelöst worden. Es ist nur enthalten, um die Kompatibilität mit älteren Skripten aufrechtzuerhalten, die immer noch Folgendes als erste Zeile haben:

 #!/bin/sh

Dies weist das System an, die sh -Shell zum Ausführen des Skripts zu verwenden. Haben Sie wirklich diese alte Shell auf Ihrem Rechner und wird sie zum Ausführen Ihrer Skripte verwendet? Der which -Befehl teilt uns mit, welches Programm tatsächlich ausgeführt wird, wenn Sie einen Befehl eingeben.

Mal sehen, was läuft, wenn Sie sh :

 was sch

Dies scheint eine Binärdatei zu finden. Wenn wir jedoch etwas tiefer graben, werden wir sehen, dass es sich um einen symbolischen Link handelt, der tatsächlich auf dash zeigt, die leichte Shell, die zum Ausführen von Skripten verwendet wird:

 ls -l /bin/sh 

Das ist eine nette, leichtgewichtige Möglichkeit, ein Sicherheitsnetz für Skripte bereitzustellen, die erwarten, sh auf modernen Systemen zu finden.

Installieren einer anderen Shell

Lassen Sie uns die fish Shell installieren und als Standard für dave . Unter Ubuntu geben wir den folgenden Befehl ein:

 sudo apt-get install fish 

Verwenden Sie auf Manjaro pacman :

 sudo pacman -Sy Fisch 

Geben Sie auf Fedora Folgendes ein:

 sudo dnf installiere Fisch 

Anzeige

Wenn die Installation abgeschlossen ist, können Sie die installierten Shells noch einmal überprüfen:

 Katze /etc/shells 

Unsere neue Shell erscheint als /usr/bin/fish . Notieren Sie sich diesen Pfad – Sie werden ihn in Kürze benötigen.

Die Umgebungsvariable $SHELL

Die Umgebungsvariable $SHELL enthält den Namen Ihrer aktuellen Shell. Wir können mit echo überprüfen, auf welches es eingestellt ist:

 Echo $SHELL

Beginnen wir mit der fish :

 Fisch

Lassen Sie uns nun noch einmal überprüfen, was die Umgebungsvariable $SHELL sagt:

 Echo $SHELL 

Wenn wir echo $SHELL zum ersten Mal verwenden, befinden wir uns in der bash -Shell. Die Umgebungsvariable enthält den Pfad zur ausführbaren bash Datei /bin/bash .

Anzeige

Wenn wir die fish starten, erhalten wir eine freundliche Willkommensnachricht und die Eingabeaufforderung ändert sich. Was überraschen könnte, ist, dass die $SHELL Umgebung immer noch den Pfad zur ausführbaren bash -Datei enthält, /bin/bash . Das ist okay – das ist normal.

Wenn Sie eine neue Shell (oder ein anderes Programm) starten, erbt sie die Umgebung der übergeordneten Shell. Die fish -Shell erbt also die globalen und exportierten Umgebungsvariablen von der bash -Shell. Da der Wert in der Umgebungsvariable $SHELL nicht geändert wurde, hat er in der fish -Shell denselben Wert wie in der bash -Shell.

Wir betreiben fish wie jedes andere Programm. Wir können auch exit verwenden, um die fish zu verlassen. Es schließt sich wie jedes andere Programm und wir kehren zur bash -Shell zurück.

Das ist großartig, um neue Muscheln auszuprobieren, zu sehen, was sie können und ob Sie damit zurechtkommen. Sie können erkunden, bevor Sie den Sprung machen, und eine als Ihre Anlaufstelle übernehmen.

Wenn Sie sich entscheiden, den fish – oder eine andere Muschel – zu Ihrem Standard zu machen, müssen Sie den chsh verwenden.

Der chsh-Befehl

Mit dem chsh können Sie Ihre Standard-Shell ändern. Der Trick besteht darin, sich bewusst zu sein, dass Sie damit sowohl die Standardanmeldung als auch die standardmäßigen interaktiven Shells ändern können. Vielleicht möchten Sie das eine oder das andere oder beides ändern.

Anzeige

Immer wenn Sie sich anmelden, um eine Eingabeaufforderung zu erhalten, verwenden Sie die Shell, die als Ihre Anmelde-Shell konfiguriert ist. Wenn Sie bereits angemeldet sind und ein Terminalfenster öffnen, verwenden Sie die Shell, die als Ihre interaktive Shell konfiguriert ist. Dies können entweder die gleichen oder unterschiedliche Schalen sein.

Um Ihre Login-Shell festzulegen, verwenden Sie chsh ohne Parameter:

 chsch 

Sie werden nach Ihrem Passwort gefragt. Dann müssen Sie den Pfad zur neuen Shell eingeben und die Eingabetaste drücken.

Wenn wir von einem anderen eine Fernverbindung zu diesem Testcomputer herstellen, finden wir uns nach dem Einloggen in der fish wieder.

Um Ihre interaktive Shell zu ändern, verwenden Sie chsh mit der Option -s (shell). Übergeben Sie den Pfad zur neuen Shell in der Befehlszeile:

 chsh -s /usr/bin/fish 

Sie werden zur Eingabe Ihres Kennworts aufgefordert und kehren zur Eingabeaufforderung Ihrer aktuellen Shell zurück. Sie müssen sich ab- und wieder anmelden, damit die Änderung wirksam wird. Wenn Sie dies tun, sehen Sie die Begrüßung und die Eingabeaufforderung für die fish .

Anzeige

Die Umgebungsvariable $SHELL enthält jetzt den Pfad zu Ihrer neuen Standard-Shell:

 Echo $SHELL 

Ändern der Shell eines anderen Benutzerkontos

Wenn Sie über Root-Rechte verfügen und sudo verwenden können, können Sie die Shells anderer Benutzerkonten ändern. Der Befehl ist derselbe wie zuvor, wobei der Benutzername dieser Person der Befehlszeile hinzugefügt wurde:

 sudo chsh -s /usr/bin/fish mary 

Wenn sich mary das nächste Mal anmeldet, sieht sie die neue Shell, wenn sie ein Terminalfenster öffnet.

Jeder hat einen Favoriten

Solange Sie sich mit Ihrer Wahl der Schale wohlfühlen und sie für Sie funktioniert, ist das großartig! Denken Sie daran, dass es in der Lage sein muss, allgemeine Skripte wie Installationsroutinen auszuführen. Für die hier genannten Muscheln sollte das kein Problem sein.

Natürlich können Sie auch eine neue Shell herunterladen und installieren und damit eine Probefahrt machen, ohne irgendwelche Konfigurationsänderungen an Ihrem Computer vorzunehmen. Wenn Sie bereit sind, den Bund fürs Leben zu schließen, führt chsh die Zeremonie für Sie durch.

RELATED: Beste Linux-Laptops für Entwickler und Enthusiasten