2009-08-14 6 views
126

Wenn zsh als Anmelde-Shell unter Mac OS X eingestellt ist und von iTerm gestartet wird, denkt zsh nicht, dass es als Login-Shell ausgeführt wird, obwohl es als '-zsh' ('-') gestartet wird als erstes Zeichen von arg [0]), was bedeuten soll, dass es als Login-Shell starten soll.Wie kann zsh als Login-Shell unter Mac OS X (in iTerm) ausgeführt werden?

Also, wenn ich die Login-Shell zu bash, bash erkennt diese erste '-' in $ 0 und läuft als Login-Shell, aber zsh nicht, obwohl es scheint, dass es sollte.

Gibt es eine Möglichkeit, entweder zsh das '-' im arg [0] erkennen zu lassen oder iTerm die Shell mit einem --login Kommandozeilenargument ausführen zu lassen?

Antwort

19

Haben Sie versucht, den Shell-Eintrag in account settings zu bearbeiten.

Gehen Sie zu den Kontoeinstellungen, entsperren Sie und klicken Sie mit der rechten Maustaste auf Ihren Benutzer-Account für den Erweiterte Einstellungen Dialog. Ihre Shell sollte/bin/zsh sein, und Sie können diesen Aufruf entsprechend bearbeiten (z. B. das Argument --login hinzufügen).

+0

Leider das nicht funktioniert: ich kann so eingestellt je nachdem, welche Shell I chsh mag mit (solange ich diese Schale haben, die in/etc/shells) Allerdings kann man der Shell im Dialogfeld Erweiterte Einstellungen keine Befehlszeilenargumente hinzufügen (iTerm kann die Shell nicht starten). –

+0

Einige der Syntax hat sich in OS X geändert, aber das Wesentliche ist, Ihre Standard-Shell auf/bin/zsh zu setzen, wie Brian angibt – engineerDave

+6

Ich liebe SO. Ich habe diese Antwort gerade verwendet und erst dann realisiert, dass ich sie vor fast 4 Jahren geschrieben habe! –

200
chsh -s $(which zsh) 

Sie werden nach Ihrem Passwort gefragt werden, aber wenn Sie Ihre Einstellungen alle neuen iTerm/Terminal-Sitzungen Sie auf dieser Maschine zu zsh wird standardmäßig starten aktualisieren.

+1

Bitte lesen Sie zuerst die Frage. Das Problem besteht nicht darin, die Standard-Shell zu setzen, das Problem ist, dass zsh nicht erkennt, dass es als Login-Shell gestartet wurde. –

+1

Ah, meine Entschuldigung. Haben Sie versucht, den Befehl -i zu verwenden, um das Starten von zsh im interaktiven Modus zu erzwingen? –

+11

Seine Antwort lässt zsh in iTerm unter Mac OS X als Login-Shell laufen. Es geht einfach nicht darum, es so zu versuchen, wie du es beschrieben hast. Aber es löst das Problem, dass Sie sich (im Titel, statt im Körper) stellen. Die Frage, mit der du im Körper endest, ist eine ganz andere Frage. Wenn das Ihre eigentliche Frage ist (und nicht, wie zsh als Login-Shell ausgeführt werden soll), dann sollten Sie vielleicht die Frage im Titel neu formulieren. – iconoclast

89

In iTerm -> Einstellungen -> Profile Tab -> Allgemein Abschnitt eingestellt Command:/bin/zsh --login

/bin/zsh --login

+1

iterm2 scheint diese Option in der Registerkarte Allgemein nicht zu haben. Irgendeine Idee, wie man in iterm2 erreicht, ohne Login-Shell zu ändern? –

+5

Es ist eine allgemeine Registerkarte auf der Registerkarte Profile. –

+0

Aha! Das ist verwirrend, dass es eine allgemeine Registerkarte und eine Profiles> Allgemein gibt. –

1

Verwenden Sie das Dienstprogramm login eine Login-Shell zu erstellen. Angenommen, der Benutzer, den Sie anmelden möchten, hat den Benutzernamen Alice, und zsh wird in /opt/local/bin/zsh installiert (z. B. eine neuere über MacPorts installierte Version). In iTerm 2, gehen Sie zu Einstellungen, Profile, wählen Sie das Profil, das Sie einrichten möchten, und geben Sie in Befehl:

login -pfq Alice /opt/local/bin/zsh 

Siehe man login, um weitere Informationen zu den Optionen.

50

Gehen Sie zur Benutzer & Gruppen Bereich der Systemeinstellungen -> Wählen Sie den Benutzer ->das Schloss, um Änderungen vorzunehmen (unten links) -> rechts der klicken aktuellen Benutzer wählen Erweiterte Optionen ... -> wählen Sie die Anmeldung Shell:/bin/zsh und OK

+2

Das hat meinen Tag gerettet. Ich bin auf osx Außenseiter. – qed

+0

Dieser hat einwandfrei funktioniert. Danke ... –

14

Der Befehl zum Ändern der Shell beim Start ist chsh -s <path_to_shell>.Die Standardschalen in Mac OS X sind im Inneren des bin Verzeichnis installiert, so dass, wenn Sie zsh auf die Standardeinstellung ändern möchten, dann würden Sie das folgende

chsh -s /bin/zsh 

verwenden Wenn Sie andere Version von zsh verwenden sind dann könnten Sie müssen Fügen Sie diese Version zu /etc/shells hinzu, um die Nichtstandard-Shell-Nachricht zu vermeiden. Zum Beispiel, wenn Sie nach Hause brauen Version von zsh wollen, dann müssen Sie /usr/local/bin/zsh die oben genannte Datei hinzufügen, die Sie in einem Befehl tun können sudo sh -c "echo '/usr/local/bin/zsh' >> /etc/shells" und dann

chsh -s /usr/local/bin/zsh 

laufen Oder wenn man das Ganze in einer tun wollen Befehl einfach kopieren und diese einfügen, wenn Sie zsh bereits

installiert
sudo sh -c "echo '/usr/local/bin/zsh' >> /etc/shells" && chsh -s /usr/local/bin/zsh 
+1

Ich glaube nicht, dass es fair war, diese Antwort zu verwerfen. Requisiten, da es der einzige ist, der '/ etc/shells' im Körper der Antwort selbst erwähnt. – heymatthew