Antworten:
Es sei denn, Sie verwenden cygwin als Mehrbenutzerumgebung (in diesem Fall chsh
wie in einer Standardumgebung).
Andernfalls Sie nur cygwin.bat ändern laufen zsh -l -i
statt bash --login -i
und es wird laufen als Login - Shell.
Wenn Sie mehrere Shells vom Start an ausführen möchten, müssen Sie nur eine Reihe von .bat
Dateien erstellen, um verschiedene Shells zu laden. ( sh
, ksh
, csh
, fish
Usw.)
Ich hatte das Gefühl, ich sollte dies aktualisieren, um Informationen dazu bereitzustellen, ohne dies zu tun, chsh
aber es immer noch auf der Unix-Seite zu tun. Bearbeiten Sie die /etc/passwd
Datei und ersetzen Sie Vorkommen von /bin/bash
durch /bin/zsh
. (Dies ist effektiv, was chsh
tun würde, aber auf diese Weise würden Sie es für alle Benutzer auf einmal tun .)
mkpasswd -l -p "$(cygpath -H)" > /etc/passwd
und bearbeiten Sie die neu erstellte /etc/passwd
Datei
Wenn ich deine Frage richtig lese, suchst du etwas anderes als das, was dir zur Verfügung steht (was, zugegeben , für sich genommen, ziemlich cool ist).
Die aktuelle Version von Cygwin hat keine / etc / passwd- Datei, und das System, an dem ich arbeite, verfügt über Windows-Kontoinformationen in einer Domänendatenbank, die sich meiner Kontrolle entziehen. Folglich wird chsh nicht mehr unterstützt.
Ich habe auch festgestellt, dass Bash weder im startxwin- Skript noch in einer BAT-Datei fest programmiert ist. Es stellte sich heraus, dass Sie überhaupt nicht mit .bat-Dateien herumspielen müssen.
Auf der Suche nach einer Möglichkeit zum Ändern der Shell fand ich einige Hinweise zu mkpasswd
Ich habe es der Mischung hinzugefügt.
Die Manpage sagte:
SYNOPSIS mkpasswd [OPTIONS]... OPTIONS Don't use this command to generate a local /etc/passwd file, unless you really need one. See the Cygwin User's Guide for more information. -c,--current Print current user. DESCRIPTION The mkpasswd program can be used to create a /etc/passwd file. Cygwin doesn't need this file, because it reads user information from the Windows account databases, but you can add an /etc/passwd file, for instance if your machine is often dis‐ connected from its domain controller. Note that this information is static, in contrast to the informa‐ tion automatically gathered by Cygwin from the Windows account databases. If you change the user information on your system, you'll need to regenerate the passwd file for it to have the new information. For very simple needs, an entry for the current user can be cre‐ ated by using the option -c.
(Ich weiß nicht, warum der Abstand so "aus" ist ...)
Ich habe dann den folgenden Befehl verwendet:
mkpasswd -c | sed -e 'sX / bashX / zshX' | tee -a / etc / passwd
Wenn Sie das nächste Mal ein Cygwin-Terminal öffnen, wird es direkt an zsh weitergeleitet
Und darum haben Sie, glaube ich, gebeten.
Ich füge das bin
Verzeichnis im Cygwin-Verzeichnis einfach zu meiner Windows-Pfad-Umgebungsvariablen hinzu und erstelle entweder eine Verknüpfung zu:
mintty.exe -i /Cygwin-Terminal.ico /bin/zsh --login
Oder ändern Sie einfach die standardmäßige Verknüpfung für das Startmenü von Cygwin.
/bin/zsh
statt verwenden zsh
.
the bin directory in the cygwin directory to my Windows Path Environment Variable
funktioniert ohne diese Änderung für mich
i
wird nicht benötigt, da es eine Login-Shell ist und nicht interactive
.
Kopiert von meiner Antwort auf Stack Overflow :
Anstatt eine passwd-Datei zu erstellen, die Cygwin gegen 1 empfiehlt , können Sie /etc/nsswitch.conf bearbeiten . Fügen Sie die folgende Zeile hinzu oder bearbeiten Sie sie:
db_shell: / usr / bin / zsh
Die Kehrseite dieser Methode ist, dass sich diese Änderung auf alle Benutzer auswirkt, wenn Sie mehrere Benutzer haben. Die gute Seite ist, dass es ganz einfach ist. Der einzige Haken ist, dass Sie Cygwin neu starten müssen.
Wenn Sie tun Verwendung mkpasswd nach dieser Änderung, es wird Ihre neue Standard - Shell für alle Benutzer verwenden , die sich anmelden dürfen.
1 In der mkpasswd-Dokumentation heißt es:
Verwenden Sie diesen Befehl nicht, um eine lokale / etc / passwd-Datei zu generieren, es sei denn, Sie benötigen wirklich eine. Weitere Informationen finden Sie im Cygwin-Benutzerhandbuch.
Ich kann keine wirklich solide Begründung im Benutzerhandbuch finden, abgesehen von einer Erwähnung, dass Sie die Dateien / etc / passwd und / etc / group neu generieren müssen, wenn sich Ihre Benutzer und Gruppen ändern, was meiner Meinung nach anständig genug ist Grund. Ich kann sagen, dass der Prozess für Neulinge etwas fehleranfällig ist.
Angenommen, Sie möchten die in mintty / Cygwin Terminal verwendete Shell ändern, überprüft sie zuerst die Umgebungsvariable SHELL, dann die (jetzt nicht vorhandene) passwd-Datei und greift dann auf / bin / sh zurück standardmäßig.
Ich konnte die Umgebungsvariable SHELL in Windows auf setzen /usr/bin/zsh
und es funktionierte ohne weitere Änderungen. Ich habe es nur für meinen Windows-Benutzer geändert, nicht global.
Das Festlegen einer Umgebungsvariablen variiert wahrscheinlich für verschiedene Windows-Versionen. Versuchen Sie, in der Windows-Systemsteuerung nach "Umgebung" zu suchen. Für mich war es unter Windows 7 Systemsteuerung → System → Erweiterte Systemeinstellungen, das die Systemsteuerung / das Dialogfeld Systemeigenschaften öffnet, dann die Registerkarte Erweitert, dann die Schaltfläche Umgebungsvariablen, die das Dialogfeld Umgebungsvariablen öffnet und dann erstellt eine neue Benutzervariable SHELL
mit dem Namen des Werts /usr/bin/zsh
. Dann mach alles wieder gut und starte eine neue Münze.
Ich dachte nur, ich würde diese Antwort hinzufügen, falls es jedem hilft, der danach sucht. Wenn Sie chere verwenden (mit der Option "Bash-Eingabeaufforderung hier" zum Kontextmenü eines Ordners mit der rechten Maustaste hinzugefügt), können Sie zsh ("Zsh-Eingabeaufforderung hier") festlegen mit:
chere -i -t mintty -s zsh