Wie ändere ich die Login Shell unter Mac OS X von bash auf zsh?


90

Ich versuche, die Anmeldeshell von Mac OS X bashauf zu ändern zsh. Ich sehe, dass es in Mac OS X Leopard möglich ist , aber für OS X Lion kann ich keinen Weg finden. Ich hoffe wirklich, dass es möglich ist, die Login-Shell von bash auf etwas anderes zu ändern. Ich bin mir nicht ganz sicher, wo ich suchen soll.


Nachdem ich die Shell auf zsh geändert hatte, musste ich zsh immer noch manuell starten. Abmelden hat nicht geholfen. Ich habe dann zsh in die oberste Login-Shell geändert. Abgemeldet und da war es.

1
Sie können die .bashrc-Datei immer ändern, um zsh zu finden und auszuführen. if [ -x /usr/local/bin/zsh ] ; then exec /usr/local/bin/zsh fi. Hinweis: Wenn Sie Shell-Startskripte ändern, stellen Sie sicher, dass eine Shell weiterhin ausgeführt wird und starten Sie eine neue in einem anderen Fenster.
Dan Pritts

Antworten:


101

Sie können die Benutzer-Shell mit dem folgenden Befehl ändern:

chsh -s /bin/zsh

Hinweis: Um es für eine nicht standardmäßige Shell zu ändern, stellen Sie sicher, dass der Pfad zur /etc/shellsDatei hinzugefügt wurde .


4
Ich habe eine neuere Version von zsh mit Homebrew installiert, die zsh einfügt /usr/local/bin/zsh. Leider erlaubt chsh dies nicht chsh: /usr/local/bin/zsh: non-standard shell. Die Antwort von Daniel Beck ist in diesem Fall eine geeignete Lösung.
adam_0

43
Wenn Sie Probleme mit Nicht-Standard-Shells haben, sollten Sie in der Lage sein, diese zu ergänzen /usr/local/bin/zsh, /etc/shellsund dies sollte das Problem lösen.
Mike Meyers

13
Die Homebrew zsh Installationsinfo empfiehlt Ihnen tatsächlich, es zu / etc / shells hinzuzufügen: ==> Caveats To use this build of Zsh as your login shell, add it to /etc/shells.
George

Funktioniert manchmal nicht. @
Franks

1
@Awesome_girl Standardmäßig /etc/shellsgehört root (der Superuser) und kann nur von ihm beschrieben werden. Sie könnten zum Beispiel verwenden sudo vi /etc/shellszu verwenden sudo( s uper u ser tun ) , um das auszuführen viEditor zu bearbeiten /etc/shells. Ich habe gerade auf meinem System getestet und bestätigt, dass es NICHT durch den Systemintegritätsschutz geschützt ist. Sie sollten es also als Root bearbeiten können, ohne durch die Rahmen springen zu müssen, um SIP zu deaktivieren.
Spiff

54

Witzigerweise die gleiche Methode , die Sie in Ihrer Frage verknüpfen immer noch funktioniert in OS X Lion von Sierra (10.12). Der einzige Unterschied: Der Einstellungsbereich heißt " Benutzer und Gruppen" anstelle von " Konten" .

  1. Öffnen Sie "Systemeinstellungen" → "Benutzer & Gruppen".
  2. Wenn das Schlosssymbol nicht bereits entsperrt ist, klicken Sie auf das Schlosssymbol und authentifizieren Sie sich.
  3. Klicken Sie in der Liste der Benutzernamen im Kontext auf einen Benutzer (halten Sie die ControlTaste gedrückt, während Sie klicken, oder klicken Sie mit der rechten Maustaste auf eine Zwei-Tasten-Maus mit der rechten Maustaste).
  4. Wählen Sie im Kontextmenü "Erweiterte Optionen ...".
  5. Wählen Sie im angezeigten Blatt "Anmeldeshell".

Der Hinweis oben im Bildschirm "Erweiterte Optionen" besagt, dass Sie einen Neustart durchführen müssen, damit die Änderung wirksam wird. Sie müssen sich jedoch nur abmelden und wieder anmelden.

Bildbeschreibung hier eingeben


1
Es wurde bestätigt, dass dies sowohl in Mountain Lion als auch in "Nicht-Standard-Shells" funktioniert, die Sie möglicherweise selbst installieren (oder von Homebrew installieren lassen).
adam_0

2
Bestätigt, dass noch in 10.10 Yosemite gearbeitet wird.
Ecnepsnai

4
Klicken Sie mit der rechten Maustaste auf den Benutzernamen, um das Menü mit den erweiterten Optionen aufzurufen. Ich habe ein paar Minuten gebraucht, um zu finden.
PDWalker

1
Warum jemanden dazu zwingen, vor Ort zu gehen, um alle Informationen zu sammeln, bevor er die Antwort erhält? Daher der Kommentar für den Fall, dass jemand anderes die gleiche Annahme macht, dass die Antwort eher hier als hier und da ist.
PDWalker

1
@ Jvriesem Eigentlich tut es. Vermutlich haben Sie Schritt 2 übersprungen.
Daniel Beck

11

Oder:

sudo dscl . change /users/$USER UserShell /bin/bash $(which zsh)

3
Können Sie erklären, warum dies die Frage beantwortet?
ChrisF

Stellen Sie sicher, dass Sie dies nachher ausführen brew install zsh.
11.

3
Achten Sie auch darauf, dass der Pfad von zsh, der über Homebrew installiert wird, unterschiedlich ist. Ich mache es als:sudo dscl . change /users/$USER UserShell /bin/bash $(which zsh)
Metakermit

1
WARNUNG: Dies wird Ihre Shell beschädigen, wenn Sie sie kopieren / einfügen, ohne zuerst den Pfad von zsh zu überprüfen. Tu stattdessen, was Metakermit gesagt hat.
Radixhound

1

Wenn sich jemand wundert, dass das gleiche Problem auf macOS Sierra auftritt und der folgende Befehl mir erlaubt, die Shell ohne Probleme zu ändern:

chpass -s /usr/local/bin/zsh

1
Dies dupliziert eine andere Antwort und fügt keinen neuen Inhalt hinzu. Bitte posten Sie keine Antwort, es sei denn, Sie haben tatsächlich etwas Neues beizutragen. "chfn und chsh sind Synonyme für chpass."
DavidPostill
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.