Ich habe das Linux-Subsystem für Windows 10 installiert. Es funktioniert einwandfrei, aber ich möchte die Standard-Shell-Umgebung für das Subsystem ändern.
Ich habe sudo apt-get install fish
und dann chsh -s /usr/bin/fish
. Aber wenn ich bash.exe
in Windows starte, startet es immer die Bash (ich denke, es ist vorhersehbar).
Kennt jemand Argumente, um dieses Verhalten zu ändern?
bash.exe
Sie offensichtlich explizit Bash. Ich bin mit dem Linux-Subsystem in Windows 10 nicht vertraut, aber ich würde erwarten, dass es eine Möglichkeit gibt, eine "Linux" -Shell zu starten, ohne explizit eine bestimmte Shell zu starten.isatty && exec fish
kann den Versuch wert sein, wenn Sie keine tatsächlichen Lösungen mehr haben.Antworten:
Sie können die Standard-Shell per se nicht ändern, da das Linux-Subsystem über die Datei bash.exe im Systemverzeichnis gestartet wird.
Sie können jedoch eine neue Verknüpfung erstellen, wie sie bereits für bash vorhanden ist, und den Befehl ausführen
Auf diese Weise werden Sie sofort Fische laufen lassen.
quelle
%systemroot%\system32\bash.exe ~ -c /bin/zsh
ZSH in meinem Home-Verzeichnis geöffnet.%userprofile%
, um die Shell in Ihrem Home-Verzeichnis zu starten.Seit dem Fall Creators Update können Sie
chsh
die Standard-Shell festlegen. Dies funktioniert immer noch nicht, wenn Sie WSL mitbash.exe
Befehl ausführen, aber dies funktioniert, wenn Sie WSL mitubuntu.exe
Befehl ausführen .Außerdem sollten wir seit dem Fall Creators Update das WSL-Betriebssystem aus dem Windows Store installieren .
Stellen Sie
zsh
als Standard - Shell:Führen Sie dann die
ubuntu.exe
Eingabeaufforderung aus (oder starten Sie sie neu) .quelle
Bash öffnen, ausführen
nano ~/.bashrc
und einfügen in:Ändern
fish
Sie einfach die Shell auf oder was auch immer Sie wollen. Die-x
Überprüfung ist wichtig, wenn Sie Bash jemals neu installieren. Sie können es nach einer Neuinstallation nicht mehr öffnen, da derexec
Befehl fehlschlägt und Bash dann einfach geschlossen wird.In diesem Fall löschen / benennen Sie Ihre
.bashrc
Datei hier um:Die
-t
Ich glaube , prüft , ob stdout offen ist. Ich bin mir nicht sicher, warum das wichtig ist. Ich habe es aus diesem Artikel kopiert .quelle