Die Shell oder die Befehlszeilenschnittstelle ist ein entscheidender Bestandteil des Linux-Betriebssystems, der den Benutzern eine leistungsstarke Möglichkeit bietet, mit dem System zu interagieren.
Jeder Benutzer eines Linux-Systems ist mit einer Standardshell verbunden, die bestimmt, welchen Befehlsinterpreter er beim Interagieren mit dem System verwendet.
Das Ändern der Standardshell eines Benutzers kann aus verschiedenen Gründen erforderlich sein, wie z.B. persönliche Vorlieben oder die Notwendigkeit bestimmter Funktionen, die von einer anderen Shell angeboten werden.
In diesem Artikel werden wir den Prozess des Änderns der Standardshell eines Benutzers in Linux erkunden. Die Shell ist ein Programm, das Befehle akzeptiert und interpretiert; es gibt mehrere Open-Source-Shells wie bash, sh, ksh, zsh, fish, und viele andere weniger bekannte Shells, die auf Linux verfügbar sind.
Linux Bash Shell
Bash (/bin/bash) ist eine beliebte Shell auf den meisten, wenn nicht sogar allen Linux-Distributionen, und normalerweise ist sie die Standardshell für Benutzerkonten.
Es gibt mehrere Gründe, die Standardshell eines Benutzers in Linux zu ändern, darunter die folgenden:
- Um Normale Benutzeranmeldungen blockieren oder deaktivieren in Linux mit einer nologin-Shell.
- Verwenden Sie ein Shell-Wrapper-Skript oder -Programm, um Benutzerbefehle zu protokollieren, bevor sie an eine Shell zur Ausführung gesendet werden. Hier geben Sie den Shell-Wrapper als Login-Shell eines Benutzers an.
- Um den Anforderungen eines Benutzers gerecht zu werden (der eine bestimmte Shell verwenden möchte), insbesondere solcher mit administrativen Rechten.
Beim Erstellen von Benutzerkonten mit den useradd- oder adduser-Dienstprogrammen kann die --shell
-Flagge verwendet werden, um den Namen einer Benutzer-Login-Shell anzugeben, die von der in den entsprechenden Konfigurationsdateien angegebenen abweicht.
A login shell can be accessed from a text-based interface or via an SSH from a remote Linux machine. However, if you log in via a graphical user interface (GUI), you can access the shell from terminal emulators like xterm, konsole, and many more.
Liste verfügbarer Shells auf einem Linux-System
In Linux wird die Datei /etc/shells häufig verwendet, um eine Liste installierter gültiger Anmeldeshells auf dem System zu speichern. Diese Datei hilft dabei, festzustellen, welche Shells für Benutzer verfügbar sind, um sie als Standardshell mit Befehlen wie chsh festzulegen.
Um die Liste der verfügbaren Shells auf einem Linux-System anzuzeigen, können Sie den folgenden Befehl verwenden:
cat /etc/shells
Beispiel-Ausgabe:
# /etc/shells: valid login shells /bin/sh /bin/bash /usr/bin/bash /bin/rbash /usr/bin/rbash /bin/dash /usr/bin/dash /usr/bin/tmux /usr/bin/screen
Bevor Sie fortfahren, beachten Sie bitte:
- A user can change their own shell to anything: which, however, must be listed in the /etc/shells file.
- Nur root kann eine Shell ausführen, die nicht in der Datei /etc/shells aufgeführt ist.
- Wenn ein Konto eine eingeschränkte Anmeldeshell hat, kann nur root diese Shell des Benutzers ändern.
Die aktuelle Shell in Linux finden
Bevor Sie die Shell eines Standardbenutzers ändern, ist es wichtig, die aktuelle Shell durch Ausführen des folgenden echo-Befehls zu bestimmen, der die aktuelle Shell für den angemeldeten Benutzer anzeigt.
echo $SHELL /bin/bash
Das Ergebnis zeigt, dass der Benutzer derzeit die Bash (/bin/bash) Shell verwendet.
Ändern der Standard-Shell in Linux
Nun werden wir drei verschiedene Möglichkeiten besprechen, um die Standard-Linux-Benutzer-Shell zu ändern.
1. usermod-Utility
Der usermod Befehl wird verwendet, um die Benutzerkontodetails zu ändern, die im /etc/passwd Datei gespeichert sind, und die -s
oder --shell
Option wird verwendet, um die Benutzer-Login-Shell zu ändern.
In diesem Beispiel werden wir zuerst die Benutzerkontodetails von Benutzer tecmint überprüfen, um seine Standard-Login-Shell anzuzeigen, und dann seine Login-Shell von /bin/sh auf /bin/bash wie folgt ändern.
grep tecmint /etc/passwd sudo usermod --shell /bin/bash tecmint grep tecmint /etc/passwd

Nun wird die Standard-Shell für den Benutzer„tecmint“ auf bash geändert.
2. chsh-Utility
Der chsh Befehl wird verwendet, um die Standard-Login-Shell des Benutzers interaktiv mithilfe der -s
oder –shell Option wie gezeigt zu ändern.
grep tecmint /etc/passwd sudo chsh --shell /bin/sh tecmint grep tecmint /etc/passwd

Ersetzen Sie“/bin/sh” durch den tatsächlichen Pfad zum Shell, den Sie festlegen möchten. Zum Beispiel würden Sie zum Festlegen der Shell auf sh“/bin/sh“ verwenden.
Es ist wichtig zu beachten, dass Änderungen am Standard-Shell in der Regel erst beim nächsten Login wirksam werden.
Die beiden oben genannten Methoden ändern alle die im /etc/passwd Datei angegebene Shell, die Sie auch manuell wie in der dritten Methode unten bearbeiten können.
3. Benutzer-Shell in /etc/passwd Datei ändern
In dieser Methode öffnen Sie einfach die /etc/passwd Datei mit einem beliebigen Ihrer lieblings Kommandozeilen-Texteditoren und ändern die Shell eines bestimmten Benutzers.
sudo vi /etc/passwd OR sudo nano /etc/passwd

Suchen Sie die Zeile, die dem Benutzerentspricht, für den Sie die Standard-Shell ändern möchten. Zum Beispiel, wenn die Zeile so aussieht:
tecmint:x:1000:1000:John Doe:/home/tecmint:/bin/bash
Das letzte Feld, /bin/bash, stellt die Standard-Shell dar (in diesem Fall Bash).
Um den Wert des Shell-Feldes auf die gewünschte Shell zu ändern, geben Sie einfach den Pfad zu einer Shell (/bin/zsh) wie gezeigt an.
tecmint:x:1000:1000:John Doe:/home/tecmint:/bin/zsh
Wenn Sie mit dem Bearbeiten fertig sind, speichern und schließen Sie die Datei.
Wie installiert man eine andere Shell?
Ähnlich wie bei anderen Softwarepaketen können beliebte Shells wie Zsh und Fish leicht aus Ihrem Verteilungs-Repository wie gezeigt installiert werden.
Zsh Shell in Linux installieren
Um Zsh in Linux zu installieren, verwenden Sie den folgenden geeigneten Befehl für Ihre spezifische Linux-Distribution.
sudo apt install zsh [On Debian, Ubuntu and Mint] sudo yum install zsh [On RHEL/CentOS/Fedora and Rocky/AlmaLinux] sudo emerge -a sys-apps/zsh [On Gentoo Linux] sudo apk add zsh [On Alpine Linux] sudo pacman -S zsh [On Arch Linux] sudo zypper install zsh [On OpenSUSE]
Installieren Sie Fish Shell in Linux
Um Zsh unter Linux zu installieren, verwenden Sie den folgenden geeigneten Befehl für Ihre spezifische Linux-Distribution.
sudo apt install fish [On Debian, Ubuntu and Mint] sudo yum install fish [On RHEL/CentOS/Fedora and Rocky/AlmaLinux] sudo emerge -a sys-apps/fish [On Gentoo Linux] sudo apk add fish [On Alpine Linux] sudo pacman -S fish [On Arch Linux] sudo zypper install fish [On OpenSUSE]
Vergessen Sie nicht, diese verwandten Themen zu lesen:
In diesem Artikel haben wir verschiedene Möglichkeiten beschrieben, wie ein Benutzer in Linux die Shell wechseln kann. Um uns Ihre Gedanken mitzuteilen, verwenden Sie bitte den Kommentarbereich unten.
Source:
https://www.tecmint.com/change-a-users-default-shell-in-linux/