Wie ändere ich die Standard-Shell in Cygwin?

29

Ich versuche, meine Standard-Shell in Cygwin von bash auf zsh zu ändern.

  1. Der normale Unix-Befehl chshist unter cygwin nicht verfügbar
  2. Die etc / passwd-Datei wird anscheinend in vorhandenen Versionen von cygwin nicht mehr verwendet.

Wie kann die Standard-Shell geändert werden?

gyaani_guy
quelle

Antworten:

22

Die Antwort hängt davon ab, wie Sie Cygwin starten.

Wenn Sie Cygwin mit Cygwin.bat starten , ändern Sie die letzte Zeile von /Cygwin.bat(normalerweise C:\cygwin\oder C:\cygwin64\).

Wenn Sie Cygwin mit mintty starten , fügen Sie die Shell als Parameter hinzu. mintty /usr/bin/zsh -

Steven
quelle
2
Danke, ich benutze Conemu. Hätte die sich ändern , sh.exeum zsh.exein Conemu Einstellungen> startup> Aufgaben> Bash Cygwin Bash>set CHERE_INVOKING=1 & %ConEmuDrive%\CygWin\bin\sh.exe --login -i
gyaani_guy
@ gyaani_guy Ich verwende ConEmu nur, um auszuführen CygWin\bin\zsh.exe. sh.exe --loginwird Bash starten, wie ändert man das? Oder spielt es sowieso keine Rolle? Ich stelle mir vor, es sh.exe --loginwird unnötig ausgeführt, shbevor zsh...
deed02392
@ deed02392 Ich bin nicht sicher, ob ich das verstehe .. aber der genaue Befehl, den ich verwende, ist set CHERE_INVOKING=1 & %ConEmuDrive%\CygWin\bin\zsh.exe --login -ihth
gyaani_guy
@gyaani_guy danke, ich war verwirrt, weil du in deinem ersten Kommentar anscheinend angedeutet hast, dass du mit zsh beginnst sh.exe. Jetzt
merke
3
Das Münzbeispiel hat bei mir nicht ganz funktioniert. Es gab Probleme, bis ich es zu einer Anmeldeshell machte, indem ich Folgendes hinzufügte -l: mintty.exe -i /Cygwin-Terminal.ico /usr/bin/zsh -l -
Morgan, 2.
18

Wenn Sie mintty.exeCygwin Terminal direkt oder über das Startmenü oder den Desktop (eine Verknüpfung zu mintty.exe) ausführen, können Sie die Umgebungsvariable SHELL in Windows auf festlegen /usr/bin/zsh.

Unter Windows 7:

  1. Drücken Sie die Windows-Taste.
  2. Beginnen Sie mit der Eingabe von "environment".
  3. Wenn es angezeigt wird, wählen Sie "Umgebungsvariablen für Ihr Konto bearbeiten".

Der Rest sollte selbsterklärend sein.

dc46and2
quelle
5
Dies erfordert ernsthaft mehr Gegenstimmen. Ich habe das nirgendwo dokumentiert gesehen und es ist offensichtlich die beabsichtigte Methode.
Kevin Mills
1
Wenn Sie sich nicht auf die Suche verlassen möchten, um den entsprechenden Bereich zu finden, klicken Sie mit der rechten Maustaste auf das Startmenü und wählen Sie "System", um den Systemsteuerungsbereich zu starten. Klicken Sie dann in der linken Spalte auf "Erweiterte Systemeinstellungen". Klicken Sie im folgenden Fenster "Systemeigenschaften" auf "Umgebungsvariablen ...", um den Umgebungsvariablen-Editor zu starten.
David C.
Perfekt funktioniert!
Bkunzi01
16

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 / fish

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 wirklich keine soliden Argumente 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.

P Papa
quelle
7

Dies ist ein Hack: Setzen Sie dies als erste Zeile Ihres ~/.bash_profile:

exec zsh
Glenn Jackman
quelle