Jak zmienić domyślną powłokę dla Linux susbsystem dla Windows

10

Zainstalowałem podsystem Linux dla Windows 10. Działa dobrze, ale chcę zmienić domyślne środowisko powłoki dla podsystemu.

Zrobiłem sudo apt-get install fishi wtedy chsh -s /usr/bin/fish. Ale kiedy uruchamiam bash.exew systemie Windows, zawsze zaczyna się bash (myślę, że jest przewidywalny).

Czy ktoś zna argumenty, aby zmienić to zachowanie?

Zazdrość
źródło
Kiedy zaczynasz bash.exe, oczywiście wyraźnie zaczynasz bash. Nie znam podsystemu Linux w Windows 10, ale spodziewałbym się, że będzie jakiś sposób na uruchomienie powłoki „Linux” bez jawnego uruchamiania jednej konkretnej powłoki.
CVn
Czy próbowałeś brzydkiej edycji swojego bashrc lub bashprofile, aby przekierować interaktywne wywołania bash na ryby? Dodanie linii podobnej isatty && exec fishmoże być warte wypróbowania, gdy nie masz już rzeczywistych rozwiązań.
A. Loiseau,

Odpowiedzi:

6

Nie można zmienić domyślnej powłoki jako takiej, ponieważ podsystem Linux jest uruchamiany za pomocą pliku bash.exe znajdującego się w katalogu systemowym.

Możesz jednak utworzyć nowy skrót, taki jak ten, który już istnieje dla bash i uruchomić polecenie

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

W ten sposób natychmiast zaczniesz łowić ryby.

Sami Kuhmonen
źródło
1
Kiedyś %systemroot%\system32\bash.exe ~ -c /bin/zsh, aby ZSH otwarte w moim katalogu domowym.
David Pärsson,
Alternatywnie, ustaw pole „Rozpocznij w” w skrócie, %userprofile%aby uruchomić powłokę w katalogu domowym.
dOxxx
@konqui To nie łamie żadnej innej powłoki. To nowy skrót do uruchamiania. Twoje
uderzenie
@SamiKuhmonen nic nie mówiono o nowych skrótach - poprawiłem to teraz, mogę żyć z tą odpowiedzią.
konqui
9

Od aktualizacji Fall Creators Update możesz użyć chshdo ustawienia domyślnej powłoki. To nadal nie działa, jeśli używasz WSL za pomocą bash.exepolecenia, ale działa to, jeśli używasz WSL z ubuntu.exepoleceniem.

Ponadto, ponieważ Fall Creators Update powinniśmy zainstalować system WSL OS ze Sklepu Windows .

Ustaw zshjako domyślną powłokę:

chsh -s /bin/zsh

następnie uruchom (lub uruchom ponownie) ubuntu.exez wiersza polecenia.

Michaił
źródło
5

Otwórz bash, uruchom nano ~/.bashrci wklej to w:

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

Po prostu zmień powłokę na fishlub cokolwiek chcesz. -xWyboru jest ważne, jeśli kiedykolwiek ponownie zainstalować Bash - nie będą w stanie go otworzyć po nową instalację, ponieważ execkomenda nie powiedzie się, a następnie Bash prostu zamyka.

Jeśli tak się stanie, usuń / zmień nazwę .bashrcpliku tutaj:

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

-tJa wierzę sprawdza, czy stdout jest otwarta. Nie jestem pewien, dlaczego to ważne, skopiowałem to z tego artykułu .

mpen
źródło