Wie ändere ich die Standard-Shell eines Benutzers in OSX?

33

Was ist die richtige OSX-Methode, um die Standard-Shell eines Benutzers zu ändern? Als ich danach gegoogelt habe, habe ich mehrere Verweise auf eine Anwendung namens NetInfo Manager gefunden, aber ich konnte sie auf meinem System nicht finden. Es gab auch Verweise auf eine Befehlszeilenversion namens niutil, die ich auch nicht gefunden habe.

David Holm
quelle
mögliches Duplikat von Wie stelle ich meine Shell in Mac OS X ein?
Daniel Beck

Antworten:

52

für <= 10.4 - netinfo manager, / users / whoever / shell

für> = 10,5

  1. Gehen Sie zu Systemeinstellungen -> Konten
  2. Klicken Sie auf das Schlosssymbol, um den Einstellungsbereich zu entsperren
  3. Klicken Sie mit der rechten Maustaste (oder bei gedrückter Ctrl-Taste) auf den Benutzer und wählen Sie "Erweiterte Optionen".
  4. Bearbeiten Sie das Login-Shell-Feld
Chopper3
quelle
5
Wow, nachdem ich 8 Jahre mit OS X gearbeitet habe, wusste ich nicht, wie man das Klicken in die Benutzervorgaben steuert. +1
jkp
1
Control-Click ist atemberaubend!
Eonil
1
Lebensretter nach dem Verschieben der Shell meines Kontos aus dem Pfad ... Terminal konnte nicht über die Befehlszeile repariert werden!
Davemyron
2
Es funktioniert nicht mehr auf El Capitan?
MarcusJ
Richtig, das ist das Problem mit solchen Dingen, 7 Jahre später haben sich die Dinge geändert - warum nicht selbst recherchieren, hinzufügen und antworten und es wird hochgestuft, so funktionieren die Dinge, besser als nur kleine Antworten auszulesen
Chopper3
33
sudo chsh -s /path/to/shell username

Wobei die Shell die ist, die Sie für diesen Benutzer wünschen. sudowird nicht benötigt, wenn Sie usernamedas Passwort kennen.

man chsh

für weitere Beispiele.

churnd
quelle
funktioniert auch für root for su, was in der Systemsteuerung nicht sichtbar ist. Ich glaube?
Chris F Carroll
4
Sie können auch einfach ausführen chshund das Shell-Feld ändern. Wenn Sie einen Fehler wie erhalten chsh: /usr/local/bin/bash: non-standard shell, fügen Sie /usr/local/bin/bashzu /etc/shells.
Lri
3
Möglicherweise hat sich in 10.9 etwas geändert, aber dieser Befehl gibt jetzt eine Verwendungsmeldung aus. Es scheint, dass die korrekte Syntax jetzt istchsh -s /path/to/shell username
Matthematics
9

NetInfo wurde durch Directory Services (dscl) ersetzt und es kann festgestellt werden, dass die Standard-Shell für Mac OS X seit 10.3 bash ist. Vorher war es tcsh.

Wenn Sie dies über die Befehlszeile tun müssen (z. B. zum Pushen über ARD oder remote über SSH), können Sie Folgendes ausführen:

sudo dscl localhost -change /Local/Default/Users/USERNAME shell OLD_SHELL NEW_SHELL
#In Use:
sudo dscl localhost -change /Local/Default/Users/chealion shell /bin/bash /bin/zsh

Wenn Sie sich bezüglich der aktuellen Shell nicht sicher sind, können Sie Folgendes ausführen:

sudo dscl localhost -read /Local/Default/Users/USERNAME shell

Wenn der Benutzer kein lokaler Benutzer ist, wird der Pfad einfach geändert, und bei Bedarf ändern Sie localhostden Namen Ihres Open Directory-Servers. (Vorausgesetzt, es läuft 10.5).

Die Informationen werden in .plists (xml) in gespeichert /private/var/db/dslocal/- Sie möchten die plist-Dateien jedoch nicht manuell bearbeiten.

Chealion
quelle
7

Für 10.10:

nicht shellaber UserShell:

sudo dscl localhost -change /Local/Default/Users/USERNAME UserShell /bin/bash /bin/ksh
willem
quelle