Wie lege ich meine Shell in Mac OS X fest?

21

Ich weiß, dass ich "Shells öffnen mit" in den Terminal-Einstellungen festlegen kann, bin aber gespannt, ob es eine systemweite Möglichkeit gibt, dies festzulegen (ähnlich wie beim Aktualisieren von / etc / passwd in einigen Unixen).

nein
quelle

Antworten:

24

Verwenden Sie das chshDienstprogramm folgendermaßen:

chsh -s bash

Apple hat sich chshunter Mac OS X im Vergleich zu chshLinux etwas verändert. Informationen dazu finden Sie auf der Mac OS X Man Page .

John T
quelle
Und hier dachte ich, es wäre etwas kompliziertes mit einem OSX-spezifischen Dienstprogramm, heh. Vielen Dank.
29.
@ John - schön gelernt :)
Akira
Ja, ich wusste die Antwort auch das letzte Mal, ich wurde nur geschlagen! :(
John T
19

Beachten Sie, dass Sie nur zu einer in aufgeführten Shell wechseln dürfen /etc/shells. Dies ist normalerweise in Ordnung, aber es bedeutet, dass Sie, wenn Sie Bash 4 installieren möchten (von Homebrew, MacPorts oder beim Kompilieren Ihrer eigenen), eine Zeile hinzufügen müssen /etc/shells. (Ich bin vor ein paar Wochen darauf gestoßen und dachte, es könnte anderen helfen, es zu wissen ...)

Bearbeiten : Tim Smith weist darauf hin, dass Sie die /etc/shellsEinschränkung umgehen können, wenn Sie chshals Root über ausgeführt werden sudo. ZB sudo chsh -s /usr/local/bin/my_shell $USERwird funktionieren, auch wenn my_shellnicht in aufgeführt ist /etc/shells. Ich bevorzuge die Bearbeitung /etc/shells, aber am Ende ist es eine der sudobeiden Möglichkeiten, da Sie nicht /etc/shellsals regulärer Benutzer bearbeiten können . Also vielleicht sechs von einem, ein halbes Dutzend von dem anderen.

Telemachus
quelle
Warum wechseln, /etc/shellswenn Sie nicht müssen? Aus Gründen der Vernunft halte ich die Systemdateien lieber gleich.
ma11hew28
@MattDiPasquale Ich bin mir nicht sicher, was du mit "geistiger Gesundheit" meinst. /etc/shellsist die Datei auf dem System, die erkannte Shells definiert. Ich ändere diese Datei, weil ich der Liste der erkannten Shells eine Shell hinzufügen möchte. Scheint mir ziemlich vernünftig.
Telemachus
Gut alt Aus irgendeinem Grund würde chsh für mich nicht funktionieren. Ich schaff das ; chsh: bash: non-standard shell
RyBolt
@ RyBolt Richtig: Der Grund ist wahrscheinlich das, was ich in der Antwort erwähne. Sie können nicht chshalleine verwenden, wenn Sie versuchen, eine Shell zu verwenden, die nicht in aufgeführt ist /etc/shells.
Telemachus
@ Telemachus, ich habe nur versucht, auf die ursprüngliche Bash-Shell zu wechseln, die mit meinem Standard-Mac OSX-Build geliefert wurde. Vielleicht kommt es /etc/shellsmir nicht komisch vor.
RyBolt
10

So verwenden Sie die Mac OS X-Benutzeroberfläche:

  1. Öffnen Sie "Systemeinstellungen".
  2. Öffnen Sie das Einstellungsfenster "Accounts" / "Users & Groups" und entsperren Sie gegebenenfalls das Einstellungsfenster.
  3. controlKlicken Sie auf den Benutzer, den Sie ändern möchten, mit der rechten Maustaste oder + auf den Benutzer und wählen Sie "Erweiterte Optionen ...".
  4. Hier steht "Login Shell": Ändern Sie dies in die Shell, die Sie verwenden möchten.

Beachten Sie, dass Sie an diesem Ort Ihr Basisverzeichnis, Ihre UUID, Ihre Benutzer-ID, Ihre Gruppen-ID und Ihren Kurznamen ändern können, wenn Sie mit dem Terminal nicht zufrieden sind. Es gibt eine ähnliche Frage hier befindet sich auch.

Chealion
quelle
5

Bei Verwendung der obigen Antworten wurde eine Fehlermeldung angezeigt:

$ chsh -s zsh
Changing shell for myuser.
Password for myuser:
chsh: zsh: non-standard shell

Um dies zu umgehen:

sudo chsh -s zsh $(whoami)

whoami In einer Subshell soll die Shell für Ihren Benutzer geändert werden, nicht der Root.

Eine weitere Sache, wenn Sie Homebrew verwenden. Wenn Sie Befehle als root ausführen (mit sudo), zeigt zsh auf / bin / zsh, was im Lieferumfang von OSX enthalten ist und möglicherweise veraltet ist. Verwenden Sie Folgendes, um die aktuelle Version zu verwenden, die über Homebrew installiert wurde:

sudo chsh -s $(which zsh) $(whoami)
phil pirozhkov
quelle