Wenn zsh unter Mac OS X als Anmeldeshell festgelegt ist und von iTerm gestartet wird, berücksichtigt zsh nicht, dass es als Anmeldeshell ausgeführt wird, obwohl es als '-zsh' gestartet wird ('-' als erstes Zeichen von arg [0]), was bedeuten soll, dass es als Login-Shell beginnen soll.
Wenn ich also die Login-Shell auf bash setze, erkennt bash dieses erste '-' in $ 0 und wird als Login-Shell ausgeführt, zsh jedoch nicht, obwohl es so scheint, als ob es sollte.
Gibt es eine Möglichkeit, zsh entweder das '-' in arg [0] erkennen zu lassen oder iTerm die Shell mit einem --login-Befehlszeilenargument ausführen zu lassen?
Antworten:
Setzen Sie in iTerm -> Einstellungen -> Registerkarte "Profile" -> Abschnitt "Allgemein" den Befehl auf: / bin / zsh --login
quelle
/usr/local/bin/zsh --login
Sie werden aufgefordert, Ihr Kennwort einzugeben. Sobald Sie jedoch Ihre Einstellungen aktualisiert haben, werden alle neuen iTerm / Terminal-Sitzungen, die Sie auf diesem Computer starten, standardmäßig auf zsh gesetzt.
quelle
chsh
Sie etwas wie "Nicht-Standard-Shell" erfahren, bedeutet dies, dass Sie den Pfad der neuen Shell hinzufügen müssen/etc/shells
. Dies kann passieren, wenn Sie beispielsweise zu einer von homebrew installierten Version von zsh wechseln, die es einfügt/usr/local/bin/zsh
.chsh -s $(which zsh)
kann verwendet werden, um den richtigen Pfad sicherzustellen.Gehen Sie zum Bereich Benutzer & Gruppen in den Systemeinstellungen -> Benutzer auswählen -> Klicken Sie auf das Schloss, um Änderungen vorzunehmen (untere linke Ecke) -> Klicken Sie mit der rechten Maustaste auf den aktuellen Benutzer. Wählen Sie Erweiterte Optionen ... -> Wählen Sie die Anmeldeshell aus: / bin / zsh und OK
quelle
Der Befehl zum Ändern der Shell beim Start lautet
chsh -s <path_to_shell>
. Die Standard-Shells in Mac OS X werden imbin
Verzeichnis installiert. Wenn Sie also zum Standard wechselnzsh
möchten, verwenden Sie FolgendesWenn Sie eine andere Version von verwenden
zsh
, müssen Sie diese Version möglicherweise hinzufügen,/etc/shells
um die nicht standardmäßige Shell-Nachricht zu vermeiden. Wenn Sie beispielsweise die Home-Brew-Version von möchtenzsh
, müssen Sie/usr/local/bin/zsh
die oben genannte Datei hinzufügen , was Sie mit einem Befehl tunsudo sh -c "echo '/usr/local/bin/zsh' >> /etc/shells"
und dann ausführen könnenOder wenn Sie das Ganze in einem Befehl erledigen möchten, kopieren Sie dies einfach und fügen Sie es ein, wenn Sie zsh bereits installiert haben
quelle
/etc/shells
im Hauptteil der Antwort selbst erwähnt wird.Haben Sie versucht , in das Shell - Eintrag Bearbeitung Kontoeinstellungen .
Gehen Sie zu den Kontoeinstellungen, entsperren Sie und klicken Sie mit der rechten Maustaste auf Ihr Benutzerkonto, um das Dialogfeld Erweiterte Einstellungen aufzurufen. Ihre Shell sollte / bin / zsh sein, und Sie können diesen Aufruf entsprechend bearbeiten (dh das Argument --login hinzufügen).
quelle
Verwenden Sie das
login
Dienstprogramm, um eine Anmeldeshell zu erstellen. Angenommen, der Benutzer, bei dem Sie sich anmelden möchten, hat den Benutzernamen Alice und zsh ist installiert/opt/local/bin/zsh
(z. B. eine neuere Version, die über MacPorts installiert wurde). Gehen Sie in iTerm 2 zu Einstellungen, Profile, wählen Sie das Profil aus, das Sie einrichten möchten, und geben Sie Befehl ein :Sehen Sie
man login
für weitere Informationen zu den Optionen.quelle