Wie kann ich zsh als Standardshell unter Cygwin konfigurieren?
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
DateiWenn 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:
(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.
quelle
Ich füge das
bin
Verzeichnis im Cygwin-Verzeichnis einfach zu meiner Windows-Pfad-Umgebungsvariablen hinzu und erstelle entweder eine Verknüpfung zu:Oder ändern Sie einfach die standardmäßige Verknüpfung für das Startmenü von Cygwin.
quelle
/bin/zsh
statt verwendenzsh
.the bin directory in the cygwin directory to my Windows Path Environment Variable
funktioniert ohne diese Änderung für michi
wird nicht benötigt, da es eine Login-Shell ist und nichtinteractive
.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:
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:
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.
quelle
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.quelle
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:
quelle
Wenn Sie die Cygwin-Shell in IDE Intellij verwenden möchten, verwenden Sie das folgende Setup in settings / tools / terminal
Dadurch wird die Cygwin-Shell in intellij eingebettet, anstatt ein neues Fenster zu öffnen
quelle