So ändern Sie die Standard-Shell für Linux Susbsystem für Windows

10

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 fishund dann chsh -s /usr/bin/fish. Aber wenn ich bash.exein Windows starte, startet es immer die Bash (ich denke, es ist vorhersehbar).

Kennt jemand Argumente, um dieses Verhalten zu ändern?

Neid
quelle
Wenn Sie anfangen, starten bash.exeSie 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.
Ein CVn
Haben Sie eine hässliche Ausgabe Ihres bashrc oder bashprofile ausprobiert, um interaktive Bash-Aufrufe an Fische umzuleiten? Das Hinzufügen einer Zeile wie isatty && exec fishkann den Versuch wert sein, wenn Sie keine tatsächlichen Lösungen mehr haben.
A. Loiseau

Antworten:

6

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

%systemroot%\system32\bash -c /usr/bin/fish

Auf diese Weise werden Sie sofort Fische laufen lassen.

Sami Kuhmonen
quelle
1
Ich habe %systemroot%\system32\bash.exe ~ -c /bin/zshZSH in meinem Home-Verzeichnis geöffnet.
David Pärsson
Alternativ können Sie das Feld "Start in" in der Verknüpfung festlegen %userprofile%, um die Shell in Ihrem Home-Verzeichnis zu starten.
dOxxx
@konqui Dies bricht keine andere Shell. Es ist eine neue Verknüpfung zum Starten. Ihre Bash wird gut funktionieren
Sami Kuhmonen
@SamiKuhmonen Es wurde nichts über neue Verknüpfungen gesagt - ich habe es korrigiert, jetzt kann ich mit dieser Antwort leben.
Konqui
9

Seit dem Fall Creators Update können Sie chshdie Standard-Shell festlegen. Dies funktioniert immer noch nicht, wenn Sie WSL mit bash.exeBefehl ausführen, aber dies funktioniert, wenn Sie WSL mit ubuntu.exeBefehl ausführen .

Außerdem sollten wir seit dem Fall Creators Update das WSL-Betriebssystem aus dem Windows Store installieren .

Stellen Sie zshals Standard - Shell:

chsh -s /bin/zsh

Führen Sie dann die ubuntu.exeEingabeaufforderung aus (oder starten Sie sie neu) .

Mikhail
quelle
5

Bash öffnen, ausführen nano ~/.bashrcund einfügen in:

if [[ -t 1 && -x /usr/bin/zsh ]]; then
    exec /usr/bin/zsh
fi

Ändern fishSie 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 der execBefehl fehlschlägt und Bash dann einfach geschlossen wird.

In diesem Fall löschen / benennen Sie Ihre .bashrcDatei hier um:

C:\Users\<USERNAME>\AppData\Local\lxss\home\<USERNAME>\.bashrc

Die -tIch glaube , prüft , ob stdout offen ist. Ich bin mir nicht sicher, warum das wichtig ist. Ich habe es aus diesem Artikel kopiert .

mpen
quelle