Shell von zsh auf bash ändern

15

Mein Webserver wurde von jemandem manipuliert, der die zsh-Shell verwendete. Ich fühle mich mit der bash-Shell wohler, da dies die Standardeinstellungen sind, die mit Ubuntu und OS X (den beiden Hauptbetriebssystemen, die ich verwende) geliefert werden. Diese Frage konzentriert sich jedoch auf den Ubuntu-Server. Ich habe 4 Webseiten auf diesem Webserver, ich benutze byobu, ich benutze tmux, ich benutze ruby ​​/ ruby ​​on Rails, node.js, apache, ein paar Daemons. Wenn ich die aktuelle Root-Shell von zsh auf bash umstelle, kann dies zu negativen Nebenwirkungen führen? Werden Prozesse beispielsweise abgebrochen, weil der übergeordnete Prozess (die Shell) umgeschaltet wurde?

JohnMerlino
quelle
Fragen Sie nach den Konsequenzen der Änderung (keine, ich verwende zsh gerade und kann jederzeit zu bash wechseln) oder fragen Sie, wie Sie die Shell effektiv ändern können?
Braiam
@Braiam Ich bin nervös wegen der Konsequenzen der Änderung. Wenn es keine Konsequenzen gibt, werde ich mich ändern. Ich dachte nur, dass die Shell ein übergeordneter Prozess für einige dieser Dämonen wie Apache ist, und wenn ich darauf verzichten würde, würde dies den Apache-Prozess beenden. Aber ich glaube, ich liege falsch.
JohnMerlino

Antworten:

10

Wenn Sie Ihre Shell über sudo chsh --shell=/bin/bash $USERändern , wird das Shell-Feld in geändert /etc/passwd. Dieser Wert wird nur zum Zeitpunkt der Anmeldung abgefragt, wenn das System keine Ahnung hat, welche Shell für Sie verwendet werden soll.

Laufende Prozesse, unabhängig davon, ob sie gestartet zshwurden bash apacheoder evil_overlord's_programnicht

Waltinator
quelle
Ist die Shell nicht der übergeordnete Prozess anderer Prozesse, die in ihr ausgeführt werden, oder wird nur das steuernde Terminal (und nicht die Shell) als übergeordneter Prozess betrachtet?
JohnMerlino
Das loginProgramm läuft wie alles in einem Prozess ab. Wenn es Sie einlässt, erstellt es einen weiteren Prozess mit Ihrer UID usw. und führt / bin / bash (aus / etc / passwd) aus. Die Bash-Shell liest von STDIN (eingerichtet von login) und gibt / führt nicht eingebaute Befehle aus, wartet, bis sie beendet sind, und führt eine Schleife aus, um weitere Befehle zu erhalten. Die Idee, ein Terminal zu steuern, ist unter Unix / Linux nicht sinnvoll.
Waltinator
25

Antwort vom Stack Overflow ( Wechsel von zsh zu bash ):

Sie können exec einfach verwenden, um Ihre aktuelle Shell durch eine neue Shell zu ersetzen:

Wechseln Sie zu bash:

exec bash

Wechseln Sie zu zsh:

exec zsh

Dies wirkt sich nicht auf neue Terminalfenster oder Ähnliches aus, ist jedoch praktisch.

Tauschen
quelle
funktioniert nicht. noch: echo $ SHELL / usr / bin / zsh
ses
8

Öffnen Sie Ihr Terminal und verwenden Sie den folgenden Befehl:

chsh -s $(which bash)
rɑːdʒɑ
quelle
Ich nehme an, dies ist das Äquivalent von chsh -s / bin / bash
JohnMerlino
2
which bashwürde den absoluten Pfad von angeben bash, also wäre es das gleiche wenn /bin/bashsich wo bashbefände.
Ryanjdillon
0

Unter Mac OS Catalina

  1. Zu zsh wechseln:

    chsh -s /bin/zsh
  2. Zum Bash wechseln:

    chsh -s /bin/bash
Mono
quelle